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();
}

control {
	execute( TC_NS_connect_alive() );
	execute( TC_NS_connect_reset() );
}

}
