WIP: ns: Add test for SNS Size procedure
Related: OS#5208
Change-Id: Ica8f6334afadb741180eeb5eb40d8192e61a2e67
diff --git a/ns/NS_Tests.ttcn b/ns/NS_Tests.ttcn
index 722f8ec..710c84d 100644
--- a/ns/NS_Tests.ttcn
+++ b/ns/NS_Tests.ttcn
@@ -558,6 +558,40 @@
/* 48.016 SNS test cases */
+/* Send an SNS Size(-ish) PDU, i.e. an SNS Size or an SNS Size with erroneous payload */
+function f_outgoing_sns_size_wrong_ip_family(template (omit) PDU_NS base)
+runs on RAW_NS_CT {
+ const integer IDX := 0;
+ const integer NUM_IP := 1;
+ log("f_outgoing_sns_sizeish_pdu(idx=", IDX, ")");
+ var NSVCConfiguration nsvc_cfg := g_nsconfig.nsvc[IDX];
+ var template (omit) NsCause cause := omit;
+
+ if (nsvc_cfg.provider.ip.address_family == AF_INET) {
+ base.pDU_SNS_Size.numberOfIP6_Endpoints :=
+ {iEI := '09'O, numberOfIP_Endpoints := int2oct(valueof(NUM_IP), 2)};
+ cause := NS_CAUSE_INVALID_NR_OF_IPv4_ENDPOINTS;
+ } else {
+ base.pDU_SNS_Size.numberOfIP4_Endpoints :=
+ {iEI := '08'O, numberOfIP_Endpoints := int2oct(valueof(NUM_IP), 2)};
+ cause := NS_CAUSE_INVALID_NR_OF_IPv6_ENDPOINTS;
+ }
+ log("expected cause: ", cause);
+ NSCP[IDX].send(base);
+ f_ns_exp(tr_SNS_SIZE_ACK(g_nsconfig.nsei, cause), IDX);
+}
+
+testcase TC_sns_sgsn_size_payload() runs on RAW_Test_CT {
+ f_init_ns_codec(mp_nsconfig);
+ /* Template that would be accepted, only missing the number of IP endpoints
+ * (since there are no ternary operators in TTCN-3...) */
+ template (omit) PDU_NS ts_base_SNS_SIZE_configured := ts_SNS_SIZE(g_nsconfig.nsei, rst_flag := true, max_nsvcs := 1,
+ num_v4 := omit, num_v6 := omit);
+ f_outgoing_sns_size_wrong_ip_family(ts_base_SNS_SIZE_configured);
+ setverdict(pass);
+ f_clean_ns_codec();
+}
+
/* do a succesful SNS configuration */
testcase TC_sns_bss_config_success() runs on RAW_Test_CT {
f_init_vty();
@@ -1098,6 +1132,7 @@
execute( TC_sns_sgsn_add_change_del() );
execute( TC_sns_sgsn_size_correct_port() );
execute( TC_sns_sgsn_size_after_success() );
+ execute( TC_sns_sgsn_size_payload() );
}
}
}