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/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/5955 to look at the new patch set (#2). MSC_Tests: Integrate MNCC, GSUP, BSSAP connection handler, ... Change-Id: I7bb6660c6b6cef81533f0fbb5e735f08ed275b8c --- A msc_tests/BSC_ConnectionHandler.ttcn M msc_tests/MSC_Tests.ttcn M msc_tests/gen_links.sh M msc_tests/regen_makefile.sh 4 files changed, 472 insertions(+), 96 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/55/5955/2 diff --git a/msc_tests/BSC_ConnectionHandler.ttcn b/msc_tests/BSC_ConnectionHandler.ttcn new file mode 100644 index 0000000..15a460b --- /dev/null +++ b/msc_tests/BSC_ConnectionHandler.ttcn @@ -0,0 +1,201 @@ +module BSC_ConnectionHandler { + +import from General_Types all; +import from Osmocom_Types all; +import from GSM_Types all; +import from SCCPasp_Types all; +import from BSSAP_Types all; +import from BSSMAP_Emulation all; +import from BSSMAP_Templates all; + +import from GSUP_Types all; +import from GSUP_Emulation all; + +import from MNCC_Types all; +import from MNCC_Emulation all; + +import from MobileL3_Types all; +import from MobileL3_CommonIE_Types all; +import from MobileL3_MM_Types all; +import from L3_Templates all; + +/* this component represents a single subscriber connection */ +type component BSC_ConnHdlr extends BSSAP_ConnHdlr, MNCC_ConnHdlr, GSUP_ConnHdlr { + var BSC_ConnHdlrPars g_pars; +} + +type record BSC_ConnHdlrPars { + SCCP_PAR_Address sccp_addr_own, + SCCP_PAR_Address sccp_addr_peer, + BSSMAP_IE_CellIdentifier cell_id, + hexstring imsi, + hexstring msisdn +}; + + +/* Callback function from general BSSMAP_Emulation whenever a connectionless + * BSSMAP message arrives. Canreturn a PDU_BSSAPthat should be sent in return */ +private function BscUnitdataCallback(PDU_BSSAP bssap) +runs on BSSMAP_Emulation_CT return template PDU_BSSAP { + var template PDU_BSSAP resp := omit; + + log("BSSMAP_BscUnitdataCallback"); + /* answer all RESET with RESET ACK */ + if (match(bssap, tr_BSSMAP_Reset)){ + log("BSSMAP_BscUnitdataCallback: Responding to RESET with RESET-ACK"); + resp := ts_BSSMAP_ResetAck; + } + + /* FIXME: Handle paging, etc. */ + return resp; +} + +const BssmapOps BSC_BssmapOps := { + /* Create call-back for inbound connections from MSC (hand-over) */ + create_cb := refers(BSSMAP_Emulation.ExpectedCreateCallback), + unitdata_cb := refers(BscUnitdataCallback), + decode_dtap := true, + role_ms := true +} + + +private function MnccUnitdataCallback(MNCC_PDU mncc) +runs on MNCC_Emulation_CT return template MNCC_PDU { + log("Ignoring MNCC", mncc); + return omit; +} + +const MnccOps BCC_MnccOps := { + create_cb := refers(MNCC_Emulation.ExpectedCreateCallback), + unitdata_cb := refers(MnccUnitdataCallback) +} + + + +template BSSAP_Conn_Req ts_BSSAP_Conn_Req(SCCP_PAR_Address peer, SCCP_PAR_Address own, PDU_BSSAP bssap) := { + addr_peer := peer, + addr_own := own, + bssap := bssap +}; + +template (value) MobileStationClassmark1_V ts_CM1(BIT1 a5_1_unavail := '0'B, BIT2 rev := '10'B) := { + rf_PowerCapability := '010'B, + a5_1 := a5_1_unavail, + esind := '1'B, + revisionLevel := rev, + spare1_1 := '0'B +} + +/* Encode 'l3' and ask BSSMAP_Emulation to create new connection with COMPL L3 INFO */ +function f_bssap_compl_l3(PDU_ML3_MS_NW l3) +runs on BSC_ConnHdlr { + log("Sending COMPL L3: ", l3); + var octetstring l3_enc := enc_PDU_ML3_MS_NW(l3); + BSSAP.send(ts_BSSAP_Conn_Req(g_pars.sccp_addr_peer, g_pars.sccp_addr_own, + valueof(ts_BSSMAP_ComplL3(g_pars.cell_id, l3_enc)))); +} + +/* helper function to fully establish a dedicated channel */ +function f_establish_fully(MobileIdentityLV mi, boolean expect_auth) +runs on BSC_ConnHdlr { + var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ('0001'B, mi)); + var PDU_DTAP_MT dtap_mt; + + /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */ + f_bssap_compl_l3(l3_info); + + if (expect_auth) { + /* FIXME */ + } + BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)); +} + +/* build a PDU_ML3_MS_NW containing a Location Update by IMSI */ +function f_build_lu_imsi(hexstring imsi) return PDU_ML3_MS_NW +{ + var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(imsi)); + return f_build_lu(mi); +} +private function f_build_lu(MobileIdentityLV mi) return PDU_ML3_MS_NW +{ + var LocationAreaIdentification_V old_lai := { '62F220'O, '9999'O }; + var PDU_ML3_MS_NW l3_info := valueof(ts_ML3_MO_LU_Req(valueof(ts_ML3_IE_LuType_Attach), + old_lai, mi, valueof(ts_CM1))); + return l3_info; +} + +function f_perform_lu(boolean expect_auth, boolean expect_tmsi) +runs on BSC_ConnHdlr { + var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi) + var PDU_DTAP_MT dtap_mt; + + /* tell GSUP dispatcher to send this IMSI to us */ + f_create_gsup_expect(hex2str(g_pars.imsi)); + + /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */ + f_bssap_compl_l3(l3_lu); + + if (expect_auth) { + /* FIXME */ + } + + /* Expect MSC to perform LU with HLR */ + GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)); + GSUP.send(ts_GSUP_ISD_REQ(g_pars.imsi, g_pars.msisdn)); + GSUP.receive(tr_GSUP_ISD_RES(g_pars.imsi)); + GSUP.send(ts_GSUP_UL_RES(g_pars.imsi)); + + alt { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) -> value dtap_mt { + var PDU_ML3_LocationUpdateAccept lu_acc := dtap_mt.dtap.msgs.mm.locationUpdateAccept; + if (expect_tmsi) { + if (not ispresent(lu_acc.mobileIdentityTLV) or + not ischosen(lu_acc.mobileIdentityTLV.mobileIdentityLV.mobileIdentityV.oddEvenInd_identity.tmsi_ptmsi)) { + setverdict(fail, "Expected TMSI but no TMSI was allocated"); + self.stop; + } else { + BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_TmsiRealloc_Cmpl)); + } + } else { + if (ispresent(lu_acc.mobileIdentityTLV) and + ischosen(lu_acc.mobileIdentityTLV.mobileIdentityLV.mobileIdentityV.oddEvenInd_identity.tmsi_ptmsi)) { + setverdict(fail, "Expected no TMSI but TMSI was allocated"); + self.stop; + } + } + } + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { + setverdict(fail, "Expected LU ACK, but received LU REJ"); + self.stop; + } + } + /* FIXME: there could be pending SMS or other common procedures by the MSC, let's ignore them */ + BSSAP.receive(tr_BSSMAP_ClearCommand); + BSSAP.send(ts_BSSMAP_ClearComplete); + BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND); + setverdict(pass); +} + +function f_foo() runs on BSC_ConnHdlr{ + /* SCCP CC handled by BSSMAP_Emulation_CT.main() */ + /* Expect auth, if enabled */ + + /* TODO: ISD */ + /* Expect encr, if enabled */ + /* Expect encr, if enabled */ + /* Expect ASS CMD, if chan_type != requested */ + /* Send ASS CMPL in successful case */ + + /* Expect AoIP port/ip information for RTP stream */ + /* Expect MSC-originated MGCP to our simulated MGW */ + /* Verify Counters via CTRL */ + /* re-configure MSC behaviour via VTY */ +} + + + + + +} + + diff --git a/msc_tests/MSC_Tests.ttcn b/msc_tests/MSC_Tests.ttcn index adb9453..e336e9a 100644 --- a/msc_tests/MSC_Tests.ttcn +++ b/msc_tests/MSC_Tests.ttcn @@ -16,112 +16,106 @@ import from SCTPasp_Types all; import from SCTPasp_PortType all; +import from Osmocom_CTRL_Functions all; +import from Osmocom_CTRL_Types all; +import from Osmocom_CTRL_Adapter all; + +import from MNCC_Emulation all; + +import from GSUP_Emulation all; +import from GSUP_Types all; +import from IPA_Emulation all; + import from BSSAP_Types all; +import from BSSAP_Adapter all; +import from BSSAP_CodecPort all; +import from BSSMAP_Templates all; +import from BSSMAP_Emulation all; +import from BSC_ConnectionHandler all; -type component MTC_CT { - /* M3UA emulation component */ - var M3UA_CT vc_M3UA; - /* SCCP emulation component */ - var SCCP_CT vc_SCCP; - /* test port to SCCP emulation */ - port SCCPasp_PT SCCP; +import from MobileL3_Types all; +import from MobileL3_CommonIE_Types all; +import from L3_Templates all; - var octetstring g_sio; - var MSC_SCCP_MTP3_parameters g_sccp_pars; - var SCCP_PAR_Address g_sccp_addr_own, g_sccp_addr_peer; +type component MTC_CT extends BSSAP_Adapter_CT, CTRL_Adapter_CT { var boolean g_initialized := false; + + /* no 'adapter_CT' for MNCC or GSUP */ + var MNCC_Emulation_CT vc_MNCC; + var GSUP_Emulation_CT vc_GSUP; + var IPA_Emulation_CT vc_GSUP_IPA; + + /* only to get events from IPA underneath GSUP */ + port IPA_CTRL_PT GSUP_IPA_EVENT; } modulepar { - charstring mp_sccp_service_type := "mtp3_itu"; + /* remote parameters of IUT */ + charstring mp_msc_ip := "127.0.0.1"; + integer mp_msc_ctrl_port := 4255; + integer mp_msc_vty_port := 4254; - SCTP_Association_Address mp_sctp_addr := { 22905, "127.0.0.1", 2905, "127.0.0.1" }; - integer mp_own_pc := 196; - integer mp_own_ssn := 254; + /* local parameters of emulated HLR */ + charstring mp_hlr_ip := "127.0.0.1"; + integer mp_hlr_port := 4222; - integer mp_peer_pc := 185; /* 0.23.1 */ - integer mp_peer_ssn := 254; + charstring mp_msc_mncc := "/tmp/mncc"; } -/* construct a SCCP_PAR_Address with just PC + SSN and no GT */ -template (value) SCCP_PAR_Address ts_SccpAddr_PC_SSN(integer pc, integer ssn) := { - addressIndicator := { - pointCodeIndic := '1'B, - ssnIndicator := '1'B, - globalTitleIndic := '0000'B, - routingIndicator := '1'B - }, - signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, '83'O), - //signPointCode := SCCP_SPC_int2bit(pc, mp_sccp_service_type, g_sio), - subsystemNumber := ssn, - globalTitle := omit +function f_init_mncc(charstring id) runs on MTC_CT { + id := id & "-MNCC"; + var MnccOps ops := { + create_cb := refers(MNCC_Emulation.ExpectedCreateCallback), + unitdata_cb := refers(MNCC_Emulation.DummyUnitdataCallback) + } + + vc_MNCC := MNCC_Emulation_CT.create(id); + map(vc_MNCC:MNCC, system:MNCC_CODEC_PT); + vc_MNCC.start(MNCC_Emulation.main(ops, id, mp_msc_mncc)); } -function init_pars() runs on MTC_CT { - g_sio := '83'O; - g_sccp_pars := { - sio := { - ni := substr(oct2bit(g_sio),0,2), - prio := substr(oct2bit(g_sio),2,2), - si := substr(oct2bit(g_sio),4,4) - }, - opc := mp_own_pc, - dpc := mp_peer_pc, - sls := 0, - sccp_serviceType := mp_sccp_service_type, - ssn := mp_own_ssn - }; - g_sccp_addr_own := valueof(ts_SccpAddr_PC_SSN(mp_own_pc, mp_own_ssn)); - g_sccp_addr_peer := valueof(ts_SccpAddr_PC_SSN(mp_peer_pc, mp_peer_ssn)); +function f_init_gsup(charstring id) runs on MTC_CT { + id := id & "-GSUP"; + var GsupOps ops := { + create_cb := refers(GSUP_Emulation.ExpectedCreateCallback) + } + + vc_GSUP_IPA := IPA_Emulation_CT.create(id & "-IPA"); + vc_GSUP := GSUP_Emulation_CT.create(id); + + map(vc_GSUP_IPA:IPA_PORT, system:IPA_CODEC_PT); + connect(vc_GSUP:GSUP, vc_GSUP_IPA:IPA_GSUP_PORT); + /* we use this hack to get events like ASP_IPA_EVENT_UP */ + connect(vc_GSUP_IPA:IPA_CTRL_PORT, self:GSUP_IPA_EVENT); + + vc_GSUP.start(GSUP_Emulation.main(ops, id)); + vc_GSUP_IPA.start(IPA_Emulation.main_server(mp_hlr_ip, mp_hlr_port)); + + /* wait for incoming connection to GSUP port before proceeding */ + timer T := 10.0; + T.start; + alt { + [] GSUP_IPA_EVENT.receive(t_ASP_IPA_EVT_UD(ASP_IPA_EVENT_UP)) { } + [] T.timeout { + setverdict(inconc, "No connection to GSUP Port"); + self.stop + } + } } -function init() runs on MTC_CT { +function f_init() runs on MTC_CT { if (g_initialized == true) { return; } g_initialized := true; - init_pars(); - - /* Create components */ - vc_M3UA := M3UA_CT.create; - vc_SCCP := SCCP_CT.create; - - /* connect system SCTP port to M3UA lower side */ - map(vc_M3UA:SCTP_PORT, system:sctp); - - /* connect MTP3 service provider to SCCP MTP3 port */ - connect(vc_M3UA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT); - - /* connect test suite to SCCP service provider port */ - connect(self:SCCP, vc_SCCP:SCCP_SP_PORT); - - vc_M3UA.start(f_M3UA_Emulation(mp_sctp_addr)); - vc_SCCP.start(SCCPStart(g_sccp_pars)); - -} - -function terminate() runs on MTC_CT { - - disconnect(self:SCCP, vc_SCCP:SCCP_SP_PORT); - disconnect(vc_M3UA:MTP3_SP_PORT, vc_SCCP:MTP3_SCCP_PORT); - unmap(vc_M3UA:SCTP_PORT, system:sctp); - - all component.stop; - - self.stop; -} - -testcase TC_nothing() runs on MTC_CT { - init(); - - timer T := 30.0; - T.start; - T.timeout; - + f_bssap_init("MSC_Test", BSC_BssmapOps); + f_ipa_ctrl_start(mp_msc_ip, mp_msc_ctrl_port); + f_init_mncc("MSC_Test"); + f_init_gsup("MSC_Test"); } template PDU_BSSAP ts_BSSAP_BSSMAP := { @@ -290,31 +284,189 @@ // enc_PDU_BSSAP function f_send_BSSAP_UNITDATA(template PDU_BSSAP bssap) runs on MTC_CT { - SCCP.send(t_ASP_N_UNITDATA_req(g_sccp_addr_peer, g_sccp_addr_own, '00000001'B, '00000001'B, - enc_PDU_BSSAP(valueof(bssap)), omit)) + BSSAP.send(ts_BSSAP_UNITDATA_req(g_sccp_addr_peer, g_sccp_addr_own, bssap)) } -testcase TC_reset() runs on MTC_CT { - init(); +type function void_fn(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr; - timer T := 2.0; +function f_gen_imsi(hexstring prefix, integer suffix) return hexstring { + var integer suffix_len := 15 - lengthof(prefix); + suffix_len := suffix_len-1; /* FIXME: fix odd IMSI length */ + return prefix & int2hex(suffix, suffix_len); +} + +function f_gen_msisdn(hexstring prefix, integer suffix) return hexstring { + var integer suffix_len := 12 - lengthof(prefix); + return prefix & int2hex(suffix, suffix_len); +} + +/* FIXME: move into BSC_ConnectionHandler? */ +function f_start_handler(void_fn fn, charstring id, integer imsi_suffix) runs on MTC_CT return BSC_ConnHdlr { + var BSC_ConnHdlr vc_conn; + var BSC_ConnHdlrPars pars := { + sccp_addr_own := g_sccp_addr_own, + sccp_addr_peer := g_sccp_addr_peer, + cell_id := valueof(ts_CellId_CGI('262'H, '042'H, 23, 42)), + imsi := f_gen_imsi('26242'H, imsi_suffix), + msisdn := f_gen_msisdn('491239999'H, imsi_suffix) + }; + + vc_conn := BSC_ConnHdlr.create(id); + /* BSSMAP part / A interface */ + connect(vc_conn:BSSAP, vc_BSSMAP:CLIENT); + connect(vc_conn:BSSAP_PROC, vc_BSSMAP:PROC); + /* MNCC part */ + connect(vc_conn:MNCC, vc_MNCC:MNCC_CLIENT); + connect(vc_conn:MNCC_PROC, vc_MNCC:MNCC_PROC); + /* GSUP part */ + connect(vc_conn:GSUP, vc_GSUP:GSUP_CLIENT); + connect(vc_conn:GSUP_PROC, vc_GSUP:GSUP_PROC); + + vc_conn.start(derefers(fn)(id, pars)); + return vc_conn; +} + +function f_sleep(float seconds) { + timer T := seconds; T.start; T.timeout; +} - f_send_BSSAP_UNITDATA(ts_BSSMAP_Reset(0)); +private function f_tc_lu_imsi_noauth_tmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + g_pars := pars; + f_perform_lu(false, true); +} + +testcase TC_lu_imsi_noauth_tmsi() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + + vc_conn := f_start_handler(refers(f_tc_lu_imsi_noauth_tmsi), testcasename(), 1); + vc_conn.done; +} + +private function f_tc_lu_imsi_noauth_notmsi(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + g_pars := pars; + f_perform_lu(false, false); +} + +testcase TC_lu_imsi_noauth_notmsi() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + + vc_conn := f_start_handler(refers(f_tc_lu_imsi_noauth_notmsi), testcasename(), 2); + vc_conn.done; +} + +/* Do LU by IMSI, refuse it on GSUP and expect LU REJ back to MS */ +private function f_tc_lu_imsi_reject(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + g_pars := pars; + var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi); + + f_create_gsup_expect(hex2str(g_pars.imsi)); + f_bssap_compl_l3(l3_lu); + GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)); + GSUP.send(ts_GSUP_UL_ERR(g_pars.imsi, 23)); + alt { + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej(int2oct(23,1)))) { } + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + setverdict(fail, "Expecting LU REJ, but got ACCEPT"); + self.stop; + } + } + BSSAP.receive(tr_BSSMAP_ClearCommand); + BSSAP.send(ts_BSSMAP_ClearComplete); + BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND); + setverdict(pass); +} +testcase TC_lu_imsi_reject() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + + vc_conn := f_start_handler(refers(f_tc_lu_imsi_reject), testcasename(), 3); + vc_conn.done; +} + +/* Do LU by IMSI, timeout on GSUP */ +private function f_tc_lu_imsi_timeout_gsup(charstring id, BSC_ConnHdlrPars pars) runs on BSC_ConnHdlr { + g_pars := pars; + var PDU_ML3_MS_NW l3_lu := f_build_lu_imsi(g_pars.imsi); + + f_create_gsup_expect(hex2str(g_pars.imsi)); + f_bssap_compl_l3(l3_lu); + GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)); + /* Normally the HLR would need to respond here, but we decide to force a timeout here */ + alt { + /* FIXME: Expect specific reject cause */ + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Rej)) { } + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_LU_Acc)) { + setverdict(fail, "Expecting LU REJ, but got ACCEPT"); + self.stop; + } + } + BSSAP.receive(tr_BSSMAP_ClearCommand); + BSSAP.send(ts_BSSMAP_ClearComplete); + BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND); + setverdict(pass); +} +testcase TC_lu_imsi_timeout_gsup() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + + vc_conn := f_start_handler(refers(f_tc_lu_imsi_timeout_gsup), testcasename(), 4); + vc_conn.done; +} + + +/* Send CM SERVICE REQ for IMSI that has never performed LU before */ +private function f_tc_cmserv_imsi_unknown(charstring id, BSC_ConnHdlrPars pars) +runs on BSC_ConnHdlr { + + var MobileIdentityLV mi := valueof(ts_MI_IMSI_LV(g_pars.imsi)); + var BSSMAP_IE_CellIdentifier cell_id := valueof(ts_CellId_CGI('262'H, '042'H, 23, 42)); + var PDU_ML3_MS_NW l3_info := valueof(ts_CM_SERV_REQ('0001'B, mi)); + + f_create_gsup_expect(hex2str(g_pars.imsi)); + + /* Send BSSAP_Conn_Req with COMPL L3 INFO to MSC */ + f_bssap_compl_l3(l3_info); + + timer T := 10.0; T.start; alt { - //[] SCCP.receive(tr_BSSMAP_ResetAck) { } - [] T.timeout { setverdict(fail); } + [] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_REJ)) { } + //[] BSSAP.receive(tr_PDU_DTAP_MT(tr_CM_SERV_ACC)) { } + [] BSSAP.receive { setverdict(fail, "Received unexpected BSSAP"); } + [] GSUP.receive(tr_GSUP_UL_REQ(g_pars.imsi)) { + setverdict(fail, "Unexpected GSUP UL REQ"); + } + [] T.timeout { setverdict(inconc, "Timeout waiting for CM SERV REQ"); } } - terminate(); + alt { + [] BSSAP.receive(tr_BSSMAP_ClearCommand) { + setverdict(pass); + } + [] BSSAP.receive { setverdict(fail, "Received unexpected BSSAP"); } + [] T.timeout { setverdict(inconc, "Timeout waiting for CM SERV REQ"); } + } } +testcase TC_cmserv_imsi_unknown() runs on MTC_CT { + var BSC_ConnHdlr vc_conn; + f_init(); + vc_conn := f_start_handler(refers(f_tc_cmserv_imsi_unknown), testcasename(), 5); + vc_conn.done; +} + + control { - execute( TC_reset() ); - execute( TC_nothing() ); + execute( TC_cmserv_imsi_unknown() ); + execute( TC_lu_imsi_noauth_tmsi() ); + //execute( TC_lu_imsi_noauth_notmsi() ); + execute( TC_lu_imsi_reject() ); + execute( TC_lu_imsi_timeout_gsup() ); } diff --git a/msc_tests/gen_links.sh b/msc_tests/gen_links.sh index 6625b11..ef3dc63 100755 --- a/msc_tests/gen_links.sh +++ b/msc_tests/gen_links.sh @@ -19,6 +19,15 @@ FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn TCCConversion.cc TCCConversion.hh TCCInterface.cc TCCInterface_ip.h" gen_links $DIR $FILES +DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src +FILES="Socket_API_Definitions.ttcn" +gen_links $DIR $FILES + +# Required by MGCP and IPA +DIR=$BASEDIR/titan.TestPorts.IPL4asp/src +FILES="IPL4asp_Functions.ttcn IPL4asp_PT.cc IPL4asp_PT.hh IPL4asp_PortType.ttcn IPL4asp_Types.ttcn IPL4asp_discovery.cc IPL4asp_protocol_L234.hh" +gen_links $DIR $FILES + # required by M3UA_Emulation DIR=$BASEDIR/titan.ProtocolModules.M3UA/src FILES="M3UA_Types.ttcn" @@ -52,7 +61,21 @@ FILES="MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn" gen_links $DIR $FILES +DIR=$BASEDIR/titan.ProtocolModules.SDP/src +FILES="SDP_EncDec.cc SDP_Types.ttcn SDP_parse_.tab.c SDP_parse_.tab.h SDP_parse_parser.h SDP_parser.l +SDP_parser.y lex.SDP_parse_.c" +gen_links $DIR $FILES + +DIR=$BASEDIR/titan.ProtocolModules.RTP/src +FILES="RTP_EncDec.cc RTP_Types.ttcn" +gen_links $DIR $FILES + DIR=../library -FILES="General_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h" +FILES="General_Types.ttcn GSM_Types.ttcn Osmocom_Types.ttcn MNCC_Types.ttcn MNCC_EncDec.cc MNCC_CodecPort.ttcn mncc.h MNCC_Emulation.ttcn " +FILES+="IPA_Types.ttcn IPA_Emulation.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc RSL_Types.ttcn GSUP_Types.ttcn GSUP_Emulation.ttcn " +FILES+="Osmocom_CTRL_Types.ttcn Osmocom_CTRL_Functions.ttcn Osmocom_CTRL_Adapter.ttcn L3_Templates.ttcn L3_Templates.ttcn " +FILES+="BSSMAP_Emulation.ttcn BSSAP_CodecPort.ttcn BSSMAP_Templates.ttcn BSSAP_Adapter.ttcn MGCP_Types.ttcn MGCP_Templates.ttcn IPA_Emulation.ttcn " +FILES+="RTP_CodecPort.ttcn RTP_CodecPort_CtrlFunctDef.cc " +FILES+="MGCP_CodecPort.ttcn MGCP_CodecPort_CtrlFunctDef.cc " gen_links $DIR $FILES diff --git a/msc_tests/regen_makefile.sh b/msc_tests/regen_makefile.sh index f271c88..ce33695 100755 --- a/msc_tests/regen_makefile.sh +++ b/msc_tests/regen_makefile.sh @@ -1,5 +1,5 @@ #!/bin/sh -FILES="*.ttcn SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc" +FILES="*.ttcn SCCP_EncDec.cc SCTPasp_PT.cc TCCConversion.cc TCCInterface.cc UD_PT.cc MNCC_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc SDP_EncDec.cc RTP_EncDec.cc IPA_CodecPort_CtrlFunctDef.cc RTP_CodecPort_CtrlFunctDef.cc MGCP_CodecPort_CtrlFunctDef.cc *.c" ../regen-makefile.sh MSC_Tests.ttcn $FILES -- To view, visit https://gerrit.osmocom.org/5955 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: I7bb6660c6b6cef81533f0fbb5e735f08ed275b8c Gerrit-PatchSet: 2 Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder