fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/37199?usp=email )
Change subject: s1gw: add TC_conn_term_{by_mme,mme_unavail} ......................................................................
s1gw: add TC_conn_term_{by_mme,mme_unavail}
Change-Id: I5ac2020160c914db0882f148469570cfb142b18d Related: SYS#6772 --- M s1gw/S1GW_Tests.ttcn 1 file changed, 70 insertions(+), 2 deletions(-)
Approvals: pespin: Looks good to me, approved Jenkins Builder: Verified osmith: Looks good to me, but someone else must approve
diff --git a/s1gw/S1GW_Tests.ttcn b/s1gw/S1GW_Tests.ttcn index 6237557..30dcd46 100644 --- a/s1gw/S1GW_Tests.ttcn +++ b/s1gw/S1GW_Tests.ttcn @@ -90,8 +90,10 @@ var ConnHdlr vc_conn;
vc_conn := ConnHdlr.create("ConnHdlr-" & testcasename()); - connect(vc_conn:S1AP_CONN, vc_S1APSRV:S1AP_CLIENT); - connect(vc_conn:S1AP_PROC, vc_S1APSRV:S1AP_PROC); + if (vc_S1APSRV.running) { + connect(vc_conn:S1AP_CONN, vc_S1APSRV:S1AP_CLIENT); + connect(vc_conn:S1AP_PROC, vc_S1APSRV:S1AP_PROC); + } vc_conn.start(derefers(fn)(pars));
return vc_conn; @@ -214,9 +216,65 @@ } }
+ +/* MME terminates connection, expect S1GW to terminate the eNB connection */ +function f_TC_conn_term_by_mme(ConnHdlrPars pars) runs on ConnHdlr { + var Global_ENB_ID genb_id := valueof(ts_Global_ENB_ID(pars.seed)); + + f_ConnHdlr_register(genb_id); + + f_ConnHdlr_connect(); + f_ConnHdlr_setup(genb_id); + f_sleep(0.5); /* keep the connection idle for some time */ + + /* MME (S1AP_Server_CT) terminates connection */ + f_ConnHdlr_close_conn(genb_id); + /* expect our eNB connection to be released gracefully */ + S1AP_ENB.receive(tr_SctpShutDownEvent(g_s1ap_conn_id)); + S1AP_ENB.receive(tr_SctpAssocChange(SCTP_SHUTDOWN_COMP, g_s1ap_conn_id)); + S1AP_ENB.receive(PortEvent:{connClosed := ?}); + + f_ConnHdlr_unregister(genb_id); +} +testcase TC_conn_term_by_mme() runs on test_CT { + var ConnHdlrPars pars := { seed := 0 }; + var ConnHdlr vc_conn; + + f_init(); + f_init_s1ap_srv(); + + vc_conn := f_ConnHdlr_spawn(refers(f_TC_conn_term_by_mme), pars); + vc_conn.done; +} + + +/* MME is not available, expect S1GW to terminate the eNB connection */ +function f_TC_conn_term_mme_unavail(ConnHdlrPars pars) runs on ConnHdlr { + /* establish an eNB connection to the S1GW */ + f_ConnHdlr_connect(); + /* expect our eNB connection to be released gracefully */ + S1AP_ENB.receive(tr_SctpShutDownEvent(g_s1ap_conn_id)); + S1AP_ENB.receive(tr_SctpAssocChange(SCTP_SHUTDOWN_COMP, g_s1ap_conn_id)); + S1AP_ENB.receive(PortEvent:{connClosed := ?}); + setverdict(pass); +} +testcase TC_conn_term_mme_unavail() runs on test_CT { + var ConnHdlrPars pars := { seed := 0 }; + var ConnHdlr vc_conn; + + f_init(); + f_init_s1ap_srv(); + vc_S1APSRV.stop; + + vc_conn := f_ConnHdlr_spawn(refers(f_TC_conn_term_mme_unavail), pars); + vc_conn.done; +} + control { execute( TC_setup() ); execute( TC_setup_multi() ); + execute( TC_conn_term_by_mme() ); + execute( TC_conn_term_mme_unavail() ); }
}