From b9f0fdc1778220908aecc1f1b5b389c3e5e427bb Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Wed, 9 Dec 2020 14:44:50 +0100 Subject: gbproxy: properly shutdown at the end of the test Destroying at least most of the components in an orderly fashion avoids at least most of the race conditions during test shutdown. Change-Id: I2aa4ef8a70c1139893c9621f5a6b6007b221c13d --- gbproxy/GBProxy_Tests.ttcn | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn index 7811a010..9bd05508 100644 --- a/gbproxy/GBProxy_Tests.ttcn +++ b/gbproxy/GBProxy_Tests.ttcn @@ -14,6 +14,7 @@ module GBProxy_Tests { import from General_Types all; import from Osmocom_Types all; +import from Misc_Helpers all; import from GSM_Types all; import from Native_Functions all; import from NS_Types all; @@ -398,6 +399,15 @@ private function f_init_gb_sgsn(inout GbInstance gb, charstring id, integer offs } +private function f_destroy_gb(inout GbInstance gb) runs on test_CT { + gb.vc_NS.stop; + gb.vc_BSSGP.stop; + + for (var integer i := 0; i < lengthof(gb.cfg.bvc); i := i + 1) { + gb.vc_BSSGP_BVC[i].stop; + } +} + private function f_init_vty() runs on test_CT { map(self:GBPVTY, system:GBPVTY); f_vty_set_prompts(GBPVTY); @@ -513,7 +523,16 @@ function f_init(float t_guard := 30.0) runs on test_CT { } function f_cleanup() runs on test_CT { - self.stop; + var integer i; + + for (i := 0; i < lengthof(mp_nsconfig_sgsn); i := i+1) { + f_destroy_gb(g_sgsn[i]); + } + for (i := 0; i < lengthof(mp_nsconfig_pcu); i := i+1) { + f_destroy_gb(g_pcu[i]); + } + + Misc_Helpers.f_shutdown(__BFILE__, __LINE__, pass); } type function void_fn(charstring id) runs on BSSGP_ConnHdlr; -- cgit v1.2.3