stp: Add tests for setups with multiple "routing context 0" ASPs
These two test cases verify that
* libosmo-sigtran doesn't include a routing context IE even in ASP
role when using a ASP with a single routing context 0 configured
* osmo-stp can route between a single SG-role ASP with routing context
to two ASP-role ASPs which both have routing context 0 (i.e. no
routing context IE in use)
The tests do not pass with current libosmo-sigtran until OS#6003 is
fixed, presumably by Change-Id I5ce89b393a3b950ab7fd1eace9038718c9efcc51
Change-Id: I81052ece7d1cc8b43da6155356ed1c4d9620acdc
Related: OS#6003
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn
index 41b2e2c..5af894a 100644
--- a/stp/STP_Tests_M3UA.ttcn
+++ b/stp/STP_Tests_M3UA.ttcn
@@ -35,7 +35,7 @@
import from STP_Tests_Common all;
private const integer NR_M3UA := 3; /* number of M3UA clients in ATS */
-private const integer NR_M3UA_SRV := 1; /* number of M3UA servres in ATS */
+private const integer NR_M3UA_SRV := 3; /* number of M3UA servres in ATS */
modulepar {
/* STP-side IP addresses */
@@ -68,6 +68,20 @@
local_sctp_port := 10002,
point_code := 55,
routing_ctx := 1055
+ },
+ /* as-client60-norctx */
+ {
+ remote_sctp_port := 2907,
+ local_sctp_port := 11060,
+ point_code := 60,
+ routing_ctx := -
+ },
+ /* as-client61-norctx */
+ {
+ remote_sctp_port := 2907,
+ local_sctp_port := 11061,
+ point_code := 61,
+ routing_ctx := -
}
};
integer mp_recovery_timeout_msec := 2000;
@@ -793,6 +807,60 @@
f_clear_m3ua();
}
+/* Test traffic being routed through "server" side STP (M3UA SG), coming back in "client"
+ * side STP (M3UA ASP) which has no routing context set */
+testcase TC_clnt_sg_to_asp_norctx() runs on RAW_M3UA_CT {
+ var OCT4 rctx_sender := int2oct(mp_m3ua_configs[0].routing_ctx, 4);
+ var OCT4 pc_sender := int2oct(mp_m3ua_configs[0].point_code, 4);
+ var OCT4 pc_receiver := int2oct(mp_m3ua_configs[M3UA_SRV(1)].point_code, 4);
+ var OCT4 pc_receiver2 := int2oct(mp_m3ua_configs[M3UA_SRV(2)].point_code, 4);
+
+ /* activate the sender side (ATS is client to STP in SG role) */
+ f_init_m3ua();
+ f_M3UA_asp_up_act(0);
+
+ /* activate the receiver side (ATS is server to STP in ASP role) */
+ f_init_m3ua_srv();
+ f_M3UA_CLNT_asp_up_act(M3UA_SRV(1), rctx := omit);
+ /* activate another instance of STP in ASP role with no routing context */
+ f_M3UA_CLNT_asp_up_act(M3UA_SRV(2), rctx := omit);
+
+ f_sleep(1.0);
+
+ /* verify traffic is routed from sender to [sole] receiver for each PC */
+ f_test_traffic(0, rctx_sender, pc_sender, M3UA_SRV(1), omit, pc_receiver);
+ f_test_traffic(0, rctx_sender, pc_sender, M3UA_SRV(2), omit, pc_receiver2);
+
+ f_clear_m3ua();
+}
+
+/* Test traffic being routed through "server" side STP (M3UA SG), coming back in "client"
+ * side STP (M3UA ASP) which has no routing context set */
+testcase TC_clnt_asp_to_sg_norctx() runs on RAW_M3UA_CT {
+ var OCT4 rctx_receiver := int2oct(mp_m3ua_configs[0].routing_ctx, 4);
+ var OCT4 pc_receiver := int2oct(mp_m3ua_configs[0].point_code, 4);
+ var OCT4 pc_sender := int2oct(mp_m3ua_configs[M3UA_SRV(1)].point_code, 4);
+ var OCT4 pc_sender2 := int2oct(mp_m3ua_configs[M3UA_SRV(2)].point_code, 4);
+
+ /* activate the sender side (ATS is client to STP in SG role) */
+ f_init_m3ua();
+ f_M3UA_asp_up_act(0);
+
+ /* activate the receiver side (ATS is server to STP in ASP role) */
+ f_init_m3ua_srv();
+ f_M3UA_CLNT_asp_up_act(M3UA_SRV(1), rctx := omit);
+ /* activate another instance of STP in ASP role with no routing context */
+ f_M3UA_CLNT_asp_up_act(M3UA_SRV(2), rctx := omit);
+
+ f_sleep(1.0);
+
+ /* verify traffic is routed from sender to [sole] receiver for each PC */
+ f_test_traffic(M3UA_SRV(1), omit, pc_sender, 0, rctx_receiver, pc_receiver);
+ f_test_traffic(M3UA_SRV(2), omit, pc_sender2, 0, rctx_receiver, pc_receiver);
+
+ f_clear_m3ua();
+}
+
/* Test if ASPAC / ASPIA of one ASP generates DAVA / DUNA on other ASP */
testcase TC_ssnm_aspac_dava_aspia_duna() runs on RAW_M3UA_CT {
var OCT4 rctx0 := int2oct(mp_m3ua_configs[0].routing_ctx, 4);
@@ -1050,6 +1118,9 @@
execute( TC_clnt_sg_to_asp() );
execute( TC_clnt_asp_to_sg() );
+ execute( TC_clnt_sg_to_asp_norctx() );
+ execute( TC_clnt_asp_to_sg_norctx() );
+
execute( TC_clnt_quirk_no_notify_asp_act() );
execute( TC_clnt_no_daud_in_asp() );
execute( TC_clnt_quirk_daud_in_asp() );