gbproxy: Improve NSEI/... numbering and improve paging test coverage
With this setup we can and do now test: * Paging a LAI on BVC0 is sent once per matching NSE * Paging a LAI on BVC0 is sent to multiple different matching NSE * Paging a RA ID on BVC0 is sent once per matching NSE * Paging a RA ID on BVC0 is sent to multiple different matching NSE Change-Id: I698a932b3dc78c776e9350283109463bcdc40e6b Related: SYS#5226
This commit is contained in:
parent
f259021a24
commit
2c9300fd28
|
@ -20,7 +20,7 @@ GBProxy_Tests.mp_nsconfig_sgsn := {
|
||||||
|
|
||||||
GBProxy_Tests.mp_nsconfig_pcu := {
|
GBProxy_Tests.mp_nsconfig_pcu := {
|
||||||
{
|
{
|
||||||
nsei := 1,
|
nsei := 2001,
|
||||||
role_sgsn := false,
|
role_sgsn := false,
|
||||||
handle_sns := false,
|
handle_sns := false,
|
||||||
nsvc := {
|
nsvc := {
|
||||||
|
@ -58,30 +58,56 @@ GBProxy_Tests.mp_nsconfig_pcu := {
|
||||||
nsvci := 4
|
nsvci := 4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
nsei := 2002,
|
||||||
|
role_sgsn := false,
|
||||||
|
handle_sns := false,
|
||||||
|
nsvc := {
|
||||||
|
{
|
||||||
|
provider := {
|
||||||
|
fr := {
|
||||||
|
netdev := "hdlc5",
|
||||||
|
dlci := 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
nsvci := 5
|
||||||
|
}, {
|
||||||
|
provider := {
|
||||||
|
fr := {
|
||||||
|
netdev := "hdlc6",
|
||||||
|
dlci := 21
|
||||||
|
}
|
||||||
|
},
|
||||||
|
nsvci := 6
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
nsei := 2003,
|
||||||
|
role_sgsn := false,
|
||||||
|
handle_sns := false,
|
||||||
|
nsvc := {
|
||||||
|
{
|
||||||
|
provider := {
|
||||||
|
fr := {
|
||||||
|
netdev := "hdlc7",
|
||||||
|
dlci := 22
|
||||||
|
}
|
||||||
|
},
|
||||||
|
nsvci := 7
|
||||||
|
}, {
|
||||||
|
provider := {
|
||||||
|
fr := {
|
||||||
|
netdev := "hdlc8",
|
||||||
|
dlci := 23
|
||||||
|
}
|
||||||
|
},
|
||||||
|
nsvci := 8
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GBProxy_Tests.mp_gbconfigs := {
|
|
||||||
{
|
|
||||||
nsei := 1,
|
|
||||||
sgsn_role := false,
|
|
||||||
bvc := {
|
|
||||||
{
|
|
||||||
bvci := 196,
|
|
||||||
cell_id := {
|
|
||||||
ra_id := {
|
|
||||||
lai := {
|
|
||||||
mcc_mnc := '262F42'H,
|
|
||||||
lac := 13135
|
|
||||||
},
|
|
||||||
rac := 0
|
|
||||||
},
|
|
||||||
cell_id := 20960
|
|
||||||
},
|
|
||||||
depth := BSSGP_DECODE_DEPTH_BSSGP
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
[MAIN_CONTROLLER]
|
[MAIN_CONTROLLER]
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ const BcdMccMnc c_mcc_mnc := '262F42'H;
|
||||||
const integer max_fr_info_size := 1600;
|
const integer max_fr_info_size := 1600;
|
||||||
|
|
||||||
modulepar {
|
modulepar {
|
||||||
/* IP/port on which we run our internal GSUP/HLR emulation */
|
/* SGSN NS configuration */
|
||||||
NSConfigurations mp_nsconfig_sgsn := {
|
NSConfigurations mp_nsconfig_sgsn := {
|
||||||
{
|
{
|
||||||
nsei := 101,
|
nsei := 101,
|
||||||
|
@ -66,9 +66,12 @@ modulepar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/* BSS NSEI start at 2000 + x
|
||||||
|
* NSVCI start from value of NSEI + 100
|
||||||
|
* UDP port is NSVCI * 10 */
|
||||||
NSConfigurations mp_nsconfig_pcu := {
|
NSConfigurations mp_nsconfig_pcu := {
|
||||||
{
|
{
|
||||||
nsei := 96,
|
nsei := 2001,
|
||||||
role_sgsn := false,
|
role_sgsn := false,
|
||||||
handle_sns := false,
|
handle_sns := false,
|
||||||
nsvc := {
|
nsvc := {
|
||||||
|
@ -82,12 +85,12 @@ modulepar {
|
||||||
remote_ip := "127.0.0.1"
|
remote_ip := "127.0.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
nsvci := 97
|
nsvci := 2101
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nsei := 97,
|
nsei := 2002,
|
||||||
role_sgsn := false,
|
role_sgsn := false,
|
||||||
handle_sns := false,
|
handle_sns := false,
|
||||||
nsvc := {
|
nsvc := {
|
||||||
|
@ -95,18 +98,18 @@ modulepar {
|
||||||
provider := {
|
provider := {
|
||||||
ip := {
|
ip := {
|
||||||
address_family := AF_INET,
|
address_family := AF_INET,
|
||||||
local_udp_port := 21011,
|
local_udp_port := 21020,
|
||||||
local_ip := "127.0.0.1",
|
local_ip := "127.0.0.1",
|
||||||
remote_udp_port := 23000,
|
remote_udp_port := 23000,
|
||||||
remote_ip := "127.0.0.1"
|
remote_ip := "127.0.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
nsvci := 98
|
nsvci := 2102
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
nsei := 98,
|
nsei := 2003,
|
||||||
role_sgsn := false,
|
role_sgsn := false,
|
||||||
handle_sns := false,
|
handle_sns := false,
|
||||||
nsvc := {
|
nsvc := {
|
||||||
|
@ -114,24 +117,33 @@ modulepar {
|
||||||
provider := {
|
provider := {
|
||||||
ip := {
|
ip := {
|
||||||
address_family := AF_INET,
|
address_family := AF_INET,
|
||||||
local_udp_port := 21012,
|
local_udp_port := 21030,
|
||||||
local_ip := "127.0.0.1",
|
local_ip := "127.0.0.1",
|
||||||
remote_udp_port := 23000,
|
remote_udp_port := 23000,
|
||||||
remote_ip := "127.0.0.1"
|
remote_ip := "127.0.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
nsvci := 99
|
nsvci := 2103
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
/* BVCI are NSEI*10 + x
|
||||||
|
* The first NSE only has one BVC, the second one 2 and so on
|
||||||
|
* The Cell ID is BVCI + 10000
|
||||||
|
* LAC/RAC are configured in such a way that:
|
||||||
|
* LAC 13135 is present once in NSE(2001), twice in NSE(2002) and once in NSE(2003)
|
||||||
|
* LAC 13300 is present twice in NSE(2003)
|
||||||
|
* RAI 13135-1 is present in NSE(2002) and NSE(2003)
|
||||||
|
* RAI 13300-0 is present twice in NSE(2003)
|
||||||
|
*/
|
||||||
BssgpConfigs mp_gbconfigs := {
|
BssgpConfigs mp_gbconfigs := {
|
||||||
{
|
{
|
||||||
nsei := 96,
|
nsei := 2001,
|
||||||
sgsn_role := false,
|
sgsn_role := false,
|
||||||
bvc := {
|
bvc := {
|
||||||
{
|
{
|
||||||
bvci := 196,
|
bvci := 20011,
|
||||||
cell_id := {
|
cell_id := {
|
||||||
ra_id := {
|
ra_id := {
|
||||||
lai := {
|
lai := {
|
||||||
|
@ -140,18 +152,18 @@ modulepar {
|
||||||
},
|
},
|
||||||
rac := 0
|
rac := 0
|
||||||
},
|
},
|
||||||
cell_id := 20960
|
cell_id := 30011
|
||||||
},
|
},
|
||||||
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
||||||
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
nsei := 97,
|
nsei := 2002,
|
||||||
sgsn_role := false,
|
sgsn_role := false,
|
||||||
bvc := {
|
bvc := {
|
||||||
{
|
{
|
||||||
bvci := 210,
|
bvci := 20021,
|
||||||
cell_id := {
|
cell_id := {
|
||||||
ra_id := {
|
ra_id := {
|
||||||
lai := {
|
lai := {
|
||||||
|
@ -160,18 +172,48 @@ modulepar {
|
||||||
},
|
},
|
||||||
rac := 1
|
rac := 1
|
||||||
},
|
},
|
||||||
cell_id := 20961
|
cell_id := 30021
|
||||||
|
},
|
||||||
|
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
||||||
|
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
bvci := 20022,
|
||||||
|
cell_id := {
|
||||||
|
ra_id := {
|
||||||
|
lai := {
|
||||||
|
mcc_mnc := c_mcc_mnc,
|
||||||
|
lac := 13135
|
||||||
|
},
|
||||||
|
rac := 2
|
||||||
|
},
|
||||||
|
cell_id := 30022
|
||||||
},
|
},
|
||||||
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
||||||
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
nsei := 98,
|
nsei := 2003,
|
||||||
sgsn_role := false,
|
sgsn_role := false,
|
||||||
bvc := {
|
bvc := {
|
||||||
{
|
{
|
||||||
bvci := 220,
|
bvci := 20031,
|
||||||
|
cell_id := {
|
||||||
|
ra_id := {
|
||||||
|
lai := {
|
||||||
|
mcc_mnc := c_mcc_mnc,
|
||||||
|
lac := 13135
|
||||||
|
},
|
||||||
|
rac := 1
|
||||||
|
},
|
||||||
|
cell_id := 30031
|
||||||
|
},
|
||||||
|
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
||||||
|
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
bvci := 20032,
|
||||||
cell_id := {
|
cell_id := {
|
||||||
ra_id := {
|
ra_id := {
|
||||||
lai := {
|
lai := {
|
||||||
|
@ -180,7 +222,22 @@ modulepar {
|
||||||
},
|
},
|
||||||
rac := 0
|
rac := 0
|
||||||
},
|
},
|
||||||
cell_id := 20962
|
cell_id := 30032
|
||||||
|
},
|
||||||
|
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
||||||
|
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
bvci := 20033,
|
||||||
|
cell_id := {
|
||||||
|
ra_id := {
|
||||||
|
lai := {
|
||||||
|
mcc_mnc := c_mcc_mnc,
|
||||||
|
lac := 13300
|
||||||
|
},
|
||||||
|
rac := 0
|
||||||
|
},
|
||||||
|
cell_id := 30033
|
||||||
},
|
},
|
||||||
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
depth := BSSGP_DECODE_DEPTH_BSSGP,
|
||||||
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
create_cb := refers(BSSGP_Emulation.DefaultCreateCallback)
|
||||||
|
@ -1354,8 +1411,13 @@ testcase TC_paging_ps_sig_bss() runs on test_CT {
|
||||||
/* PS-PAGING on SIG-BVC for Location Area */
|
/* PS-PAGING on SIG-BVC for Location Area */
|
||||||
private function f_TC_paging_ps_sig_lac(charstring id) runs on BSSGP_ConnHdlr
|
private function f_TC_paging_ps_sig_lac(charstring id) runs on BSSGP_ConnHdlr
|
||||||
{
|
{
|
||||||
/* Both PCU index 0 and 1 have a BVC within the LAC */
|
/* The first LAC (13135) is shared by all three NSEs */
|
||||||
f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1});
|
f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[0].cell_id.ra_id.lai), 0, {0, 1, 2});
|
||||||
|
/* Reset state */
|
||||||
|
g_roi := {};
|
||||||
|
/* Make LAC (13300) available on pcu index 2 */
|
||||||
|
f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1);
|
||||||
|
f_send_paging_ps_exp_multi(ts_BssgpP4LAC(pcu_bvc_cfg[2].cell_id.ra_id.lai), 0, {2});
|
||||||
}
|
}
|
||||||
testcase TC_paging_ps_sig_lac() runs on test_CT {
|
testcase TC_paging_ps_sig_lac() runs on test_CT {
|
||||||
var BSSGP_ConnHdlr vc_conn;
|
var BSSGP_ConnHdlr vc_conn;
|
||||||
|
@ -1389,8 +1451,15 @@ testcase TC_paging_ps_sig_lac_unknown() runs on test_CT {
|
||||||
/* PS-PAGING on SIG-BVC for Routeing Area */
|
/* PS-PAGING on SIG-BVC for Routeing Area */
|
||||||
private function f_TC_paging_ps_sig_rac(charstring id) runs on BSSGP_ConnHdlr
|
private function f_TC_paging_ps_sig_rac(charstring id) runs on BSSGP_ConnHdlr
|
||||||
{
|
{
|
||||||
/* Only PCU index 0 has a matching BVC within the LAC */
|
/* Only PCU index 0 has a matching BVC with the RA ID */
|
||||||
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[0].cell_id.ra_id), 0, {0});
|
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[0].cell_id.ra_id), 0, {0});
|
||||||
|
g_roi := {};
|
||||||
|
/* PCU index 1 and 2 have a matching BVC with the RA ID */
|
||||||
|
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {1, 2});
|
||||||
|
g_roi := {};
|
||||||
|
/* PCU index 2 has two matching BVCs with the RA ID */
|
||||||
|
f_connect_to_pcu_bvc(port_idx := 2, nse_idx := 2, bvc_idx := 1);
|
||||||
|
f_send_paging_ps_exp_multi(ts_BssgpP4RAC(pcu_bvc_cfg[2].cell_id.ra_id), 0, {2});
|
||||||
}
|
}
|
||||||
testcase TC_paging_ps_sig_rac() runs on test_CT {
|
testcase TC_paging_ps_sig_rac() runs on test_CT {
|
||||||
var BSSGP_ConnHdlr vc_conn;
|
var BSSGP_ConnHdlr vc_conn;
|
||||||
|
|
|
@ -24,10 +24,14 @@ ns
|
||||||
encapsulation udp local-port 23000
|
encapsulation udp local-port 23000
|
||||||
encapsulation framerelay-gre enabled 0
|
encapsulation framerelay-gre enabled 0
|
||||||
|
|
||||||
nse 1 nsvci 1 frnet hdlcnet1 dlci 16
|
nse 2001 nsvci 1 frnet hdlcnet1 dlci 16
|
||||||
nse 1 nsvci 2 frnet hdlcnet2 dlci 17
|
nse 2001 nsvci 2 frnet hdlcnet2 dlci 17
|
||||||
nse 1 nsvci 3 frnet hdlcnet3 dlci 18
|
nse 2001 nsvci 3 frnet hdlcnet3 dlci 18
|
||||||
nse 1 nsvci 4 frnet hdlcnet4 dlci 19
|
nse 2001 nsvci 4 frnet hdlcnet4 dlci 19
|
||||||
|
nse 2002 nsvci 5 frnet hdlcnet5 dlci 20
|
||||||
|
nse 2002 nsvci 6 frnet hdlcnet6 dlci 21
|
||||||
|
nse 2003 nsvci 7 frnet hdlcnet7 dlci 22
|
||||||
|
nse 2003 nsvci 8 frnet hdlcnet8 dlci 23
|
||||||
|
|
||||||
gbproxy
|
gbproxy
|
||||||
sgsn nsei 101
|
sgsn nsei 101
|
||||||
|
|
Loading…
Reference in New Issue