osmo-ttcn3-hacks/fr-net/FRNET_Tests.ttcn

105 lines
2.1 KiB
Plaintext

module FRNET_Tests {
import from General_Types all;
import from Osmocom_Types all;
import from Osmocom_Gb_Types all;
import from NS_Emulation all;
import from BSSGP_Emulation all;
modulepar {
integer mp_num_bvc := 10;
NSConfigurations mp_nsconfig := {
{
nsei := 123,
role_sgsn := true,
handle_sns := false,
nsvc := {
{
provider := {
fr := {
netdev := "hdlc2",
dlci := 123
}
},
nsvci := 123
}
}
}
};
}
type record GbInstance {
NS_CT vc_NS,
BSSGP_CT vc_BSSGP,
BssgpConfig cfg
};
type record of GbInstance GbInstances;
type record of NSConfiguration NSConfigurations;
type record of BssgpCellId BssgpCellIds;
type component test_CT {
var GbInstances g_gb;
};
private function CreateCallback(BssgpBvci bvci, BssgpCellId cell_id, OCT4 tlli, BssgpDecoded dec) runs on BSSGP_BVC_CT {
/* simply ignore any inbound traffic for now */
}
private function f_init_gb(inout GbInstance gb, charstring id, integer offset) runs on test_CT {
var charstring id_idx := id & int2str(offset);
gb.vc_NS := NS_CT.create(id_idx & "-NSemu");
gb.vc_BSSGP := BSSGP_CT.create(id_idx & "-BSSGPemu");
connect(gb.vc_BSSGP:BSCP, gb.vc_NS:NS_SP);
gb.vc_NS.start(NSStart(mp_nsconfig[offset], id_idx));
gb.vc_BSSGP.start(BssgpStart(gb.cfg, testcasename()));
}
function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {
var BssgpBvcConfig bvc := {
bvci := base + 100 + idx,
cell_id := {
ra_id := {
lai := {
mcc_mnc := '262F42'H,
lac := base + 300 + idx
},
rac := 1
},
cell_id := base + 600 + idx
},
depth := BSSGP_DECODE_DEPTH_LLC,
create_cb := refers(CreateCallback)
};
return bvc;
}
testcase TC_foo() runs on test_CT {
for (var integer i := 0; i < lengthof(mp_nsconfig); i := i+1) {
g_gb[i].cfg := {
nsei := mp_nsconfig[i].nsei,
sgsn_role := true,
bvc := { }
};
/* create 'mp_num_bvc' number of BVCs */
for (var integer j := 0; j < mp_num_bvc; j := j+1) {
g_gb[i].cfg.bvc := g_gb[i].cfg.bvc & { f_gen_bvc(i * 1000, j) };
}
f_init_gb(g_gb[i], "gb", i);
}
while (true) {
f_sleep(100.0);
}
}
control {
execute( TC_foo() );
}
}