This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Pau Espin Pedrol gerrit-no-reply at lists.osmocom.orgPau Espin Pedrol has uploaded this change for review. ( https://gerrit.osmocom.org/10023 Change subject: sgsn: Add Test to verify Recovery procedure during CreatePdpResp ...................................................................... sgsn: Add Test to verify Recovery procedure during CreatePdpResp Change-Id: Ic81b854967492194367b7ce8a667c29c777791bf --- M library/GTP_Templates.ttcn M sgsn/SGSN_Tests.ttcn M sgsn/expected-results.xml 3 files changed, 60 insertions(+), 10 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/23/10023/1 diff --git a/library/GTP_Templates.ttcn b/library/GTP_Templates.ttcn index a222b2e..a9d2394 100644 --- a/library/GTP_Templates.ttcn +++ b/library/GTP_Templates.ttcn @@ -308,11 +308,12 @@ template GTPC_PDUs ts_CreatePdpRespPDU(OCT1 cause, OCT4 teid_data, OCT4 teid_ctrl, BIT4 nsapi, octetstring ggsn_ip_sign, octetstring ggsn_ip_data, OCT4 chg_id, template EndUserAddress eua := omit, + template Recovery_gtpc recovery := omit, template ProtConfigOptions pco := omit) := { createPDPContextResponse := { cause := { '00'O, cause }, reorderingRequired := ts_ReorderReq(false), - recovery := omit, + recovery := recovery, teidDataI := { type_gtpc := '00'O, teidDataI := teid_data @@ -352,12 +353,13 @@ BIT4 nsapi, octetstring ggsn_ip_sign, octetstring ggsn_ip_data, OCT4 chg_id, template EndUserAddress eua := omit, + template Recovery_gtpc recovery := omit, template ProtConfigOptions pco := omit) := { peer := peer, gtpc := ts_GTP1C_PDU(createPDPContextResponse, teid, valueof(ts_CreatePdpRespPDU(cause, teid_data, teid_ctrl, nsapi, ggsn_ip_sign, ggsn_ip_data, chg_id, - eua, pco)), seq) + eua, recovery, pco)), seq) } /* PCO send base template */ diff --git a/sgsn/SGSN_Tests.ttcn b/sgsn/SGSN_Tests.ttcn index 782d89c..d7e956f 100644 --- a/sgsn/SGSN_Tests.ttcn +++ b/sgsn/SGSN_Tests.ttcn @@ -903,9 +903,14 @@ f_gtp_register_teid(apars.ggsn_tei_u); } -function f_pdp_ctx_act(inout PdpActPars apars) runs on BSSGP_ConnHdlr { +function f_pdp_ctx_act(inout PdpActPars apars, boolean send_recovery := false) runs on BSSGP_ConnHdlr { var boolean exp_rej := ispresent(apars.exp_rej_cause); var Gtp1cUnitdata g_ud; + var template Recovery_gtpc recovery := omit; + + if (send_recovery) { + recovery := ts_Recovery(apars.ggsn_restart_ctr); + } BSSGP.send(ts_SM_ACT_PDP_REQ(apars.tid, apars.nsapi, apars.sapi, apars.qos, apars.addr, apars.apn, apars.pco)); @@ -916,7 +921,8 @@ apars.sgsn_tei_c, apars.gtp_resp_cause, apars.ggsn_tei_c, apars.ggsn_tei_u, apars.nsapi, - apars.ggsn_ip_c, apars.ggsn_ip_u, apars.chg_id)); + apars.ggsn_ip_c, apars.ggsn_ip_u, apars.chg_id, + omit, recovery)); } alt { [exp_rej] BSSGP.receive(tr_BD_L3_MT(tr_SM_ACT_PDP_REJ(apars.tid, apars.exp_rej_cause))) { @@ -1263,7 +1269,7 @@ vc_conn.done; } -private function f_TC_attach_restart_ctr_dettach(charstring id) runs on BSSGP_ConnHdlr { +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)); @@ -1294,15 +1300,55 @@ } setverdict(pass); } -testcase TC_attach_restart_ctr_dettach() runs on test_CT { +/* ATTACH + trigger Recovery procedure through EchoResp */ +testcase TC_attach_restart_ctr_echo() runs on test_CT { var BSSGP_ConnHdlr vc_conn; g_use_echo := true f_init(); - vc_conn := f_start_handler(refers(f_TC_attach_restart_ctr_dettach), testcasename(), g_gb[0], 23, 30.0); + vc_conn := f_start_handler(refers(f_TC_attach_restart_ctr_echo), testcasename(), g_gb[0], 23, 30.0); vc_conn.done; g_use_echo := false } +private function f_TC_attach_restart_ctr_create(charstring id) runs on BSSGP_ConnHdlr { + var Gtp1cUnitdata g_ud; + var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip)); + var integer seq_nr := 23; + var GtpPeer peer; + /* first perform regular attach */ + f_TC_attach(id); + + /* Use this CTX ACT to send initial Restart counter to SGSN. */ + apars.gtp_resp_cause := int2oct(199, 1); /* no resources available */ + apars.exp_rej_cause := '1a'O; /* insufficient resources */ + f_pdp_ctx_act(apars, true); + + /* Increment restart_ctr. This will fake a restarted GGSN when CreatePdpResp is +/* received. */ + apars.ggsn_restart_ctr := int2oct(oct2int(apars.ggsn_restart_ctr) + 1, 1); + + /* FIXME: Once we can easily handle different pdp ctx simultaneously, it + would be great to have an active pdp context here before triggering + Recovery, and making sure the the DEACT request is sent by the SGSN. + */ + + /* Activate a pdp context against the GGSN, send incremented Recovery + IE. This should trigger the recovery path, but still this specific + CTX activation should work. */ + apars.exp_rej_cause := omit; /* default value for tests */ + apars.gtp_resp_cause := int2oct(128, 1); /* default value for tests */ + f_pdp_ctx_act(apars, true); + + setverdict(pass); +} +/* ATTACH + trigger Recovery procedure through CreatePdpResp */ +testcase TC_attach_restart_ctr_create() runs on test_CT { + var BSSGP_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_TC_attach_restart_ctr_create), testcasename(), g_gb[0], 24, 30.0); + vc_conn.done; +} + /* ATTACH + PDP CTX ACT + user plane traffic + PDP CTX DEACT in MT direction + trigger T3395 */ private function f_TC_attach_pdp_act_deact_mt_t3395_expire(charstring id) runs on BSSGP_ConnHdlr { var PdpActPars apars := valueof(t_PdpActPars(mp_ggsn_ip)); @@ -1713,7 +1759,8 @@ execute( TC_attach_pdp_act_user_deact_mo() ); execute( TC_attach_pdp_act_user_deact_mt() ); execute( TC_attach_second_attempt() ); - execute( TC_attach_restart_ctr_dettach() ); + 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 f2bf327..5b756cd 100644 --- a/sgsn/expected-results.xml +++ b/sgsn/expected-results.xml @@ -1,5 +1,5 @@ <?xml version="1.0"?> -<testsuite name='Titan' tests='28' failures='4' errors='3' skipped='0' inconc='0' time='MASKED'> +<testsuite name='Titan' tests='29' failures='4' errors='3' skipped='0' inconc='0' time='MASKED'> <testcase classname='SGSN_Tests' name='TC_attach' time='MASKED'/> <testcase classname='SGSN_Tests' name='TC_attach_mnc3' time='MASKED'/> <testcase classname='SGSN_Tests' name='TC_attach_umts_aka_umts_res' time='MASKED'/> @@ -60,6 +60,7 @@ <testcase classname='SGSN_Tests' name='TC_attach_second_attempt' time='MASKED'> <error type='DTE'></error> </testcase> - <testcase classname='SGSN_Tests' name='TC_attach_restart_ctr_dettach' 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'/> </testsuite> -- To view, visit https://gerrit.osmocom.org/10023 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ic81b854967492194367b7ce8a667c29c777791bf Gerrit-Change-Number: 10023 Gerrit-PatchSet: 1 Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180717/63edac08/attachment.htm>