Change in osmo-ttcn3-hacks[master]: PCU: add test case for EGPRS Packet Channel Request (signalling)

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

fixeria gerrit-no-reply at lists.osmocom.org
Wed Apr 1 19:37:06 UTC 2020


fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17706 )


Change subject: PCU: add test case for EGPRS Packet Channel Request (signalling)
......................................................................

PCU: add test case for EGPRS Packet Channel Request (signalling)

Change-Id: Ib5732956ea160f93d82f06bf82bea45501f439d2
---
M library/GSM_RR_Types.ttcn
M pcu/PCU_Tests_RAW.ttcn
2 files changed, 153 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/06/17706/1

diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn
index 9d71f80..208513e 100644
--- a/library/GSM_RR_Types.ttcn
+++ b/library/GSM_RR_Types.ttcn
@@ -908,6 +908,37 @@
 		}
 	};
 
+	template EgprsUlAss tr_EgprsUlAssDynamic(template BIT5 ext_ra := ?,
+						 template EgprsUlAssignDyn dyn_ass := ?) := {
+		ext_ra := ext_ra,
+		ats_present := ?,
+		ats := *,
+		presence := '1'B,
+		dynamic := dyn_ass,
+		multiblock := omit
+	};
+	template EgprsUlAss tr_EgprsUlAssMultiblock(template BIT5 ext_ra := ?,
+						    template EgprsUlAssignMultiblock mb_ass := ?) := {
+		ext_ra := ext_ra,
+		ats_present := ?,
+		ats := *,
+		presence := '0'B,
+		dynamic := omit,
+		multiblock := mb_ass
+	};
+
+	template IaRestOctets tr_IaRestOctets_EGPRSULAss(template EgprsUlAss ul_ass) := {
+		presence := '01'B, /* LH */
+		ll := omit,
+		lh := {
+			presence := '00'B,
+			egprs_ul := ul_ass,
+			multiblock_dl_ass := omit
+		},
+		hl := omit,
+		hh := omit
+	};
+
 	template (value) GsmRrMessage ts_IMM_ASS(uint8_t ra, GsmFrameNumber fn, TimingAdvance ta,
 						ChannelDescription ch_desc, MobileAllocation ma) := {
 		header := t_RrHeader(IMMEDIATE_ASSIGNMENT, 0),
diff --git a/pcu/PCU_Tests_RAW.ttcn b/pcu/PCU_Tests_RAW.ttcn
index 8e1d349..49a7308 100644
--- a/pcu/PCU_Tests_RAW.ttcn
+++ b/pcu/PCU_Tests_RAW.ttcn
@@ -287,6 +287,9 @@
 				   fn := fn, arfcn := 871,
 				   qta := ta * 4));
 
+	/* In case of 11-bit RACH, Request Reference in IA is set to 127 */
+	if (ra > oct2int('FF'O)) { ra := 127; }
+
 	/* Expect Immediate (TBF) Assignment on TS0/AGCH */
 	return f_pcuif_rx_imm_ass(rr_imm_ass, tr_IMM_TBF_ASS(?, ra, fn), bts_nr);
 }
@@ -1562,6 +1565,122 @@
 	f_tc_paging_ps_from_sgsn(mp_gb_cfg.bvci);
 }
 
