[PATCH] osmo-pcu[master]: Add test cases for Header type1 in EGPRS UL

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

arvind.sirsikar gerrit-no-reply at lists.osmocom.org
Tue Jun 14 13:34:56 UTC 2016


Review at  https://gerrit.osmocom.org/272

Add test cases for Header type1 in EGPRS UL

Update test suite with test cases for Header type 1 in EGPRS UL

Change-Id: I21811bb126dbe151b0708a964d3143bc2fd52389
---
M tests/edge/EdgeTest.cpp
M tests/edge/EdgeTest.ok
2 files changed, 124 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/72/272/1

diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp
index f8adbbb..8b5746a 100644
--- a/tests/edge/EdgeTest.cpp
+++ b/tests/edge/EdgeTest.cpp
@@ -1280,6 +1280,126 @@
 	printf("=== end %s ===\n", __func__);
 }
 
+static void uplink_header_type_1_parsing_test(BTS *the_bts,
+	uint8_t ts_no, uint32_t tlli, uint32_t *fn, uint16_t qta,
+	uint8_t ms_class)
+{
+	uint8_t trx_no = 0;
+	int tfi = 0;
+	struct gprs_rlcmac_pdch *pdch;
+	gprs_rlcmac_bts *bts;
+	uint8_t data[155] = {0};
+	struct gprs_rlc_ul_header_egprs_1 *egprs1  = NULL;
+	struct gprs_rlc_data_info rlc;
+	GprsCodingScheme cs;
+	int rc, offs;
+
+	egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;
+	bts = the_bts->bts_data();
+
+	tfi = 1;
+
+	/* MCS 7 */
+	cs = GprsCodingScheme::MCS7;
+	egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;
+	egprs1->si = 1;
+	egprs1->r = 1;
+	egprs1->cv = 7;
+	egprs1->tfi_a = tfi & 0x03;
+	egprs1->tfi_b = (tfi & 0x1c) >> 2;
+	egprs1->bsn1_a = 0;
+	egprs1->bsn1_b = 0;
+	egprs1->bsn2_a = 1;
+	egprs1->bsn2_b = 0;
+	egprs1->cps = 15;
+	egprs1->rsb = 0;
+	egprs1->pi = 0;
+	data[5] = 0xc0;
+	data[5 + 57] = 1;
+	rc = Decoding::rlc_parse_ul_data_header(&rlc, data, cs);
+	OSMO_ASSERT(rlc.num_data_blocks == 2);
+	OSMO_ASSERT(rlc.block_info[0].e == 1);
+	OSMO_ASSERT(rlc.block_info[0].ti == 1);
+	OSMO_ASSERT(rlc.block_info[1].e == 1);
+	OSMO_ASSERT(rlc.block_info[1].ti == 0);
+	OSMO_ASSERT(rlc.block_info[0].bsn == 0);
+	OSMO_ASSERT(rlc.block_info[1].bsn == 1);
+	OSMO_ASSERT(rlc.tfi == 1);
+
+	/* MCS 8 */
+	cs = GprsCodingScheme::MCS8;
+	egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;
+	egprs1->si = 1;
+	egprs1->r = 1;
+	egprs1->cv = 7;
+	egprs1->tfi_a = tfi & 0x03;
+	egprs1->tfi_b = (tfi & 0x1c) >> 2;
+	egprs1->bsn1_a = 0;
+	egprs1->bsn1_b = 0;
+	egprs1->bsn2_a = 1;
+	egprs1->bsn2_b = 0;
+	egprs1->cps = 15;
+	egprs1->rsb = 0;
+	egprs1->pi = 0;
+	data[5] = 0xc0;
+	data[5 + 69] = 1;
+	rc = Decoding::rlc_parse_ul_data_header(&rlc, data, cs);
+	OSMO_ASSERT(rlc.num_data_blocks == 2);
+	OSMO_ASSERT(rlc.block_info[0].e == 1);
+	OSMO_ASSERT(rlc.block_info[0].ti == 1);
+	OSMO_ASSERT(rlc.block_info[1].e == 1);
+	OSMO_ASSERT(rlc.block_info[1].ti == 0);
+	OSMO_ASSERT(rlc.block_info[0].bsn == 0);
+	OSMO_ASSERT(rlc.block_info[1].bsn == 1);
+	OSMO_ASSERT(rlc.tfi == 1);
+
+	/* MCS 9 */
+	cs = GprsCodingScheme::MCS9;
+	egprs1 = (struct gprs_rlc_ul_header_egprs_1 *) data;
+	egprs1->si = 1;
+	egprs1->r = 1;
+	egprs1->cv = 7;
+	egprs1->tfi_a = tfi & 0x03;
+	egprs1->tfi_b = (tfi & 0x1c) >> 2;
+	egprs1->bsn1_a = 0;
+	egprs1->bsn1_b = 0;
+	egprs1->bsn2_a = 1;
+	egprs1->bsn2_b = 0;
+	egprs1->cps = 15;
+	egprs1->rsb = 0;
+	egprs1->pi = 0;
+	data[5] = 0xc0;
+	data[5 + 75] = 1;
+	rc = Decoding::rlc_parse_ul_data_header(&rlc, data, cs);
+	OSMO_ASSERT(rlc.num_data_blocks == 2);
+	OSMO_ASSERT(rlc.block_info[0].e == 1);
+	OSMO_ASSERT(rlc.block_info[0].ti == 1);
+	OSMO_ASSERT(rlc.block_info[1].e == 1);
+	OSMO_ASSERT(rlc.block_info[1].ti == 0);
+	OSMO_ASSERT(rlc.block_info[0].bsn == 0);
+	OSMO_ASSERT(rlc.block_info[1].bsn == 1);
+	OSMO_ASSERT(rlc.tfi == 1);
+}
+
+void uplink_header_type1_test(void)
+{
+	BTS the_bts;
+	int ts_no = 7;
+	uint32_t fn = 2654218;
+	uint16_t qta = 31;
+	uint32_t tlli = 0xf1223344;
+	const char *imsi = "0011223344";
+	uint8_t ms_class = 1;
+	gprs_rlcmac_ul_tbf *ul_tbf;
+	GprsMs *ms;
+
+	printf("=== start %s ===\n", __func__);
+	setup_bts(&the_bts, ts_no, 12);
+	uplink_header_type_1_parsing_test(&the_bts, ts_no, tlli, &fn,
+			qta, ms_class);
+	printf("=== end %s ===\n", __func__);
+}
+
 int main(int argc, char **argv)
 {
 	struct vty_app_info pcu_vty_info = {0};
@@ -1303,6 +1423,8 @@
 	test_rlc_unit_encoder();
 
 	uplink_header_type2_test();
+	uplink_header_type1_test();
+
 	if (getenv("TALLOC_REPORT_FULL"))
 		talloc_report_full(tall_pcu_ctx, stderr);
 	return EXIT_SUCCESS;
diff --git a/tests/edge/EdgeTest.ok b/tests/edge/EdgeTest.ok
index 95ca60b..cdc5cc3 100644
--- a/tests/edge/EdgeTest.ok
+++ b/tests/edge/EdgeTest.ok
@@ -8,3 +8,5 @@
 === end test_rlc_unit_encoder ===
 === start uplink_header_type2_test ===
 === end uplink_header_type2_test ===
+=== start uplink_header_type1_test ===
+=== end uplink_header_type1_test ===

-- 
To view, visit https://gerrit.osmocom.org/272
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I21811bb126dbe151b0708a964d3143bc2fd52389
Gerrit-PatchSet: 1
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: arvind.sirsikar <arvind.sirsikar at radisys.com>



More information about the gerrit-log mailing list