ggsn: Introduce test TC_pdp46_act_deact_apn4
Related osmo-ggsn.git libgtp fix: I6c6215a4ce478afabc78ffaf5ffb0cf829e41226 Related: OS#4154 Change-Id: Ia1893e0c181307ac1ceb07ee5f496507f7a603c8
This commit is contained in:
parent
b7f01781d9
commit
22d597ff94
|
@ -247,7 +247,7 @@ module GGSN_Tests {
|
|||
}
|
||||
|
||||
/* send a PDP context activation */
|
||||
function f_pdp_ctx_act(inout PdpContext ctx) runs on GT_CT {
|
||||
function f_pdp_ctx_act(inout PdpContext ctx, OCT1 exp_cause := '80'O) runs on GT_CT {
|
||||
var Gtp1cUnitdata ud;
|
||||
var default d;
|
||||
|
||||
|
@ -260,7 +260,7 @@ module GGSN_Tests {
|
|||
alt {
|
||||
[] GTPC.receive(tr_GTPC_MsgType(g_peer_c, createPDPContextResponse, ctx.teic)) -> value ud {
|
||||
var CreatePDPContextResponse cpr := ud.gtpc.gtpc_pdu.createPDPContextResponse;
|
||||
if (cpr.cause.causevalue == '80'O) {
|
||||
if (exp_cause == '80'O and exp_cause == cpr.cause.causevalue) {
|
||||
/* Check if EUA type corresponds to requested type */
|
||||
if (match(ctx.eua, t_EuaIPv4(?)) and
|
||||
not match(cpr.endUserAddress, tr_EuaIPv4(?))){
|
||||
|
@ -292,6 +292,12 @@ module GGSN_Tests {
|
|||
ctx.eua := cpr.endUserAddress;
|
||||
ctx.pco_neg := cpr.protConfigOptions;
|
||||
setverdict(pass);
|
||||
} else if (exp_cause != '80'O and exp_cause == cpr.cause.causevalue) {
|
||||
if (ispresent(cpr.endUserAddress)) {
|
||||
log("EUA received on createPDPContextResponse cause=" & oct2str(cpr.cause.causevalue));
|
||||
setverdict(fail);
|
||||
}
|
||||
setverdict(pass);
|
||||
} else {
|
||||
setverdict(fail);
|
||||
}
|
||||
|
@ -1287,6 +1293,22 @@ module GGSN_Tests {
|
|||
f_pdp_ctx_del(ctxA, '1'B);
|
||||
}
|
||||
|
||||
/* Test IPv4v6 context activation for dynamic IPv4v6 EUA on a v4-only APN */
|
||||
testcase TC_pdp46_act_deact_apn4() runs on GT_CT {
|
||||
f_init();
|
||||
/* A typical MS first attempts v4v6, and if rejected, then tries v4 and v6 separetly */
|
||||
var PdpContext ctx46 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dynv6Dyn)));
|
||||
f_pdp_ctx_act(ctx46, 'DC'O); /* Cause: Unknown PDP address or PDP type */
|
||||
|
||||
var PdpContext ctx4 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv4Dyn)));
|
||||
f_pdp_ctx_act(ctx4, '80'O); /* Normal accept cause */
|
||||
|
||||
var PdpContext ctx6 := valueof(t_DefinePDP(f_rnd_imsi('26242'H), '1234'O, c_ApnInternet, valueof(t_EuaIPv6Dyn)));
|
||||
f_pdp_ctx_act(ctx6, 'DC'O); /* Cause: Unknown PDP address or PDP type */
|
||||
|
||||
f_pdp_ctx_del(ctx4, '1'B);
|
||||
}
|
||||
|
||||
/* Send a duplicate echo req. osmo-ggsn maintains a queue for sent
|
||||
responses (60 seconds): If same delete req is sent and duplicate is
|
||||
detected, saved duplicate response should be sent back. */
|
||||
|
@ -1332,6 +1354,7 @@ module GGSN_Tests {
|
|||
execute(TC_pdp46_act_deact_pcodns6());
|
||||
execute(TC_pdp46_act_deact_gtpu_access());
|
||||
execute(TC_pdp46_clients_interact());
|
||||
execute(TC_pdp46_act_deact_apn4());
|
||||
|
||||
execute(TC_echo_req_resp());
|
||||
execute(TC_act_deact_retrans_duplicate());
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
<testcase classname='GGSN_Tests' name='TC_pdp46_act_deact_pcodns6' time='MASKED'/>
|
||||
<testcase classname='GGSN_Tests' name='TC_pdp46_act_deact_gtpu_access' time='MASKED'/>
|
||||
<testcase classname='GGSN_Tests' name='TC_pdp46_clients_interact' time='MASKED'/>
|
||||
<testcase classname='GGSN_Tests' name='TC_pdp46_act_deact_apn4' time='MASKED'/>
|
||||
<testcase classname='GGSN_Tests' name='TC_echo_req_resp' time='MASKED'/>
|
||||
<testcase classname='GGSN_Tests' name='TC_act_deact_retrans_duplicate' time='MASKED'/>
|
||||
</testsuite>
|
||||
|
|
Loading…
Reference in New Issue