Change in osmo-ttcn3-hacks[master]: bsc: Introduce test TC_assignment_aoip_tla_v6 and TC_ho_into_this_bsc...

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Wed Sep 9 11:44:23 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19980 )

Change subject: bsc: Introduce test TC_assignment_aoip_tla_v6 and TC_ho_into_this_bsc_tla_v6
......................................................................

bsc: Introduce test TC_assignment_aoip_tla_v6 and TC_ho_into_this_bsc_tla_v6

Change-Id: Iba24fae66c80b64bf81bbfd616294af757e5dca3
---
M bsc/BSC_Tests.ttcn
M bsc/MSC_ConnectionHandler.ttcn
2 files changed, 63 insertions(+), 12 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved



diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn
index f16fab4..d32f202 100644
--- a/bsc/BSC_Tests.ttcn
+++ b/bsc/BSC_Tests.ttcn
@@ -1397,12 +1397,12 @@
 }
 
 /* generate an assignment request for either AoIP or SCCPlite */
-function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0) return PDU_BSSAP {
+function f_gen_ass_req(boolean osmux_enabled := false, integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4") return PDU_BSSAP {
 	var PDU_BSSAP ass_cmd;
 	var BSSMAP_IE_Osmo_OsmuxCID osmux_cid := valueof(ts_OsmuxCID(0));
 	if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla :=
-						valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342));
+			valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342));
 		if (osmux_enabled) {
 			ass_cmd := valueof(ts_BSSMAP_AssignmentReq(omit, tla, osmux_cid));
 		} else {
@@ -1415,11 +1415,11 @@
 	return ass_cmd;
 }
 
-function f_gen_handover_req(integer bssap_idx := 0) return PDU_BSSAP {
+function f_gen_handover_req(integer bssap_idx := 0, charstring aoip_tla := "1.2.3.4") return PDU_BSSAP {
 	var PDU_BSSAP ho_req;
 	if (mp_bssap_cfg[bssap_idx].transport == BSSAP_TRANSPORT_AoIP) {
 		var BSSMAP_IE_AoIP_TransportLayerAddress tla :=
-						valueof(ts_BSSMAP_IE_AoIP_TLA4('01020304'O, 2342));
+			valueof(f_ts_BSSMAP_IE_AoIP_TLA(aoip_tla, 2342));
 		ho_req := valueof(ts_BSSMAP_HandoverRequest(omit, tla));
 	} else {
 		var BSSMAP_IE_CircuitIdentityCode cic := valueof(ts_BSSMAP_IE_CIC(0,1));
@@ -3093,6 +3093,25 @@
 	vc_conn.done;
 }
 
+/* establish initial channel, enable ciphering followed by assignment to ciphered channel */
+private function f_tc_assignment_aoip_tla_v6(charstring id) runs on MSC_ConnHdlr {
+	var template PDU_BSSAP exp_compl := f_gen_exp_compl();
+	var PDU_BSSAP ass_cmd := f_gen_ass_req(aoip_tla := "::3");
+	ass_cmd.pdu.bssmap.assignmentRequest.channelType := valueof(ts_BSSMAP_IE_ChannelType);
+	ass_cmd.pdu.bssmap.assignmentRequest.codecList := valueof(ts_BSSMAP_IE_CodecList({ts_CodecFR}));
+
+	f_establish_fully(ass_cmd, exp_compl);
+}
+testcase TC_assignment_aoip_tla_v6() runs on test_CT {
+	var MSC_ConnHdlr vc_conn;
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+
+	f_init(1, true);
+	f_sleep(1.0);
+	vc_conn := f_start_handler(refers(f_tc_assignment_aoip_tla_v6), pars);
+	vc_conn.done;
+}
+
 
 /* establish initial channel, enable ciphering followed by assignment to ciphered channel */
 private function f_tc_assignment_fr_a5(charstring id) runs on MSC_ConnHdlr {
@@ -4628,7 +4647,7 @@
 	activate(as_Media());
 
 	BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_bsc, g_pars.sccp_addr_msc,
-				     f_gen_handover_req()));
+				     f_gen_handover_req(aoip_tla := g_pars.host_aoip_tla)));
 	BSSAP.receive(RAN_Conn_Prim:MSC_CONN_PRIM_CONF_IND);
 
 	/* The RSL Emulation magically accepts the Chan Activ behind the scenes. */
