pcu: Rework test TC_ul_tbf_reestablish_with_pkt_resource_req_n3105_max to base it on T3168

N3105 is used for DL TBFs only (as tested by TC_n3105_max_t3195). The
test TC_ul_tbf_reestablish_with_pkt_resource_req_n3105_max is hence
wrongly written and should be based on T3168. Since recently, osmo-pcu
also moved to using T3168 in the scenario triggered by this test, hence
move to using it.

Related: osmo-pcu.git Change-Id I87dff68dedd06b60501e7586d20faf02bb1f0c93
Change-Id: Ibdfa9879cc56f5e2090cee0d3d70ee5df7c90454
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index f859b9b..9388f8f 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -3373,7 +3373,7 @@
  * ending, by means of sending a Packet Resource Request on ul slot provided by
  * last Pkt Ul ACK's RRBP. new Pkt Ul Ass is never confirmed by the MS in this test.
  * See 3GPP TS 44.060 sec 9.3.2.4.2 "Non-extended uplink TBF mode" */
-testcase TC_ul_tbf_reestablish_with_pkt_resource_req_n3105_max() runs on RAW_PCU_Test_CT {
+testcase TC_ul_tbf_reestablish_with_pkt_resource_req_t3168() runs on RAW_PCU_Test_CT {
 	var PCUIF_info_ind info_ind;
 	var RlcmacDlBlock dl_block;
 	var octetstring data := f_rnd_octstring(10);
@@ -3383,9 +3383,10 @@
 	var BTS_PDTCH_Block data_msg;
 	var template RlcmacDlBlock acknack_tmpl;
 	var GprsMS ms;
-	const integer N3105_MAX := 2;
-	var integer N3105 := 0;
-	timer T_3195 := 1.0 + 0.5; /* 0.5: extra offset since we cannot match exactly */
+	var integer cnt_rrbp := 0;
+	var integer cnt_dummy_after_timeout := 0;
+	/* Maximum T3168 value = 8 * 500 ms = 4s => * 4 retrans = 16s */
+	timer T_3168 := 16.0 + 0.5; /* 0.5: extra offset since we cannot match exactly */
 
 	/* Initialize NS/BSSGP side */
 	f_init_bssgp();
@@ -3395,9 +3396,7 @@
 
 	/* Initialize the PCU interface abstraction */
 	info_ind := valueof(ts_PCUIF_INFO_default(c_PCUIF_Flags_noMCS));
-	/* Speedup test: */
-	info_ind.n3105 := N3105_MAX;
-	info_ind.t3195 := 1;
+	/* TODO: Speedup test by sending a PCU_IF_SAPI_BCCH SI13 with T3168=0 (500ms) */
 	f_init_raw(testcasename(), info_ind);
 
 	/* Establish BSSGP connection to the PCU */
@@ -3423,6 +3422,7 @@
 	/* TODO: verify TBF_EST and FinalACK are both '1' above */
 
 	/* Send PACKET RESOURCE REQUEST to request a new UL TBF */
+	T_3168.start;
 	f_ms_tx_ul_block(ms, ts_RLC_UL_CTRL_ACK(ts_RlcMacUlCtrl_PKT_RES_REQ(ms.tlli, omit)), sched_fn);
 
 	/* Now Keep ignoring the Pkt Ul Ass on PACCH: */
@@ -3433,12 +3433,18 @@
 				  arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)),
 				  block_nr := nr.blk_nr));
 	alt {
-	[not T_3195.running] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
+	[] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
 					   tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),
 					   tr_RLCMAC_UL_PACKET_ASS)) -> value data_msg {
+		/* We should not be receiving PKT UL ASS anymore after T3168 timeout */
+		if (not T_3168.running) {
+			setverdict(fail, log2str("Unexpected PKT UL ASS after T3168 timeout: ", data_msg));
+			f_shutdown(__BFILE__, __LINE__);
+		}
+
 		if (f_dl_block_rrbp_valid(data_msg.dl_block)) {
-			log("Ignoring RRBP N3105 ", N3105);
-			N3105 := N3105 + 1;
+			log("Ignoring RRBP ", cnt_rrbp);
+			cnt_rrbp := cnt_rrbp + 1;
 		}
 		nr := ts_TsTrxBtsNum;
 		BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,
@@ -3447,15 +3453,9 @@
 					  block_nr := nr.blk_nr));
 		repeat;
 	}
