diff --git a/ggsn_tests/GGSN_Tests.ttcn b/ggsn_tests/GGSN_Tests.ttcn index 10f6a868a..9864da1f2 100644 --- a/ggsn_tests/GGSN_Tests.ttcn +++ b/ggsn_tests/GGSN_Tests.ttcn @@ -270,6 +270,44 @@ module GGSN_Tests { sgsn_ip_data, msisdn))) } + function f_teardown_ind_IE(in template BIT1 ind) return template TearDownInd { + if (isvalue(ind)) { + return omit; + } + var TearDownInd ret := { + type_gtpc := '13'O, + tdInd := valueof(ind), + spare:= '0000000'B + } + return ret; + } + + template GTPC_PDUs ts_DeletePdpPDU(BIT4 nsapi, template BIT1 teardown_ind) := { + deletePDPContextRequest := { + cause := omit, + tearDownIndicator := f_teardown_ind_IE(teardown_ind), + nsapi := { + type_gtpc := '14'O, + nsapi := nsapi, + unused := '0000'B + }, + protConfigOptions := omit, + userLocationInformation := omit, + mS_TimeZone := omit, + extendedCommonFlags := omit, + uLI_Timestamp := omit, + private_extension_gtpc := omit + } + } + + template Gtp1cUnitdata ts_GTPC_DeletePDP(GtpPeer peer, OCT4 teid, BIT4 nsapi, + template BIT1 teardown_ind) := { + peer := peer, + gtpc := ts_GTP1C_PDU(deletePDPContextRequest, teid, + valueof(ts_DeletePdpPDU(nsapi, teardown_ind))) + } + + /* GTP-U */ template PDU_GTPU tr_GTP1U_PDU(template OCT1 msg_type, template OCT4 teid) := { @@ -378,6 +416,26 @@ module GGSN_Tests { deactivate(d); } + function f_pdp_ctx_del(OCT4 teid, BIT4 nsapi, template BIT1 teardown_ind) runs on GT_CT { + var Gtp1cUnitdata ud; + var default d; + + GTPC.send(ts_GTPC_DeletePDP(g_peer, teid, nsapi, teardown_ind)); + T_default.start; + + d := activate(pingpong()); + alt { + [] GTPC.receive(tr_GTPC_MsgType(g_peer, deletePDPContextResponse, teid)) -> value ud { + if (ud.gtpc.gtpc_pdu.deletePDPContextResponse.cause.causevalue == '80'O) { + setverdict(pass); + } else { + setverdict(fail); + } + } + } + deactivate(d); + } + testcase TC_activate_pdp4() runs on GT_CT { f_init(); var hexstring imsi := '262420123456789'H;