blob: bc6e513014b8f39787a52283487725d1d43b1399 [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 := {
Harald Welte92009302021-01-26 15:45:14 +010021 netdev := "hdlcnet1",
Harald Weltebfff7172021-02-04 10:46:55 +010022 dlci := 1
Harald Welte90f19742020-11-06 19:34:40 +010023 }
24 },
Harald Weltebfff7172021-02-04 10:46:55 +010025 nsvci := 101
26 }, {
27 provider := {
28 fr := {
29 netdev := "hdlcnet2",
30 dlci := 2
31 }
32 },
33 nsvci := 102
34 }, {
35 provider := {
36 fr := {
37 netdev := "hdlcnet3",
38 dlci := 3
39 }
40 },
41 nsvci := 103
42 }, {
43 provider := {
44 fr := {
45 netdev := "hdlcnet4",
46 dlci := 4
47 }
48 },
49 nsvci := 104
Harald Welte90f19742020-11-06 19:34:40 +010050 }
51 }
Harald Welte023b61b2020-09-12 20:41:05 +020052 }
53 };
54}
55
56type record GbInstance {
57 NS_CT vc_NS,
58 BSSGP_CT vc_BSSGP,
59 BssgpConfig cfg
60};
61
Harald Weltede6f3ee2020-11-11 19:01:46 +010062type record of GbInstance GbInstances;
63type record of NSConfiguration NSConfigurations;
64type record of BssgpCellId BssgpCellIds;
Harald Welte023b61b2020-09-12 20:41:05 +020065
66type component test_CT {
67 var GbInstances g_gb;
68};
69
Harald Welted6de9842020-11-12 21:50:10 +010070
71private function CreateCallback(BssgpBvci bvci, BssgpCellId cell_id, OCT4 tlli, BssgpDecoded dec) runs on BSSGP_BVC_CT {
72 /* simply ignore any inbound traffic for now */
73}
74
Harald Welte023b61b2020-09-12 20:41:05 +020075private function f_init_gb(inout GbInstance gb, charstring id, integer offset) runs on test_CT {
76 var charstring id_idx := id & int2str(offset);
77 gb.vc_NS := NS_CT.create(id_idx & "-NSemu");
78 gb.vc_BSSGP := BSSGP_CT.create(id_idx & "-BSSGPemu");
79 connect(gb.vc_BSSGP:BSCP, gb.vc_NS:NS_SP);
80 gb.vc_NS.start(NSStart(mp_nsconfig[offset], id_idx));
81 gb.vc_BSSGP.start(BssgpStart(gb.cfg, testcasename()));
82}
83
Harald Weltede6f3ee2020-11-11 19:01:46 +010084function f_gen_bvc(integer base, integer idx) return BssgpBvcConfig {
85 var BssgpBvcConfig bvc := {
86 bvci := base + 100 + idx,
87 cell_id := {
88 ra_id := {
89 lai := {
90 mcc_mnc := '262F42'H,
91 lac := base + 300 + idx
Harald Welte023b61b2020-09-12 20:41:05 +020092 },
Harald Weltede6f3ee2020-11-11 19:01:46 +010093 rac := 1
94 },
95 cell_id := base + 600 + idx
96 },
Harald Welte4d112c92020-11-12 19:48:31 +010097 depth := BSSGP_DECODE_DEPTH_LLC,
Harald Welted6de9842020-11-12 21:50:10 +010098 create_cb := refers(CreateCallback)
Harald Welte023b61b2020-09-12 20:41:05 +020099 };
Harald Weltede6f3ee2020-11-11 19:01:46 +0100100 return bvc;
101}
102
103testcase TC_foo() runs on test_CT {
104
105 for (var integer i := 0; i < lengthof(mp_nsconfig); i := i+1) {
106 g_gb[i].cfg := {
107 nsei := mp_nsconfig[i].nsei,
108 sgsn_role := true,
109 bvc := { }
110 };
111 /* create 'mp_num_bvc' number of BVCs */
112 for (var integer j := 0; j < mp_num_bvc; j := j+1) {
113 g_gb[i].cfg.bvc := g_gb[i].cfg.bvc & { f_gen_bvc(i * 1000, j) };
114 }
115 f_init_gb(g_gb[i], "gb", i);
116 }
117
Harald Welte023b61b2020-09-12 20:41:05 +0200118 while (true) {
119 f_sleep(100.0);
120 }
121}
122
Harald Welted0770752020-11-11 19:03:41 +0100123control {
124 execute( TC_foo() );
125}
126
Harald Welte023b61b2020-09-12 20:41:05 +0200127
128}