-	/* At this point in time (N3105_MAX reached), PCU already moved TBF to
-	 * RELEASE state so no data for it is tx'ed, hence the dummy blocks:
-	 */
-	[N3105 == N3105_MAX] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
+	[] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
 					   tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),
 					   tr_RLCMAC_DL_DUMMY_CTRL)) -> value data_msg {
-		if (not T_3195.running) {
-			T_3195.start;
-		}
 		nr := ts_TsTrxBtsNum;
 		BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,
 					  sapi := PCU_IF_SAPI_PDTCH, fn := 0,
@@ -3463,44 +3463,25 @@
 					  block_nr := nr.blk_nr));
 		repeat;
 	}
-	[N3105 == N3105_MAX] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
+	[] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
 					   tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),
 					   omit)) -> value data_msg {
-		/* We may already receive idle blocks before our own TTCN3 timer
-		 * triggers due to the TBF being released. Keep going until our T_3195 triggers. */
-		nr := ts_TsTrxBtsNum;
-		BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,
-					  sapi := PCU_IF_SAPI_PDTCH, fn := 0,
-					  arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)),
-					  block_nr := nr.blk_nr));
-		repeat;
+
+		/* T3168 expired and we are not receiving blocks anymore, meaning PCU released the TBF. */
+		break;
 	}
-	/* We receive Dummy blocks in between Pkt Ul Ass while PCU waits for us to ack it */
-	[not T_3195.running] BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
-					   tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),
-					   tr_RLCMAC_DL_DUMMY_CTRL)) -> value data_msg {
-		log("Ignoring Dummy block FN ", data_msg.raw.fn);
-		nr := ts_TsTrxBtsNum;
-		BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,
-					  sapi := PCU_IF_SAPI_PDTCH, fn := 0,
-					  arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)),
-					  block_nr := nr.blk_nr));
-		repeat;
-	}
-	[T_3195.running] T_3195.timeout {
-		log("T_3195 timeout");
-		/* Done in alt, wait for pending RTS initiated previously in
-		 * above case before continuing (expect nothing to be sent since there's no active TBF): */
-		BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr,
-						tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),
-						omit));
-		}
 	[] BTS.receive {
 		setverdict(fail, "Unexpected BTS message");
 		f_shutdown(__BFILE__, __LINE__);
 	}
 	}
 
+	/* Check that we received at least a few PKT UL ASS before T3168 expiration */
+	if (cnt_rrbp <= 3) {
+		setverdict(fail, log2str("Received only ", cnt_rrbp, " before T3168 timeout!"));
+		f_shutdown(__BFILE__, __LINE__);
+	}
+
 	f_shutdown(__BFILE__, __LINE__, final := true);
 }
 
@@ -7145,7 +7126,7 @@
 	execute( TC_dl_multislot_tbf_ms_class_from_2phase() );
 	execute( TC_ul_multislot_tbf_ms_class_from_2phase() );
 	execute( TC_ul_tbf_reestablish_with_pkt_resource_req() );
-	execute( TC_ul_tbf_reestablish_with_pkt_resource_req_n3105_max() );
+	execute( TC_ul_tbf_reestablish_with_pkt_resource_req_t3168() );
 	execute( TC_ul_tbf_reestablish_with_pkt_dl_ack_nack() );
 	execute( TC_ul_tbf_reestablish_with_pkt_dl_ack_nack_egprs() );
 
diff --git a/pcu/expected-results.xml b/pcu/expected-results.xml
index 1f953aa..cdc4aec 100644
--- a/pcu/expected-results.xml
+++ b/pcu/expected-results.xml
@@ -95,7 +95,7 @@
   <testcase classname='PCU_Tests' name='TC_dl_multislot_tbf_ms_class_from_2phase' time='MASKED'/>
   <testcase classname='PCU_Tests' name='TC_ul_multislot_tbf_ms_class_from_2phase' time='MASKED'/>
   <testcase classname='PCU_Tests' name='TC_ul_tbf_reestablish_with_pkt_resource_req' time='MASKED'/>
-  <testcase classname='PCU_Tests' name='TC_ul_tbf_reestablish_with_pkt_resource_req_n3105_max' time='MASKED'/>
+  <testcase classname='PCU_Tests' name='TC_ul_tbf_reestablish_with_pkt_resource_req_t3168' time='MASKED'/>
   <testcase classname='PCU_Tests' name='TC_ul_tbf_reestablish_with_pkt_dl_ack_nack' time='MASKED'/>
   <testcase classname='PCU_Tests' name='TC_ul_tbf_reestablish_with_pkt_dl_ack_nack_egprs' time='MASKED'/>
   <testcase classname='PCU_Tests' name='TC_multiplex_dl_gprs_egprs' time='MASKED'/>