bscnat: Add function to run actions on test per BSC component

Will be useful to test stuff on IPA layer BSC<->BSC-NAT.

Change-Id: I97e743c79e5e9e7613ab91a1aa9ce2377a237fd5
This commit is contained in:
Pau Espin 2019-06-10 19:21:52 +02:00 committed by pespin
parent d1d4953d31
commit a839604956
2 changed files with 19 additions and 13 deletions

View File

@ -138,7 +138,7 @@ function f_init_vty(charstring id := "foo") runs on test_CT {
f_vty_transceive(BSCNATVTY, "enable");
}
function f_init(void_fn_bsc_ms fn_bsc_ms, BssmapCreateCallback cb_msc, boolean use_osmux) runs on test_CT {
function f_init(void_fn_bsc_ms fn_bsc_ms, void_fn_bsc fn_bsc, BssmapCreateCallback cb_msc, boolean use_osmux) runs on test_CT {
var integer i;
var charstring id;
@ -166,7 +166,7 @@ function f_init(void_fn_bsc_ms fn_bsc_ms, BssmapCreateCallback cb_msc, boolean u
pars.sccp_addr_remote := bsc[i].sccp_addr_peer;
pars.use_osmux := use_osmux;
bsc[i].BSC.start(BSC_MS_Simulation.main(mp_nat_ip, mp_nat_port, mp_bsc_ip, mp_bsc_port+i,
bsc[i].sccp_pars, pars, fn_bsc_ms, id));
bsc[i].sccp_pars, pars, fn_bsc_ms, fn_bsc, id));
}
}
@ -191,6 +191,7 @@ function f_TC_recv_dump(boolean use_osmux := false) runs on test_CT {
timer T := 30.0;
f_init(refers(bsc_ms_establish_fully),
refers(bsc_do_nothing),
refers(CreateCallback_establish_fully),
use_osmux);

View File

@ -23,6 +23,9 @@ import from RAN_Emulation all;
import from BSC_MS_ConnectionHandler all;
type function void_fn_bsc(charstring id) runs on BSC_CT;
type record of BSC_MS_ConnHdlr BSC_MS_ConnHdlrList;
type component BSC_CT {
/* component references */
var IPA_Emulation_CT vc_IPA;
@ -64,11 +67,15 @@ runs on BSC_MS_ConnHdlr {
fn.apply(id);
}
function bsc_do_nothing(charstring id)
runs on BSC_CT {
}
function main(charstring remote_ip, PortNumber remote_port,
charstring local_ip, PortNumber local_port,
MSC_SCCP_MTP3_parameters sccp_pars,
BSC_MS_TestHdlrParams pars,
void_fn_bsc_ms fn, charstring id) runs on BSC_CT
void_fn_bsc_ms fn_bsc_ms, void_fn_bsc fn_bsc, charstring id) runs on BSC_CT
{
var integer i := 0;
timer T := 1.0;
@ -101,8 +108,15 @@ function main(charstring remote_ip, PortNumber remote_port,
T.start(2.0);
T.timeout;
var BSC_MS_ConnHdlrList vc_conns;
for (i := 0; i < mp_num_iterations; i := i+1) {
f_start_BSC_MS(fn, id & "-MS-" & int2str(i));
vc_conns[i] := f_start_handler(fn_bsc_ms, id & "-MS-" & int2str(i), g_pars);
}
fn_bsc.apply(id);
for (i := 0; i < mp_num_iterations; i := i+1) {
vc_conns[i].done;
}
/* explicitly stop all components that we started above */
@ -111,13 +125,4 @@ function main(charstring remote_ip, PortNumber remote_port,
vc_SCCP.stop;
}
function f_start_BSC_MS(void_fn_bsc_ms fn, charstring id) runs on BSC_CT {
var BSC_MS_ConnHdlr vc_conn;
/* start component */
vc_conn := f_start_handler(fn, id, g_pars);
/* blocking wait until component terminates. If you want to start MSs in parallel,
* you have to remove this statement here */
vc_conn.done;
}
}