From ed09743af5ca408db69bcc39e39ab2714d28d0a1 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 13 Aug 2017 13:28:49 +0200 Subject: GGSN_Tests: Randomize IMSIs and use different APN for v4 + v6 --- ggsn_tests/GGSN_Tests.ttcn | 45 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 38 insertions(+), 7 deletions(-) (limited to 'ggsn_tests') diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 2066e0dd..b269fb66 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -485,7 +485,9 @@ module GGSN_Tests { } /* 'internet' in DNS encoding */ - template octetstring t_ApnInternet := '08696E7465726E6574'O; + const octetstring c_ApnInternet := '08696E7465726E6574'O; + const octetstring c_ApnInet6 := '05696E657436'O; + const octetstring c_ApnInet46 := '06696E65743436'O; /* return random integer between 0 and max */ function f_rnd_int(integer max) return integer { @@ -502,6 +504,35 @@ module GGSN_Tests { return int2oct(f_rnd_int(4294967296), 4); } + /* return hexstring composed of random digits */ + function f_rnd_hexstring(in integer len, in integer max := 15) return hexstring { + var integer i; + var hexstring ret := ''H; + for (i := 0; i < len; i := i + 1) { + ret := ret & int2hex(f_rnd_int(max), 1); + } + return ret; + } + + /* return octetstring composed of random bytes */ + function f_rnd_octstring(in integer len) return octetstring { + var integer i; + var octetstring ret := ''O; + for (i := 0; i < len; i := i + 1) { + ret := ret & int2oct(f_rnd_int(255), 1); + } + return ret; + } + + function f_rnd_imsi(in hexstring prefix) return hexstring { + return prefix & f_rnd_hexstring(15 - lengthof(prefix), 9); + } + + function f_rnd_msisdn(in octetstring prefix, integer len := 6) return octetstring { + return prefix & f_rnd_octstring(len - lengthof(prefix)); + } + + /* define an (internal) representation of a PDP context */ template PdpContext t_DefinePDP(hexstring imsi, octetstring msisdn, octetstring apn, EndUserAddress eua) := { @@ -764,7 +795,7 @@ module GGSN_Tests { testcase TC_pdp6_act_deact() runs on GT_CT { f_init(); - var PdpContext ctx := valueof(t_DefinePDP('262420123456789'H, '1234'O, valueof(t_ApnInternet), valueof(t_EuaIPv6Dyn))); + var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn))); f_pdp_ctx_act(ctx); f_pdp_ctx_del(ctx, '1'B); } @@ -772,7 +803,7 @@ module GGSN_Tests { testcase TC_pdp6_act_deact_pcodns() runs on GT_CT { f_init(); - var PdpContext ctx := valueof(t_DefinePDP('262420123456789'H, '1234'O, valueof(t_ApnInternet), valueof(t_EuaIPv6Dyn))); + var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn))); ctx.pco_req := valueof(ts_PCO_IPv6_DNS); f_pdp_ctx_act(ctx); f_pdp_ctx_del(ctx, '1'B); @@ -781,7 +812,7 @@ module GGSN_Tests { testcase TC_pdp6_act_deact_icmp6() runs on GT_CT { f_init(); - var PdpContext ctx := valueof(t_DefinePDP('262420123456789'H, '1234'O, valueof(t_ApnInternet), valueof(t_EuaIPv6Dyn))); + var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInet6, valueof(t_EuaIPv6Dyn))); ctx.pco_req := valueof(ts_PCO_IPv6_DNS); f_pdp_ctx_act(ctx); @@ -797,21 +828,21 @@ module GGSN_Tests { testcase TC_pdp4_act_deact() runs on GT_CT { f_init(); - var PdpContext ctx := valueof(t_DefinePDP('262420123456789'H, '1234'O, valueof(t_ApnInternet), valueof(t_EuaIPv4Dyn))); + var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); f_pdp_ctx_act(ctx); f_pdp_ctx_del(ctx, '1'B); } testcase TC_pdp4_act_deact_ipcp() runs on GT_CT { f_init(); - var PdpContext ctx := valueof(t_DefinePDP('262420123456789'H, '1234'O, valueof(t_ApnInternet), valueof(t_EuaIPv4Dyn))); + var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); f_pdp_ctx_act(ctx); f_pdp_ctx_del(ctx, '1'B); } testcase TC_pdp4_act_deact_pcodns() runs on GT_CT { f_init(); - var PdpContext ctx := valueof(t_DefinePDP('262420123456789'H, '1234'O, valueof(t_ApnInternet), valueof(t_EuaIPv4Dyn))); + var PdpContext ctx := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn))); f_pdp_ctx_act(ctx); f_pdp_ctx_del(ctx, '1'B); } -- cgit v1.2.3