diff options
Diffstat (limited to 'fr-net/FRNET_Tests.ttcn')
-rw-r--r-- | fr-net/FRNET_Tests.ttcn | 132 |
1 files changed, 97 insertions, 35 deletions
diff --git a/fr-net/FRNET_Tests.ttcn b/fr-net/FRNET_Tests.ttcn index c2994f66..0a6af591 100644 --- a/fr-net/FRNET_Tests.ttcn +++ b/fr-net/FRNET_Tests.ttcn @@ -6,20 +6,51 @@ import from Osmocom_Gb_Types all; import from NS_Emulation all; import from BSSGP_Emulation all; +import from LLC_Types all; +import from LLC_Templates all; modulepar { + integer mp_num_bvc := 10; NSConfigurations mp_nsconfig := { { - provider := { - fr := { - netdev := "hdlc2", - dlci := 123 - } - }, - nsvci := 123, nsei := 123, role_sgsn := true, - handle_sns := false + handle_sns := false, + nsvc := { + { + provider := { + fr := { + netdev := "hdlcnet1", + dlci := 21 + } + }, + nsvci := 101 + }, { + provider := { + fr := { + netdev := "hdlcnet2", + dlci := 22 + } + }, + nsvci := 102 + }, { + provider := { + fr := { + netdev := "hdlcnet3", + dlci := 23 + } + }, + nsvci := 103 + }, { + provider := { + fr := { + netdev := "hdlcnet4", + dlci := 24 + } + }, + nsvci := 104 + } + } } }; } @@ -30,51 +61,82 @@ type record GbInstance { BssgpConfig cfg }; -const integer NUM_GB := 1; -type record length(NUM_GB) of GbInstance GbInstances; -type record length(NUM_GB) of NSConfiguration NSConfigurations; -type record length(NUM_GB) of BssgpCellId BssgpCellIds; - +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 { + if (ischosen(dec.bssgp.pDU_BSSGP_UL_UNITDATA)) { + var PDU_LLC llc_rx := dec_PDU_LLC(dec.bssgp.pDU_BSSGP_UL_UNITDATA.lLC_PDU.lLC_PDU) + select (llc_rx) { + case (tr_LLC_UI(sapi := '0010'B)) { + //log("BVCI=", bvci, ", CellId=", cell_id, ", TLLI=", tlli, ", BSSGP=", dec); + /* mirror back as DL-UNITDATA */ + BVC.send(ts_ptp_BnsUdReq(ts_BSSGP_DL_UD(tlli, dec.bssgp.pDU_BSSGP_UL_UNITDATA.lLC_PDU.lLC_PDU), bvci, oct2int(tlli))); + } + case else { + /* 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"); + gb.vc_NS := NS_CT.create(id_idx & "-NSemu") alive; + gb.vc_BSSGP := BSSGP_CT.create(id_idx & "-BSSGPemu") alive; 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())); } -testcase TC_foo() runs on test_CT { - g_gb[0].cfg := { - nsei := 123, - sgsn_role := true, - bvc := { - { - bvci := 1123, - cell_id := { - ra_id := { - lai := { - mcc_mnc := '262F42'H, - lac := 11123 - }, - rac := 1 - }, - cell_id := 31123 +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 }, - depth := BSSGP_DECODE_DEPTH_LLC - } - } + rac := 1 + }, + cell_id := base + 600 + idx + }, + depth := BSSGP_DECODE_DEPTH_LLC, + create_cb := refers(CreateCallback) }; - f_init_gb(g_gb[0], "gb", 0); + 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() ); +} + } |