aboutsummaryrefslogtreecommitdiffstats
path: root/sgsn/SGSN_Tests_NS.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'sgsn/SGSN_Tests_NS.ttcn')
-rw-r--r--sgsn/SGSN_Tests_NS.ttcn95
1 files changed, 83 insertions, 12 deletions
diff --git a/sgsn/SGSN_Tests_NS.ttcn b/sgsn/SGSN_Tests_NS.ttcn
index cce32cc1..e1bc4a70 100644
--- a/sgsn/SGSN_Tests_NS.ttcn
+++ b/sgsn/SGSN_Tests_NS.ttcn
@@ -13,7 +13,7 @@ module SGSN_Tests_NS {
import from Osmocom_Types all;
import from Osmocom_Gb_Types all;
import from Osmocom_VTY_Functions all;
-import from NS_CodecPort all;
+import from Misc_Helpers all;
import from NS_Types all;
import from RAW_NS all;
import from SGSN_Tests all;
@@ -23,36 +23,107 @@ type component RAW_Test_CT extends RAW_NS_CT, test_CT {
testcase TC_NS_connect_reset() runs on RAW_Test_CT {
f_init_vty();
- f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0, tc_offset := 10);
- f_vty_config(SGSNVTY, "ns", "encapsulation udp use-reset-block-unblock enabled");
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
/* Send a NS-ALIVE */
f_outgoing_ns_reset();
f_sleep(1.0);
- f_cleanup();
+ f_clean_ns_codec();
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
testcase TC_NS_connect_alive() runs on RAW_Test_CT {
f_init_vty();
- f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0, tc_offset := 20);
- f_vty_config(SGSNVTY, "ns", "encapsulation udp use-reset-block-unblock disabled");
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
/* Send a NS-ALIVE */
- NSCP[0].send(t_NS_Send(g_ns_conn_id[0], t_NS_ALIVE));
+ NSCP[0].send(t_NS_ALIVE);
alt {
- [] NSCP[0].receive(t_NS_RecvFrom(t_NS_ALIVE_ACK));
- [] NSCP[0].receive(t_NS_RecvFrom(tr_NS_STATUS(*))) { setverdict(fail); }
+ [] NSCP[0].receive(t_NS_ALIVE_ACK);
+ [] NSCP[0].receive(tr_NS_STATUS(*)) { setverdict(fail); }
[] NSCP[0].receive { repeat; }
}
f_sleep(1.0);
- f_cleanup();
+ f_clean_ns_codec();
+ setverdict(pass);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+}
+
+/* perform outgoing SNS-SIZE procedure */
+testcase TC_SNS_size() runs on RAW_Test_CT {
+ f_init_vty();
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
+ g_handle_rx_alive := true;
+
+ f_outgoing_sns_size();
+ setverdict(pass);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+}
+
+/* outgoing SNS-SIZE procedure with more BSS side IPs than SGSN can handle */
+testcase TC_SNS_size_too_big() runs on RAW_Test_CT {
+ f_init_vty();
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
+ g_handle_rx_alive := true;
+
+ f_outgoing_sns_size(cause := NS_CAUSE_INVALID_NR_OF_NSVCS, num_ip := 100);
+ setverdict(pass);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+}
+
+/* perform outgoing SNS-CONFIG procedure (for BSS) */
+testcase TC_SNS_config_bss() runs on RAW_Test_CT {
+ f_init_vty();
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
+ g_handle_rx_alive := true;
+
+ f_outgoing_sns_size();
+ f_outgoing_sns_config();
+ setverdict(pass);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+}
+
+/* perform incoming SNS-CONFIG procedure (for SGSN) */
+testcase TC_SNS_config_sgsn() runs on RAW_Test_CT {
+ f_init_vty();
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
+ g_handle_rx_alive := true;
+
+ f_outgoing_sns_size();
+ f_outgoing_sns_config();
+ f_incoming_sns_config();
+ setverdict(pass);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
+}
+
+/* perform full SNS handshake and then outbound NS-ALIVE */
+testcase TC_SNS_and_alive() runs on RAW_Test_CT {
+ f_init_vty();
+ f_init_ns_codec(mp_nsconfig[0], guard_secs := 120.0);
+ g_handle_rx_alive := true;
+
+ f_outgoing_sns_size();
+ f_outgoing_sns_config();
+ f_incoming_sns_config();
+ f_outgoing_ns_alive();
+ setverdict(pass);
+ Misc_Helpers.f_shutdown(__BFILE__, __LINE__);
}
control {
- execute( TC_NS_connect_alive() );
- execute( TC_NS_connect_reset() );
+
+ if (mp_nsconfig[0].handle_sns) {
+ execute( TC_SNS_size() );
+ execute( TC_SNS_size_too_big() );
+ execute( TC_SNS_config_bss() );
+ execute( TC_SNS_config_sgsn() );
+ execute( TC_SNS_and_alive() );
+ } else {
+ execute( TC_NS_connect_alive() );
+ execute( TC_NS_connect_reset() );
+ }
}
}