diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn index 8de16d222..f18216e9f 100644 --- a/gbproxy/GBProxy_Tests.ttcn +++ b/gbproxy/GBProxy_Tests.ttcn @@ -37,9 +37,12 @@ import from LLC_Templates all; import from GSM_RR_Types all; +/* mcc_mnc is 24.008 10.5.5.15 encoded. 262 42 */ +const BcdMccMnc c_mcc_mnc := '262F42'H; + modulepar { /* IP/port on which we run our internal GSUP/HLR emulation */ - NSConfigurations_SGSN mp_nsconfig_sgsn := { + NSConfigurations mp_nsconfig_sgsn := { { nsei := 101, role_sgsn := true, @@ -60,7 +63,7 @@ modulepar { } } }; - NSConfigurations_PCU mp_nsconfig_pcu := { + NSConfigurations mp_nsconfig_pcu := { { nsei := 96, role_sgsn := false, @@ -119,6 +122,69 @@ modulepar { } } }; + BssgpConfigs mp_gbconfigs := { + { + nsei := 96, + sgsn_role := false, + bvc := { + { + bvci := 196, + cell_id := { + ra_id := { + lai := { + mcc_mnc := c_mcc_mnc, + lac := 13135 + }, + rac := 0 + }, + cell_id := 20960 + }, + depth := BSSGP_DECODE_DEPTH_BSSGP, + create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) + } + } + }, { + nsei := 97, + sgsn_role := false, + bvc := { + { + bvci := 210, + cell_id := { + ra_id := { + lai := { + mcc_mnc := c_mcc_mnc, + lac := 13200 + }, + rac := 0 + }, + cell_id := 20961 + }, + depth := BSSGP_DECODE_DEPTH_BSSGP, + create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) + } + } + }, { + nsei := 98, + sgsn_role := false, + bvc := { + { + bvci := 220, + cell_id := { + ra_id := { + lai := { + mcc_mnc := c_mcc_mnc, + lac := 13300 + }, + rac := 0 + }, + cell_id := 20962 + }, + depth := BSSGP_DECODE_DEPTH_BSSGP, + create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) + } + } + } + } }; const integer NUM_BVC_PER_NSE := 3; @@ -130,17 +196,16 @@ type record GbInstance { }; const integer NUM_PCU := 3; -type record length(NUM_PCU) of GbInstance GbInstances_PCU; -type record length(NUM_PCU) of NSConfiguration NSConfigurations_PCU; -type record length(NUM_PCU) of BssgpCellId BssgpCellIds; +type record of GbInstance GbInstances; +type record of BssgpConfig BssgpConfigs; +type record of NSConfiguration NSConfigurations; +type record of BssgpCellId BssgpCellIds; const integer NUM_SGSN := 1; -type record length(NUM_SGSN) of GbInstance GbInstances_SGSN; -type record length(NUM_SGSN) of NSConfiguration NSConfigurations_SGSN; type component test_CT { - var GbInstances_PCU g_pcu; - var GbInstances_SGSN g_sgsn; + var GbInstances g_pcu; + var GbInstances g_sgsn; port BSSGP_CT_PROC_PT PROC; @@ -243,118 +308,33 @@ private function f_init_vty() runs on test_CT { f_vty_transceive(GBPVTY, "enable"); } -/* mcc_mnc is 24.008 10.5.5.15 encoded. 262 42 */ -function f_init(BcdMccMnc mcc_mnc := '262F42'H) runs on test_CT { +function f_init() runs on test_CT { var integer i; if (g_initialized == true) { return; } g_initialized := true; - g_pcu[0].cfg := { - nsei := 96, - sgsn_role := false, - bvc := { { - bvci := 196, - cell_id := { - ra_id := { - lai := { - mcc_mnc := mcc_mnc, lac := 13135}, - rac := 0 - }, - cell_id := 20960 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP, - create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) - } } - }; - g_pcu[1].cfg := { - nsei := 97, - sgsn_role := false, - bvc := { { - bvci := 210, - cell_id := { - ra_id := { - lai := { - mcc_mnc := mcc_mnc, lac := 13200}, - rac := 0 - }, - cell_id := 20961 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP, - create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) - } } - }; - g_pcu[2].cfg := { - nsei := 98, - sgsn_role := false, - bvc := { { - bvci := 220, - cell_id := { - ra_id := { - lai := { - mcc_mnc := mcc_mnc, lac := 13300}, - rac := 0 - }, - cell_id := 20962 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP, - create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) - } } - }; g_sgsn[0].cfg := { - nsei := 101, + nsei := mp_nsconfig_sgsn[0].nsei, sgsn_role := true, - bvc := { - { - bvci := 196, - cell_id := { - ra_id := { - lai := { - mcc_mnc := mcc_mnc, lac := 13135}, - rac := 0 - }, - cell_id := 20960 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP, - create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) - }, - { - bvci := 210, - cell_id := { - ra_id := { - lai := { - mcc_mnc := mcc_mnc, lac := 13200}, - rac := 0 - }, - cell_id := 20961 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP, - create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) - }, - { - bvci := 220, - cell_id := { - ra_id := { - lai := { - mcc_mnc := mcc_mnc, lac := 13300}, - rac := 0 - }, - cell_id := 20962 - }, - depth := BSSGP_DECODE_DEPTH_BSSGP, - create_cb := refers(BSSGP_Emulation.DefaultCreateCallback) - } - } - }; + bvc := { } + } + for (i := 0; i < lengthof(mp_gbconfigs); i := i+1) { + g_pcu[i].cfg := mp_gbconfigs[i]; + /* concatenate all the PCU-side BVCs for the SGSN side */ + g_sgsn[0].cfg.bvc := g_sgsn[0].cfg.bvc & mp_gbconfigs[i].bvc; + } f_init_vty(); - f_init_gb_sgsn(g_sgsn[0], "GbProxy_Test-SGSN0", 0); + for (i := 0; i < lengthof(mp_nsconfig_sgsn); i := i+1) { + f_init_gb_sgsn(g_sgsn[0], "GbProxy_Test-SGSN" & int2str(i), 0); + } f_sleep(4.0); - f_init_gb_pcu(g_pcu[0], "GbProxy_Test-PCU0", 0); - f_init_gb_pcu(g_pcu[1], "GbProxy_Test-PCU1", 1); - f_init_gb_pcu(g_pcu[2], "GbProxy_Test-PCU2", 2); + for (i := 0; i < lengthof(mp_nsconfig_pcu); i := i+1) { + f_init_gb_pcu(g_pcu[i], "GbProxy_Test-PCU" & int2str(i), i); + } } function f_cleanup() runs on test_CT { @@ -364,7 +344,7 @@ function f_cleanup() runs on test_CT { type function void_fn(charstring id) runs on BSSGP_ConnHdlr; /* helper function to create, connect and start a BSSGP_ConnHdlr component */ -function f_start_handler(void_fn fn, charstring id, GbInstances_PCU pcu, GbInstances_SGSN sgsn, integer imsi_suffix, +function f_start_handler(void_fn fn, charstring id, GbInstances pcu, GbInstances sgsn, integer imsi_suffix, float t_guard := 30.0) runs on test_CT return BSSGP_ConnHdlr { var BSSGP_ConnHdlr vc_conn;