Harald Welte has submitted this change and it was merged.

Change subject: hlr: Add testcases for PURGE_MS procedure
......................................................................


hlr: Add testcases for PURGE_MS procedure

Change-Id: I9d54d5e4b6fe24d3ee710b57e0c69a30b89d3450
---
M hlr/HLR_Tests.ttcn
M library/GSUP_Types.ttcn
2 files changed, 114 insertions(+), 0 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/hlr/HLR_Tests.ttcn b/hlr/HLR_Tests.ttcn
index 7efc2b7..c1e29d8 100644
--- a/hlr/HLR_Tests.ttcn
+++ b/hlr/HLR_Tests.ttcn
@@ -313,6 +313,45 @@
        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 @@
        }
 }
 
+/* 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 @@
        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() );
 };
 
 };
diff --git a/library/GSUP_Types.ttcn b/library/GSUP_Types.ttcn
index 3fb8d8e..57c0a39 100644
--- a/library/GSUP_Types.ttcn
+++ b/library/GSUP_Types.ttcn
@@ -343,6 +343,10 @@
        tr_GSUP(OSMO_GSUP_MSGT_LOCATION_CANCEL_ERROR, {
                        tr_GSUP_IE_IMSI(imsi), tr_GSUP_IE_Cause(cause) });
 
+template (value) GSUP_PDU ts_GSUP_PURGE_MS_REQ(hexstring imsi, GSUP_CnDomain 
dom) :=
+       ts_GSUP(OSMO_GSUP_MSGT_PURGE_MS_REQUEST, {
+                       valueof(ts_GSUP_IE_IMSI(imsi)), 
valueof(ts_GSUP_IE_CnDomain(dom)) });
+
 template GSUP_PDU tr_GSUP_PURGE_MS_REQ(template hexstring imsi, template 
GSUP_CnDomain dom := ?) :=
        tr_GSUP(OSMO_GSUP_MSGT_PURGE_MS_REQUEST, {
                        tr_GSUP_IE_IMSI(imsi), *, tr_GSUP_IE_CnDomain(dom) });
@@ -350,6 +354,14 @@
 template (value) GSUP_PDU ts_GSUP_PURGE_MS_RES(hexstring imsi) :=
        ts_GSUP(OSMO_GSUP_MSGT_PURGE_MS_RESULT, {
                valueof(ts_GSUP_IE_IMSI(imsi)) });
+
+template GSUP_PDU tr_GSUP_PURGE_MS_RES(template hexstring imsi) :=
+       tr_GSUP(OSMO_GSUP_MSGT_PURGE_MS_RESULT, {
+               tr_GSUP_IE_IMSI(imsi), * });
+
+template GSUP_PDU tr_GSUP_PURGE_MS_ERR(template hexstring imsi, template 
integer cause) :=
+       tr_GSUP(OSMO_GSUP_MSGT_PURGE_MS_ERROR, {
+               tr_GSUP_IE_IMSI(imsi), tr_GSUP_IE_Cause(cause) });
 
 
 template (value) GSUP_IE ts_GSUP_IE_CancelType(GSUP_CancelType ctype) := {
@@ -493,6 +505,13 @@
        }
 }
 
+template (value) GSUP_IE ts_GSUP_IE_CnDomain(GSUP_CnDomain dom) := {
+       tag := OSMO_GSUP_CN_DOMAIN_IE,
+       len := 0, /* overwritten */
+       val := {
+               cn_domain := dom
+       }
+}
 
 
 } with { encode "RAW"; variant "FIELDORDER(msb)" }

-- 
To view, visit https://gerrit.osmocom.org/7042
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I9d54d5e4b6fe24d3ee710b57e0c69a30b89d3450
Gerrit-PatchSet: 2
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder

Reply via email to