diff --git a/ns/NS_Tests.ttcn b/ns/NS_Tests.ttcn index 8bbb43c03..9fbd5ab88 100644 --- a/ns/NS_Tests.ttcn +++ b/ns/NS_Tests.ttcn @@ -626,6 +626,41 @@ testcase TC_sns_bss_add_change_del() runs on RAW_Test_CT { f_clean_ns_codec(); } +/* Test if SNS fails when all signalling NSVCs failes + * 3GPP TS 48.016 ยง 7.4b.1.1 + * 1. do success SNS configuration + * 2. change sig weight of the seconds inactive bind + * 3. add second bind to SNS + * 4. stop reacting to NS_ALIVE on first NSVC (only NSVC with sig weight) + * 5. expect SNS SIZE + */ +testcase TC_sns_bss_all_signalling_nsvcs_failed() runs on RAW_Test_CT { + g_handle_rx_alive := true; + f_init_vty(); + f_init_ns_codec(mp_nsconfig); + f_init_ns_codec(mp_nsconfig, 1); + f_incoming_sns_size(); + f_incoming_sns_config(); + f_outgoing_sns_config(); + var default d := activate(as_rx_alive_tx_ack()); + + f_vty_config2(NSVTY, {"ns", "bind udp local2"}, "ip-sns signalling-weight 0 data-weight 99"); + f_vty_config2(NSVTY, {"ns", "nse " & int2str(g_nsconfig.nsei)}, "ip-sns-bind local2"); + f_incoming_sns_add(idx_add := 1, w_sig := 0, w_user := 99); + as_rx_alive_tx_ack(oneshot := true, idx := 1); + activate(as_rx_alive_tx_ack(idx := 1)); + /* 2x NSVCs up, stop first NSVC */ + deactivate(d); + /* libosmocore will rotate the SNS binds on failure */ + NSCP[0].receive(t_NS_ALIVE); + NSCP[0].receive(t_NS_ALIVE); + NSCP[0].receive(t_NS_ALIVE); + f_incoming_sns_size(idx := 1); + + setverdict(pass); + f_clean_ns_codec(); +} + control { if (mp_dialect == NS2_DIALECT_STATIC_RESETBLOCK or mp_dialect == NS2_DIALECT_IPACCESS) { execute( TC_tx_reset() ); @@ -676,6 +711,7 @@ control { execute( TC_sns_bss_add() ); execute( TC_sns_bss_del() ); execute( TC_sns_bss_add_change_del() ); + execute( TC_sns_bss_all_signalling_nsvcs_failed() ); } }