FR/FRNET: Dynamically create number of BVC at runtime

We don't want the number of NSE and the number of BVC to be a
compile-time choice, but rather something dynamic at rutime.  This
allows configuration files to define those details.

Change-Id: I55b44481b5322deaf78619c1689462d716ddfcec
diff --git a/fr-net/FRNET_Tests.ttcn b/fr-net/FRNET_Tests.ttcn
index 593ca77..721dd32 100644
--- a/fr-net/FRNET_Tests.ttcn
+++ b/fr-net/FRNET_Tests.ttcn
@@ -8,6 +8,7 @@
 import from BSSGP_Emulation all;
 
 modulepar {
+	integer mp_num_bvc := 10;
 	NSConfigurations mp_nsconfig := {
 		{
 			nsei := 123,
@@ -34,11 +35,9 @@
 	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;
@@ -53,28 +52,39 @@
 	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
 	};
-	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);
 	}