diff options
Diffstat (limited to 'hlr')
-rw-r--r-- | hlr/HLR_Tests.ttcn | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn index 7efc2b71..c1e29d8a 100644 --- a/hlr/HLR_Tests.ttcn +++ b/hlr/HLR_Tests.ttcn @@ -313,6 +313,45 @@ runs on test_CT return GSUP_PDU { return ret; } +/* perform PurgeMS for given imsi, return the GSUP response/error */ +function f_perform_PURGE(hexstring imsi, GSUP_CnDomain cn_dom, + template (omit) integer exp_err_cause := omit) +runs on test_CT return GSUP_PDU { + var GSUP_PDU ret; + timer T := 3.0; + var boolean exp_fail := false; + if (not istemplatekind(exp_err_cause, "omit")) { + exp_fail := true; + } + + GSUP.send(valueof(ts_GSUP_PURGE_MS_REQ(imsi, cn_dom))); + T.start; + alt { + [exp_fail] GSUP.receive(tr_GSUP_PURGE_MS_ERR(imsi, exp_err_cause)) -> value ret { + setverdict(pass); + } + [exp_fail] GSUP.receive(tr_GSUP_PURGE_MS_ERR(imsi, ?)) -> value ret { + setverdict(fail, "Unexpected PURGE ERROR Cause"); + } + [exp_fail] GSUP.receive(tr_GSUP_PURGE_MS_RES(imsi)) -> value ret { + setverdict(fail, "Unexpected PURGE.res for unknown IMSI"); + } + [not exp_fail] GSUP.receive(tr_GSUP_PURGE_MS_ERR(imsi, ?)) -> value ret { + setverdict(fail, "Unexpected PURGE ERROR"); + } + [not exp_fail] GSUP.receive(tr_GSUP_PURGE_MS_RES(imsi)) -> value ret { + setverdict(pass); + } + [] GSUP.receive { repeat; } + [] T.timeout { + setverdict(fail, "Timeout waiting for PURGE response"); + self.stop; + } + } + return ret; +} + + testcase TC_gsup_sai_err_invalid_imsi() runs on test_CT { var hexstring imsi := '01234'H; var GSUP_PDU res; @@ -435,6 +474,59 @@ testcase TC_vty_msisdn_isd() runs on test_CT { } } +/* Test PURGE MS for CS services */ +testcase TC_gsup_purge_cs() runs on test_CT { + var HlrSubscriberList sl; + var GSUP_PDU res; + + f_init(); + + sl := f_gen_subs(); + for (var integer i := 0; i < sizeof(sl); i := i+1) { + var HlrSubscriber sub := sl[i]; + log("Testing CS Purge for ", sub); + f_vty_subscr_create(sub); + res := f_perform_UL(sub.imsi, sub.msisdn); + res := f_perform_PURGE(sub.imsi, OSMO_GSUP_CN_DOMAIN_CS); + f_vty_subscr_delete(sub); + } + + setverdict(pass); +} + +/* Test PURGE MS for PS services */ +testcase TC_gsup_purge_ps() runs on test_CT { + var HlrSubscriberList sl; + var GSUP_PDU res; + + f_init(); + + sl := f_gen_subs(); + for (var integer i := 0; i < sizeof(sl); i := i+1) { + var HlrSubscriber sub := sl[i]; + log("Testing PS Purge for ", sub); + f_vty_subscr_create(sub); + res := f_perform_UL(sub.imsi, sub.msisdn); + res := f_perform_PURGE(sub.imsi, OSMO_GSUP_CN_DOMAIN_PS); + f_vty_subscr_delete(sub); + } + + setverdict(pass); +} + +/* Test PURGEG MS procedure for unknown IMSI */ +testcase TC_gsup_purge_unknown() runs on test_CT { + var hexstring imsi := '2345743413463'H; + var GSUP_PDU res; + + f_init(); + + res := f_perform_PURGE(imsi, OSMO_GSUP_CN_DOMAIN_CS, 2); + + setverdict(pass); +} + + /* TODO: * UL with ISD error * UL with ISD timeout @@ -457,6 +549,9 @@ control { execute( TC_gsup_ul() ); execute( TC_vty() ); execute( TC_vty_msisdn_isd() ); + execute( TC_gsup_purge_cs() ); + execute( TC_gsup_purge_ps() ); + execute( TC_gsup_purge_unknown() ); }; }; |