121 lines
2.8 KiB
Plaintext
121 lines
2.8 KiB
Plaintext
module SGSN_Tests_NS {
|
|
|
|
/* Osmocom SGSN test suite in TTCN-3
|
|
* (C) 2020 sysmocom - s.f.m.c. GmbH
|
|
* All rights reserved.
|
|
*
|
|
* Released under the terms of GNU General Public License, Version 2 or
|
|
* (at your option) any later version.
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
import from Osmocom_Types all;
|
|
import from Osmocom_Gb_Types all;
|
|
import from Osmocom_VTY_Functions all;
|
|
import from NS_Types all;
|
|
import from RAW_NS all;
|
|
import from SGSN_Tests all;
|
|
|
|
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);
|
|
|
|
/* Send a NS-ALIVE */
|
|
f_outgoing_ns_reset();
|
|
|
|
f_sleep(1.0);
|
|
f_clean_ns_codec();
|
|
}
|
|
|
|
testcase TC_NS_connect_alive() runs on RAW_Test_CT {
|
|
f_init_vty();
|
|
f_init_ns_codec(mp_nsconfig[0], guard_secs := 10.0);
|
|
|
|
/* Send a NS-ALIVE */
|
|
NSCP[0].send(t_NS_ALIVE);
|
|
alt {
|
|
[] NSCP[0].receive(t_NS_ALIVE_ACK);
|
|
[] NSCP[0].receive(tr_NS_STATUS(*)) { setverdict(fail); }
|
|
[] NSCP[0].receive { repeat; }
|
|
}
|
|
|
|
f_sleep(1.0);
|
|
f_clean_ns_codec();
|
|
}
|
|
|
|
/* 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);
|
|
}
|
|
|
|
/* 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);
|
|
}
|
|
|
|
/* 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);
|
|
}
|
|
|
|
/* 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);
|
|
}
|
|
|
|
/* 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);
|
|
}
|
|
|
|
control {
|
|
|
|
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() );
|
|
}
|
|
}
|
|
|
|
}
|