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
This commit is contained in:
Harald Welte 2020-12-09 14:44:50 +01:00
parent 425d376387
commit b9f0fdc177
1 changed files with 20 additions and 1 deletions

View File

@ -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;