+private function f_TC_egprs_pkt_chan_req(in EGPRSPktChRequest req,
+					 template GsmRrMessage t_imm_ass := ?,
+					 PCUIF_BurstType bt := BURST_TYPE_1)
+runs on RAW_PCU_Test_CT {
+	var GsmRrMessage rr_msg;
+	var uint16_t ra11;
+	var boolean ok;
+
+	ra11 := enc_EGPRSPktChRequest2uint(req);
+	log("Sending EGPRS Packet Channel Request (", ra11, "): ", req);
+
+	ok := f_establish_tbf(rr_msg, ra := ra11, is_11bit := 1, burst_type := bt);
+	if (not ok) {
+		setverdict(fail, "Failed to establush an Uplink TBF");
+		mtc.stop;
+	}
+
+	if (not match(rr_msg, t_imm_ass)) {
+		setverdict(fail, "Immediate Assignment does not match");
+		mtc.stop;
+	}
+
+	setverdict(pass);
+}
+
+testcase TC_egprs_pkt_chan_req_sign() runs on RAW_PCU_Test_CT {
+	var template GsmRrMessage imm_ass;
+	var template IaRestOctets rest;
+	var template EgprsUlAss ul_ass;
+
+	/* Initialize the PCU interface abstraction */
+	f_init_raw(testcasename());
+
+	var EGPRSPktChRequest req := {
+		/* NOTE: other fields are set in the loop */
+		signalling := { tag := '110011'B }
+	};
+
+	for (var integer i := 0; i < 6; i := i + 1) {
+		var BIT5 ext_ra := int2bit(f_rnd_int(32), 5);
+		req.signalling.random_bits := ext_ra;
+
+		/* For signalling, do we expect Multiblock UL TBF Assignment?
+		 * FIXME: somehow TITAN decodes different ext_ra value. */
+		ul_ass  := tr_EgprsUlAssMultiblock(ext_ra := ext_ra);
+		rest    := tr_IaRestOctets_EGPRSULAss(ul_ass);
+		imm_ass := tr_IMM_TBF_ASS(dl := false, rest := rest);
+
+		f_TC_egprs_pkt_chan_req(req, imm_ass);
+	}
+}
+
+testcase TC_egprs_pkt_chan_req_one_phase() runs on RAW_PCU_Test_CT {
+	var template GsmRrMessage imm_ass;
+	var template IaRestOctets rest;
+	var template EgprsUlAss ul_ass;
+
+	/* Initialize the PCU interface abstraction */
+	f_init_raw(testcasename());
+
+	var EGPRSPktChRequest req := {
+		/* NOTE: other fields are set in the loop */
+		one_phase := { tag := '0'B }
+	};
+
+	for (var integer i := 0; i < 6; i := i + 1) {
+		var BIT5 ext_ra := int2bit(f_rnd_int(32), 5);
+		var BIT5 mslot_class := int2bit(f_rnd_int(32), 5);
+		var BIT2 priority := substr(ext_ra, 0, 2);
+		var BIT3 rand := substr(ext_ra, 2, 3);
+
+		req.one_phase.multislot_class := mslot_class;
+		req.one_phase.priority := priority;
+		req.one_phase.random_bits := rand;
+
+		/* For one phase access, do we expect Dynamic UL TBF Assignment?
+		 * FIXME: somehow TITAN decodes different ext_ra value. */
+		ul_ass  := tr_EgprsUlAssDynamic(ext_ra := ext_ra);
+		rest    := tr_IaRestOctets_EGPRSULAss(ul_ass);
+		imm_ass := tr_IMM_TBF_ASS(dl := false, rest := rest);
+
+		f_TC_egprs_pkt_chan_req(req, imm_ass);
+	}
+}
+
+testcase TC_egprs_pkt_chan_req_two_phase() runs on RAW_PCU_Test_CT {
+	var template GsmRrMessage imm_ass;
+	var template IaRestOctets rest;
+	var template EgprsUlAss ul_ass;
+
+	/* Initialize the PCU interface abstraction */
+	f_init_raw(testcasename());
+
+	var EGPRSPktChRequest req := {
+		/* NOTE: other fields are set in the loop */
+		two_phase := { tag := '110000'B }
+	};
+
+	for (var integer i := 0; i < 6; i := i + 1) {
+		var BIT5 ext_ra := int2bit(f_rnd_int(32), 5);
+		var BIT2 priority := substr(ext_ra, 0, 2);
+		var BIT3 rand := substr(ext_ra, 2, 3);
+
+		req.two_phase.priority := priority;
+		req.two_phase.random_bits := rand;
+
+		/* For two phase access, do we expect Multiblock UL TBF Assignment?
+		 * FIXME: somehow TITAN decodes different ext_ra value. */
+		ul_ass  := tr_EgprsUlAssMultiblock(ext_ra := ext_ra);
+		rest    := tr_IaRestOctets_EGPRSULAss(ul_ass);
+		imm_ass := tr_IMM_TBF_ASS(dl := false, rest := rest);
+
+		f_TC_egprs_pkt_chan_req(req, imm_ass);
+	}
+}
+
 control {
 	execute( TC_pcuif_suspend() );
 	execute( TC_ta_ptcch_idle() );
@@ -1583,6 +1702,9 @@
 	execute( TC_paging_ps_from_sgsn_sign_ptmsi() );
 	execute( TC_paging_ps_from_sgsn_sign() );
 	execute( TC_paging_ps_from_sgsn_ptp() );
+	execute( TC_egprs_pkt_chan_req_sign() );
+	execute( TC_egprs_pkt_chan_req_one_phase() );
+	execute( TC_egprs_pkt_chan_req_two_phase() );
 }
 
 

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/17706
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: Ib5732956ea160f93d82f06bf82bea45501f439d2
Gerrit-Change-Number: 17706
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <axilirator at gmail.com>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200401/13e61283/attachment.htm>


More information about the gerrit-log mailing list