bts: fix TC_ipa_osmo_pcu_anr_fwd: send/expect proper payloads

The testcase expectations are wrong, because when matching the
PCU_IF_MSG_NEIGH_ADDR_REQ on the PCU port, TITAN's RAW codec reasonably
chooses the 'neigh_addr_req' field in the PCUIF_ContainerMsgUnion, not
the 'other' field as expected.  The 'other' field would be choosen if
the 'msg_type' is not PCU_IF_MSG_NEIGH_ADDR_{REQ,CNF}.

A quick and dirty fix would be changing the PCU_IF_MSG_NEIGH_ADDR_REQ
to something else, e.g. PCU_IF_MSG_CONTAINER.  This would make both
encoder and decoder agree on the union field to be used and would work
in theory (because for some reason we reuse PCUIF_MsgType as the
container payload type, and osmo-bts does not really care about the
payload), but I don't really like this approach.

I believe we should be sending realistic payloads instead.

Change-Id: Id4a6ecf5b271a16645a42c8bea22f47869f7c81f
Closes: OS#5963
diff --git a/bts/BTS_Tests_OML.ttcn b/bts/BTS_Tests_OML.ttcn
index 4a58312..b76a0ac 100644
--- a/bts/BTS_Tests_OML.ttcn
+++ b/bts/BTS_Tests_OML.ttcn
@@ -680,8 +680,6 @@
 	var PCUIF_send_data pcu_sd_msg;
 	var PCUIF_Message msg_rx;
 	timer T := 2.0;
-	var octetstring payloadReq := f_rnd_octstring(300);
-	var octetstring payloadRep := f_rnd_octstring(300);
 
 	f_init_oml(testcasename());
 	f_init_pcu(PCU, testcasename(), g_pcu_conn_id, g_pcu_last_info);
@@ -696,30 +694,75 @@
 	IPA_OSMO_PCU.receive(tr_ASP_IPA_EV(ASP_IPA_EVENT_ID_RESP));
 	IPA_OSMO_PCU.receive(tr_ASP_IPA_EV(ASP_IPA_EVENT_ID_ACK));
 
-	IPA_OSMO_PCU.send(ts_PCUIF_CONTAINER(0, ts_PCUIF_CONT_OTHER(PCU_IF_MSG_NEIGH_ADDR_REQ, payloadReq)))
+	/* Sent via A-bis/IPA, received via the PCUIF */
+	var PCUIF_neigh_addr_req naddr_req := {
+		local_lac := f_rnd_int(c_UINT16_MAX),
+		local_ci := f_rnd_int(c_UINT16_MAX),
+		tgt_arfcn := f_rnd_int(c_UINT16_MAX),
+		tgt_bsic := f_rnd_int(63)
+	};
+	template (value) PCUIF_container ts_payloadReq := {
+		msg_type := PCU_IF_MSG_NEIGH_ADDR_REQ,
+		spare := '00'O,
+		len := 0, /* overwritten */
+		u := { neigh_addr_req := naddr_req }
+	};
+	template (present) PCUIF_container tr_payloadReq := {
+		msg_type := PCU_IF_MSG_NEIGH_ADDR_REQ,
+		spare := ?,
+		len := ?,
+		u := { neigh_addr_req := naddr_req }
+	};
+
+	IPA_OSMO_PCU.send(ts_PCUIF_CONTAINER(0, ts_payloadReq))
 	T.start;
 	alt {
-	[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_CONTAINER(0, tr_PCUIF_CONT_OTHER(PCU_IF_MSG_NEIGH_ADDR_REQ, payloadReq)))) {
+	[] PCU.receive(t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_CONTAINER(0, tr_payloadReq))) {
 		setverdict(pass);
 		}
 	[] PCU.receive(PCUIF_send_data:?) -> value pcu_sd_msg {
 		setverdict(fail, "Unexpected message received: ", pcu_sd_msg.data, " vs exp: ",
-			   t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_CONTAINER(0, tr_PCUIF_CONT_OTHER(PCU_IF_MSG_NEIGH_ADDR_REQ, payloadReq))));
+			   t_SD_PCUIF(g_pcu_conn_id, tr_PCUIF_CONTAINER(0, tr_payloadReq)));
 	}
 	[] T.timeout { setverdict(fail, "Timeout waiting for ANR request on PCU inteface");}
 	}
 	T.stop;
 
+	/* Sent via the PCUIF, received via A-bis/IPA */
+	var PCUIF_neigh_addr_cnf naddr_cnf := {
+		orig_req := naddr_req,
+		error_code := 0,
+		mcc := 262,
+		mnc := 42,
+		mnc_3_digits := 0,
+		lac := f_rnd_int(c_UINT16_MAX),
+		rac := f_rnd_int(255),
+		cell_identity := f_rnd_int(c_UINT16_MAX)
+	};
+
+	template (value) PCUIF_container ts_payloadRsp := {
+		msg_type := PCU_IF_MSG_NEIGH_ADDR_CNF,
+		spare := '00'O,
+		len := 0, /* overwritten */
+		u := { neigh_addr_cnf := naddr_cnf }
+	};
+	template (present) PCUIF_container tr_payloadRsp := {
+		msg_type := PCU_IF_MSG_NEIGH_ADDR_CNF,
+		spare := ?,
+		len := ?,
+		u := { neigh_addr_cnf := naddr_cnf }
+	};
+
 	/* Send back the response: */
-	PCU.send(t_SD_PCUIF(g_pcu_conn_id, ts_PCUIF_CONTAINER(0, ts_PCUIF_CONT_OTHER(PCU_IF_MSG_NEIGH_ADDR_REQ, payloadRep))))
+	PCU.send(t_SD_PCUIF(g_pcu_conn_id, ts_PCUIF_CONTAINER(0, ts_payloadRsp)))
 	T.start;
 	alt {
-	[] IPA_OSMO_PCU.receive(tr_PCUIF_CONTAINER(0, tr_PCUIF_CONT_OTHER(PCU_IF_MSG_NEIGH_ADDR_REQ, payloadRep))) {
+	[] IPA_OSMO_PCU.receive(tr_PCUIF_CONTAINER(0, tr_payloadRsp)) {
 		setverdict(pass);
 		}
 	[] IPA_OSMO_PCU.receive(PCUIF_Message:?) -> value msg_rx {
 		setverdict(fail, "Unexpected message received: ", msg_rx, " vs exp: ",
-			   tr_PCUIF_CONTAINER(0, tr_PCUIF_CONT_OTHER(PCU_IF_MSG_NEIGH_ADDR_REQ, payloadRep)));
+			   tr_PCUIF_CONTAINER(0, tr_payloadRsp));
 	}
 	[] T.timeout { setverdict(fail, "Timeout waiting for ANR request on BSC inteface"); }
 	}