Change in osmo-ttcn3-hacks[master]: improve/fix f_tc_mo_setup_dtmf_dup

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/.

laforge gerrit-no-reply at lists.osmocom.org
Tue Nov 5 19:30:01 UTC 2019


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15936 )

Change subject: improve/fix f_tc_mo_setup_dtmf_dup
......................................................................

improve/fix f_tc_mo_setup_dtmf_dup

- Fix error log for a missing final DTMF.

- Instead of code dup to establish a call, use f_mo_call_establish().  This
  will make the test benefit from changes to f_mo_call_establish() (which will
  soon come up to accomodate changes in osmo-msc's codec negotiation).

- Instead of hardcoding the expected N_SD counter values to detect DTAP
  duplicates, use f_bssmap_last_n_sd() and f_next_n_sd(), so that the N_SD
  counter is correct regardless of how many DTAP were sent in
  f_mo_call_establish().

- Instead of hardcoding a correct N_SD in the end, use skip_seq_patching ==
  false, so that the ttcn DTAP correctly tracks N_SD for subsequent call
  release messages.

- Release the call.

Change-Id: Ibfa8b906764f2d5ed75fe74125be42af4546e864
---
M msc/BSC_ConnectionHandler.ttcn
M msc/MSC_Tests.ttcn
2 files changed, 26 insertions(+), 16 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved



diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn
index 5b0a125..0ddc911 100644
--- a/msc/BSC_ConnectionHandler.ttcn
+++ b/msc/BSC_ConnectionHandler.ttcn
@@ -1273,50 +1273,58 @@
 	var MgcpCommand mgcp_cmd;
 	var template PDU_ML3_MS_NW dtmf_dtap;
 
-	f_establish_fully();
+	f_mo_call_establish(cpars);
 
-	/* Create MNCC and MGCP expect */
-	f_create_mncc_expect(hex2str(cpars.called_party));
-	f_create_mgcp_expect(ExpectCriteria:{omit,omit,omit});
+	/* Send DTMF: send the exact same DTAP message twice, the dup should be filtered out by
+	 * 3GPP TS 24.007 11.2.3.2 Message Type Octet / Duplicate Detection. */
 
-	BSSAP.send(ts_PDU_DTAP_MO(ts_ML3_MO_CC_SETUP(cpars.transaction_id, cpars.called_party)));
-	MNCC.receive(tr_MNCC_SETUP_ind(?, tr_MNCC_number(hex2str(cpars.called_party)))) -> value mncc;
-	cpars.mncc_callref := mncc.u.signal.callref;
+	/* Find out the next NSD that will be used, from RAN emulation. */
+	var N_Sd_Array last_n_sd := f_bssmap_last_n_sd();
+	var uint2_t next_n_sd := f_next_n_sd(last_n_sd, 0 /* cc is index 0 */);
 
-	/* Send DTMF */
+	/* Compose DTAP with this correct NSD */
 	dtmf_dtap := ts_ML3_MO_CC_START_DTMF(cpars.transaction_id, "2");
-	dtmf_dtap.msgs.cc.startDTMF.nsd := int2bit(2, 2);
-	BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, true));
+
+	/* Here, pass skip_seq_patching == false so that the RAN Emulation NSD increments after this message. */
+	BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, false));
 	T.start;
 	alt {
-	[] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "2")) {}
+	[] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "2")) {
+		log("f_mo_seq_dtmf_dup() 1: got first START_DTMF_ind");
+		}
 	[] T.timeout {
 		setverdict(fail, "Timeout waiting for START_DTMF_ind");
 		mtc.stop;
 		}
 	}
 
+	/* Send the exact same DTAP with above NSD, which is now incorrect (has not incremented), so that this message
+	 * will get filtered by the duplicate detection. Write NSD into DTAP and pass skip_seq_patching == true. */
+	dtmf_dtap.msgs.cc.startDTMF.nsd := int2bit(next_n_sd, 2);
 	BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, true));
 	T.start;
 	alt {
 	[] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "2")) {
-		setverdict(fail, "Received duplicate START_DTMF_ind");
+		setverdict(fail, "f_mo_seq_dtmf_dup() 2: Received duplicate START_DTMF_ind");
 		mtc.stop;
 		}
 	[] T.timeout { }
 	}
 
+	/* Here the NSD should be correct again and we see a DTMF. */
 	dtmf_dtap := ts_ML3_MO_CC_START_DTMF(cpars.transaction_id, "3");
-	dtmf_dtap.msgs.cc.startDTMF.nsd := int2bit(3, 2);
-	BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, true));
+	BSSAP.send(ts_PDU_DTAP_MO(dtmf_dtap, '00'O, false));
 	alt {
-	[] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "3")) { }
+	[] MNCC.receive(tr_MNCC_START_DTMF_ind(cpars.mncc_callref, "3")) {
+		log("f_mo_seq_dtmf_dup() 3: got second START_DTMF_ind");
+		}
 	[] T.timeout {
-		setverdict(fail, "Received duplicate START_DTMF_ind");
+		setverdict(fail, "Timeout waiting for final START_DTMF_ind");
 		mtc.stop;
 		}
 	}
 
+	f_call_hangup(cpars, true);
 	setverdict(pass);
 }
 
diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn
index fbb471e..c290d7c 100644
--- a/msc/MSC_Tests.ttcn
+++ b/msc/MSC_Tests.ttcn
@@ -1776,6 +1776,8 @@
 	cpars.bss_rtp_port := 1110;
 	cpars.mgcp_connection_id_bss := '22222'H;
 	cpars.mgcp_connection_id_mss := '33333'H;
+	cpars.mgcp_ep := "rtpbridge/1 at mgw";
+	cpars.mo_call := true;
 
 	f_perform_lu();
 	f_mo_seq_dtmf_dup(cpars);

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/15936
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: Ibfa8b906764f2d5ed75fe74125be42af4546e864
Gerrit-Change-Number: 15936
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191105/72a96e4f/attachment.htm>


More information about the gerrit-log mailing list