ns: SNS: add testcase to test change_weight retries

Change-Id: Ie8d976a81abe0bcff53bb74991d428dbf1fe314b
diff --git a/ns/NS_Tests.ttcn b/ns/NS_Tests.ttcn
index 8182a91..1715b2e 100644
--- a/ns/NS_Tests.ttcn
+++ b/ns/NS_Tests.ttcn
@@ -481,6 +481,48 @@
 	f_clean_ns_codec();
 }
 
+/* receive 3x SNS_CHG_WEIGHT but never answer on it */
+testcase TC_sns_bss_change_weight_timeout() runs on RAW_Test_CT {
+	var integer i := 0;
+	var template PDU_NS rx;
+	var NSVCConfiguration nsvc_cfg;
+
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig);
+	f_incoming_sns_size();
+	f_incoming_sns_config();
+	f_outgoing_sns_config();
+	activate(as_rx_alive_tx_ack());
+	f_vty_config2(NSVTY, {"ns", "bind udp local"}, "ip-sns signalling-weight 99 data-weight 99");
+
+	nsvc_cfg := g_nsconfig.nsvc[0];
+	if (nsvc_cfg.provider.ip.address_family == AF_INET) {
+		var template IP4_Elements v4_elem := { tr_SNS_IPv4(nsvc_cfg.provider.ip.remote_ip,
+								   nsvc_cfg.provider.ip.remote_udp_port) };
+
+		rx := tr_SNS_CHG_WEIGHT(g_nsconfig.nsei, ?, v4 := v4_elem);
+	} else {
+		var template IP6_Elements v6_elem := { tr_SNS_IPv6(nsvc_cfg.provider.ip.remote_ip,
+								   nsvc_cfg.provider.ip.remote_udp_port) };
+		rx := tr_SNS_CHG_WEIGHT(g_nsconfig.nsei, ?, v4 := omit, v6 := v6_elem);
+	}
+
+	alt {
+	[] NSCP[0].receive(rx) {
+		i := i + 1;
+		if (i < 3) {
+			repeat;
+		}
+	}
+	[] as_rx_alive_tx_ack();
+	}
+
+	f_ns_exp(tr_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 8,
+				   num_v4 := 4, num_v6 := omit), 0);
+	setverdict(pass);
+	f_clean_ns_codec();
+}
+
 control {
 	if (mp_dialect == NS2_DIALECT_STATIC_RESETBLOCK or mp_dialect == NS2_DIALECT_IPACCESS) {
 		execute( TC_tx_reset() );
@@ -527,6 +569,7 @@
 	if (mp_dialect == NS2_DIALECT_SNS) {
 		execute( TC_sns_config_success() );
 		execute( TC_sns_bss_change_weight() );
+		execute( TC_sns_bss_change_weight_timeout() );
 	}
 }