diff options
author | Harald Welte <laforge@osmocom.org> | 2023-04-15 20:30:52 +0800 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2023-04-20 04:51:39 +0000 |
commit | 6baf5e77679923776a76123b74ae3beb0b55af8a (patch) | |
tree | 5aac8681be1a5b0c0a9c4faa165ea0cf22aad5cb /stp | |
parent | 3e5f05ef593980df7438401e0b943f9b9a8dee7b (diff) |
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
Diffstat (limited to 'stp')
-rw-r--r-- | stp/STP_Tests_M3UA.ttcn | 73 | ||||
-rw-r--r-- | stp/osmo-stp.cfg | 18 |
2 files changed, 90 insertions, 1 deletions
diff --git a/stp/STP_Tests_M3UA.ttcn b/stp/STP_Tests_M3UA.ttcn index 41b2e2cf..5af894ab 100644 --- a/stp/STP_Tests_M3UA.ttcn +++ b/stp/STP_Tests_M3UA.ttcn @@ -35,7 +35,7 @@ import from SCCP_Emulation all; 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 @@ modulepar { 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 @@ testcase TC_clnt_asp_to_sg() runs on RAW_M3UA_CT { 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 @@ control { 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() ); diff --git a/stp/osmo-stp.cfg b/stp/osmo-stp.cfg index 50c80d37..427eb340 100644 --- a/stp/osmo-stp.cfg +++ b/stp/osmo-stp.cfg @@ -53,6 +53,16 @@ cs7 instance 0 remote-ip 127.0.0.1 sctp-role client role asp + asp asp-client60-norctx0 11060 2907 m3ua + local-ip 127.0.0.1 + remote-ip 127.0.0.1 + sctp-role client + role asp + asp asp-client61-norctx0 11061 2907 m3ua + local-ip 127.0.0.1 + remote-ip 127.0.0.1 + sctp-role client + role asp as as-sender m3ua asp asp-sender routing-key 1023 23 @@ -63,6 +73,12 @@ cs7 instance 0 as as-client m3ua routing-key 1055 55 asp asp-client0 + as as-client60-norctx m3ua + routing-key 0 60 + asp asp-client60-norctx0 + as as-client61-norctx m3ua + routing-key 0 61 + asp asp-client61-norctx0 ! ! IPA AS/ASP: ! @@ -116,6 +132,8 @@ cs7 instance 0 update route 23 16777215 linkset as-sender update route 42 16777215 linkset as-receiver update route 55 16777215 linkset as-client + update route 60 16777215 linkset as-client60-norctx + update route 61 16777215 linkset as-client61-norctx update route 31 16777215 linkset ipa-as-loadshare-receiver update route 33 16777215 linkset ipa-as-override-receiver update route 5 16777215 linkset ipa-as-dynamic-asp |