@@ -4675,9 +4694,8 @@
 	BSSAP.receive(tr_BSSMAP_HandoverComplete);
 	setverdict(pass);
 }
-testcase TC_ho_into_this_bsc() runs on test_CT {
+function f_tc_ho_into_this_bsc_main(TestHdlrParams pars) runs on test_CT {
 	var MSC_ConnHdlr vc_conn;
-	var TestHdlrParams pars := f_gen_test_hdlr_pars();
 
 	f_init(1, true);
 	f_sleep(1.0);
@@ -4697,6 +4715,17 @@
 	f_ctrs_bsc_and_bts_verify();
 }
 
+testcase TC_ho_into_this_bsc() runs on test_CT {
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+	f_tc_ho_into_this_bsc_main(pars);
+}
+
+testcase TC_ho_into_this_bsc_tla_v6() runs on test_CT {
+	var TestHdlrParams pars := f_gen_test_hdlr_pars();
+	pars.host_aoip_tla := "::6";
+	f_tc_ho_into_this_bsc_main(pars);
+}
+
 private function f_tc_ho_in_fail_msc_clears(charstring id) runs on MSC_ConnHdlr {
 	var RslChannelNr new_chan_nr := valueof(t_RslChanNr0(1, RSL_CHAN_NR_Bm_ACCH));
 	f_rslem_register(0, new_chan_nr);
@@ -7390,6 +7419,9 @@
 	execute( TC_assignment_csd() );
 	execute( TC_assignment_ctm() );
 	execute( TC_assignment_sign() );
+	if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {
+		execute( TC_assignment_aoip_tla_v6() );
+	}
 	execute( TC_assignment_fr_a5_0() );
 	execute( TC_assignment_fr_a5_1() );
 	if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {
@@ -7498,6 +7530,9 @@
 	execute( TC_ho_out_fail_no_result_after_ho_cmd() );
 
 	execute( TC_ho_into_this_bsc() );
+	if (mp_bssap_cfg[0].transport == BSSAP_TRANSPORT_AoIP) {
+		execute( TC_ho_into_this_bsc_tla_v6() );
+	}
 	execute( TC_ho_in_fail_msc_clears() );
 	execute( TC_ho_in_fail_msc_clears_after_ho_detect() );
 	execute( TC_ho_in_fail_no_detect() );
diff --git a/bsc/MSC_ConnectionHandler.ttcn b/bsc/MSC_ConnectionHandler.ttcn
index bf96eff..76a56fc 100644
--- a/bsc/MSC_ConnectionHandler.ttcn
+++ b/bsc/MSC_ConnectionHandler.ttcn
@@ -279,6 +279,7 @@
 	var MgcpOsmuxCID osmux_cid;
 	var SDP_Message sdp;
 	var integer cid := f_get_free_mgcp_conn();
+	var charstring local_rtp_addr := host_mgw_rtp_v6; /* Use IPv6 by default if no remote addr is provided by client */
 	if (match(mgcp_cmd.line.ep, t_MGCP_EP_wildcard)) {
 		if (cid != 0) {
 			Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MGCP wildcard EP only works in first CRCX");
@@ -292,9 +293,14 @@
 		sdp := mgcp_cmd.sdp;
 		g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;
 		g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;
+		if (sdp.connection.addr_type == "IP6") {
+			local_rtp_addr := host_mgw_rtp_v6;
+		} else {
+			local_rtp_addr := host_mgw_rtp_v4;
+		}
 	}
 	var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];
-	sdp := valueof(ts_SDP(mgcp_conn.mgw.host, mgcp_conn.mgw.host, "foo", "21",
+	sdp := valueof(ts_SDP(mgcp_conn.mgw.host, local_rtp_addr, "foo", "21",
 				mgcp_conn.mgw.port_nr, { int2str(mgcp_conn.rtp_pt) },
 			{valueof(ts_SDP_rtpmap(mgcp_conn.rtp_pt,
 						mgcp_conn.mime_type & "/" &
@@ -316,15 +322,21 @@
 	runs on MSC_ConnHdlr return template MgcpResponse {
 	var SDP_Message sdp;
 	var integer cid := f_get_mgcp_conn(f_MgcpCmd_extract_conn_id(mgcp_cmd));
+	var charstring local_rtp_addr;
 	if (isvalue(mgcp_cmd.sdp)) {
 		sdp := mgcp_cmd.sdp;
 		g_media.mgcp_conn[cid].peer.host := sdp.connection.conn_addr.addr;
 		g_media.mgcp_conn[cid].peer.port_nr := sdp.media_list[0].media_field.ports.port_number;
+		if (sdp.connection.addr_type == "IP6") {
+			local_rtp_addr := host_mgw_rtp_v6;
+		} else {
+			local_rtp_addr := host_mgw_rtp_v4;
+		}
 	} else {
 		Misc_Helpers.f_shutdown(__BFILE__, __LINE__, fail, "MDCX has no [recognizable] SDP");
 	}
 	var MgcpConnState mgcp_conn := g_media.mgcp_conn[cid];
-	sdp := valueof(ts_SDP(mgcp_conn.peer.host, mgcp_conn.peer.host, "foo", "21",
+	sdp := valueof(ts_SDP(mgcp_conn.peer.host, local_rtp_addr, "foo", "21",
 				mgcp_conn.peer.port_nr, { int2str(mgcp_conn.rtp_pt) },
 			{valueof(ts_SDP_rtpmap(mgcp_conn.rtp_pt,
 						mgcp_conn.mime_type & "/" &
@@ -427,7 +439,9 @@
 	var TestHdlrParams g_pars;
 
 	var charstring host_bts := "127.0.0.2";
-	var charstring host_mgw := "127.0.0.3";
+	var charstring host_mgw_mgcp := "127.0.0.3";
+	var charstring host_mgw_rtp_v4 := "127.0.0.5";
+	var charstring host_mgw_rtp_v6 := "::1";
 	var charstring host_msc := "127.0.0.4";
 
 	var boolean g_vty_initialized := false;
@@ -538,6 +552,7 @@
 	boolean         exp_ms_power_params,
 	boolean		aoip,
 	boolean		use_osmux,
+	charstring	host_aoip_tla,
 	TestHdlrParamsMSCPool mscpool
 };
 
@@ -567,6 +582,7 @@
 	exp_ms_power_params := false,
 	aoip := true,
 	use_osmux := false,
+	host_aoip_tla := "1.2.3.4",
 	mscpool := {
 		bssap_idx := 0,
 		rsl_idx := 0,
@@ -1015,7 +1031,7 @@
 		codecType := FR_AMR;
 	}
 
-	f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw, codecType);
+	f_MscConnHdlr_init(g_pars.media_nr, host_bts, host_mgw_mgcp, codecType);
 
 	/* patch in the LCLS related items, as needed */
 	f_ass_patch_lcls(ass_tpl, exp_ass_cpl);
@@ -1184,7 +1200,7 @@
 			cmd := ts_CRCX(get_next_trans_id(), ep, "sendrecv", call_id);
 			resp := tr_CRCX_ACK;
 		}
-		cmd.sdp := ts_SDP(host_msc, host_mgw, "23", "42",
+		cmd.sdp := ts_SDP(host_msc, host_mgw_rtp_v4, "23", "42",
 			     14000, { int2str(g_media.mgcp_conn[1].rtp_pt) },
 			     { valueof(ts_SDP_ptime(20)) });
 		mgcp_transceive_mgw(cmd, resp);

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/19980
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: Iba24fae66c80b64bf81bbfd616294af757e5dca3
Gerrit-Change-Number: 19980
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200909/a590e5f7/attachment.htm>


More information about the gerrit-log mailing list