blob: 94b32dca0c1566d555048490e2886b3044ccbe1a [file] [log] [blame]
Harald Welte023b61b2020-09-12 20:41:05 +02001module FRNET_Tests {
2
3import from General_Types all;
4import from Osmocom_Types all;
5import from Osmocom_Gb_Types all;
6
7import from NS_Emulation all;
8import from BSSGP_Emulation all;
9
10modulepar {
Harald Weltede6f3ee2020-11-11 19:01:46 +010011 integer mp_num_bvc := 10;
Harald Welte023b61b2020-09-12 20:41:05 +020012 NSConfigurations mp_nsconfig := {
13 {
Harald Welte023b61b2020-09-12 20:41:05 +020014 nsei := 123,
15 role_sgsn := true,
Harald Welte90f19742020-11-06 19:34:40 +010016 handle_sns := false,
17 nsvc := {
18 {
19 provider := {
20 fr := {
21 netdev := "hdlc2",
22 dlci := 123
23 }
24 },
25 nsvci := 123
26 }
27 }
Harald Welte023b61b2020-09-12 20:41:05 +020028 }
29 };
30}
31
32type record GbInstance {
33 NS_CT vc_NS,
34 BSSGP_CT vc_BSSGP,
35 BssgpConfig cfg
36};
37
Harald Weltede6f3ee2020-11-11 19:01:46 +010038type record of GbInstance GbInstances;
39type record of NSConfiguration NSConfigurations;
40type record of BssgpCellId BssgpCellIds;
Harald Welte023b61b2020-09-12 20:41:05 +020041
42type component test_CT {
43 var GbInstances g_gb;
44};
45
Harald Welted6de9842020-11-12 21:50:10 +010046
47private function CreateCallback(BssgpBvci bvci, BssgpCellId cell_id, OCT4 tlli, BssgpDecoded dec) runs on BSSGP_BVC_CT {
48 /* simply ignore any inbound traffic for now */
49}
50
Harald Welte023b61b2020-09-12 20:41:05 +020051private function f_init_gb(inout GbInstance gb, charstring id, integer offset) runs on test_CT {
52 var charstring id_idx := id & int2str(offset);
53 gb.vc_NS := NS_CT.create(id_idx & "-NSemu");
54 gb.vc_BSSGP := BSSGP_CT.create(id_idx & "-BSSGPemu");
55 connect(gb.vc_BSSGP:BSCP, gb.vc_NS:NS_SP);
56 gb.vc_NS.start(NSStart(mp_nsconfig[offset], id_idx));
57 gb.vc_BSSGP.start(BssgpStart(gb.cfg, testcasename()));
58}
59
Harald Weltede6f3ee2020-11-11 19:01:46 +010060function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {
61 var BssgpBvcConfig bvc := {
62 bvci := base + 100 + idx,
63 cell_id := {
64 ra_id := {
65 lai := {
66 mcc_mnc := '262F42'H,
67 lac := base + 300 + idx
Harald Welte023b61b2020-09-12 20:41:05 +020068 },
Harald Weltede6f3ee2020-11-11 19:01:46 +010069 rac := 1
70 },
71 cell_id := base + 600 + idx
72 },
Harald Welte4d112c92020-11-12 19:48:31 +010073 depth := BSSGP_DECODE_DEPTH_LLC,
Harald Welted6de9842020-11-12 21:50:10 +010074 create_cb := refers(CreateCallback)
Harald Welte023b61b2020-09-12 20:41:05 +020075 };
Harald Weltede6f3ee2020-11-11 19:01:46 +010076 return bvc;
77}
78
79testcase TC_foo() runs on test_CT {
80
81 for (var integer i := 0; i < lengthof(mp_nsconfig); i := i+1) {
82 g_gb[i].cfg := {
83 nsei := mp_nsconfig[i].nsei,
84 sgsn_role := true,
85 bvc := { }
86 };
87 /* create 'mp_num_bvc' number of BVCs */
88 for (var integer j := 0; j < mp_num_bvc; j := j+1) {
89 g_gb[i].cfg.bvc := g_gb[i].cfg.bvc & { f_gen_bvc(i * 1000, j) };
90 }
91 f_init_gb(g_gb[i], "gb", i);
92 }
93
Harald Welte023b61b2020-09-12 20:41:05 +020094 while (true) {
95 f_sleep(100.0);
96 }
97}
98
Harald Welted0770752020-11-11 19:03:41 +010099control {
100 execute( TC_foo() );
101}
102
Harald Welte023b61b2020-09-12 20:41:05 +0200103
104}