pespin has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15306 )
Change subject: sgsn: Introduce test TC_attach_echo_timeout ...................................................................... sgsn: Introduce test TC_attach_echo_timeout This test verifies sgsn drops all GGSN related pdp context when that GGSN stops answering echo requests. Change-Id: Ic31748924e7bf05ea2ccf2b1be0c460eefed5782 --- M sgsn/SGSN_Tests.ttcn M sgsn/expected-results.xml 2 files changed, 63 insertions(+), 1 deletion(-) Approvals: Jenkins Builder: Verified neels: Looks good to me, but someone else must approve laforge: Looks good to me, approved diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index b146046..db7d54b 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -61,6 +61,7 @@ charstring mp_hlr_ip := "127.0.0.1"; integer mp_hlr_port := 4222; charstring mp_ggsn_ip := "127.0.0.2"; + integer mp_echo_interval := 5; /* in seconds. Only used in test enabling g_use_echo */ NSConfigurations mp_nsconfig := { { @@ -259,7 +260,7 @@ private function f_vty_enable_echo_interval(boolean enable) runs on test_CT { if (enable) { - f_vty_config(SGSNVTY, "sgsn", "ggsn 0 echo-interval 5"); + f_vty_config(SGSNVTY, "sgsn", "ggsn 0 echo-interval " & int2str(mp_echo_interval)); } else { f_vty_config(SGSNVTY, "sgsn", "ggsn 0 no echo-interval"); } @@ -1539,6 +1540,65 @@ vc_conn.done; } +private function f_TC_attach_echo_timeout(charstring id) runs on BSSGP_ConnHdlr { + var Gtp1cUnitdata g_ud; + var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip)); + var integer seq_nr; + + /* first perform regular attach */ + f_TC_attach(id); + /* then activate PDP context */ + f_pdp_ctx_act(apars); + + /* Wait to receive first echo request and send initial Restart counter */ + GTP.receive(tr_GTPC_MsgType(?, echoRequest, ?)) -> value g_ud { + BSSGP[0].clear; + seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber); + GTP.send(ts_GTPC_PONG(g_ud.peer, seq_nr, apars.ggsn_restart_ctr)); + f_sleep(int2float(mp_echo_interval)); /* wait until around next echo is expected */ + } + + /* At some point next echo request not answered will timeout and SGSN + should drop the pdp ctx. Around T3 (3secs) * 6 (+ extra, a lot due to OS#4178): */ + timer T := 3.0 * 6.0 + 16.0; + T.start; + alt { + [] BSSGP[0].receive(tr_SM_DEACT_PDP_REQ_MT(apars.tid, ?, true)) { + f_send_l3_gmm_llc(ts_SM_DEACT_PDP_ACCEPT_MO(apars.tid)); + setverdict(pass); + } + [] GTP.receive(tr_GTPC_MsgType(?, deletePDPContextRequest, apars.ggsn_tei_c)) -> value g_ud { + /* SGSN currently doesn't send this message because it expects GGSN to be non-reachable anyway */ + seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber); + log("Received deletePDPContextRequest seq_nr=" & int2str(seq_nr)); + GTP.send(ts_GTPC_DeletePdpResp(g_ud.peer, seq_nr, apars.sgsn_tei_c, '7F'O)); + repeat; + } + [] GTP.receive(tr_GTPC_MsgType(?, echoRequest, ?)) -> value g_ud { + seq_nr := oct2int(g_ud.gtpc.opt_part.sequenceNumber); + log("Received EchoRequest seq_nr=" & int2str(seq_nr)); + repeat; + } + [] T.timeout { + setverdict(fail, "BSSGP DeactPdpReq not received"); + mtc.stop; + } + [] as_xid(apars); + } + T.stop + + setverdict(pass); +} +/* ATTACH + trigger Recovery procedure through CreatePdpResp */ +testcase TC_attach_echo_timeout() runs on test_CT { + var BSSGP_ConnHdlr vc_conn; + g_use_echo := true; + f_init(); + vc_conn := f_start_handler(refers(f_TC_attach_echo_timeout), testcasename(), g_gb, 67, 50.0); + vc_conn.done; + g_use_echo := false; +} + private function f_TC_attach_restart_ctr_echo(charstring id) runs on BSSGP_ConnHdlr { var Gtp1cUnitdata g_ud; var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip)); @@ -2597,6 +2657,7 @@ execute( TC_attach_pdp_act_user_deact_mt() ); execute( TC_attach_pdp_act_deact_dup() ); execute( TC_attach_second_attempt() ); + execute( TC_attach_echo_timeout() ); execute( TC_attach_restart_ctr_echo() ); execute( TC_attach_restart_ctr_create() ); execute( TC_attach_pdp_act_deact_mt_t3395_expire() ); diff --git a/sgsn/expected-results.xml b/sgsn/expected-results.xml index d9c3706..fc8856a 100644 --- a/sgsn/expected-results.xml +++ b/sgsn/expected-results.xml @@ -54,6 +54,7 @@ SGSN_Tests.ttcn:MASKED TC_attach_second_attempt testcase </failure> </testcase> + <testcase classname='SGSN_Tests' name='TC_attach_echo_timeout' time='MASKED'/> <testcase classname='SGSN_Tests' name='TC_attach_restart_ctr_echo' time='MASKED'/> <testcase classname='SGSN_Tests' name='TC_attach_restart_ctr_create' time='MASKED'/> <testcase classname='SGSN_Tests' name='TC_attach_pdp_act_deact_mt_t3395_expire' time='MASKED'/> -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15306 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: Ic31748924e7bf05ea2ccf2b1be0c460eefed5782 Gerrit-Change-Number: 15306 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pes...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <lafo...@gnumonks.org> Gerrit-Reviewer: neels <nhofm...@sysmocom.de> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged