From 14f9772f146dd8890bfbe15eb030d7fedbeb6ab8 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 1 Oct 2017 11:09:47 +0800 Subject: [PATCH] gsm0408_test: Verify that BA-IND is 0 in SI2xxx and 1 in SI5xxx This adds a test case to explicitly verify the BA-IND is as expected by the behaviour introduced in Change-Id I1cd0dc51026dcd0e508e63eea4e333e6b184787a Related: OS#2525 Change-Id: I3e5b260af97ce96a221e4d51f6c1b41d58817a59 --- tests/gsm0408/gsm0408_test.c | 63 +++++++++++++++++++++++++++++++++++ tests/gsm0408/gsm0408_test.ok | 11 +++--- 2 files changed, 70 insertions(+), 4 deletions(-) diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c index d5a5363be..72a177277 100644 --- a/tests/gsm0408/gsm0408_test.c +++ b/tests/gsm0408/gsm0408_test.c @@ -647,6 +647,67 @@ static void test_si_range_helpers() VERIFY(f0, ==, 1); } +static void test_si_ba_ind(void) +{ + struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL); + struct gsm_bts *bts = gsm_bts_alloc(network, 0); + const struct gsm48_system_information_type_2 *si2 = + (struct gsm48_system_information_type_2 *) GSM_BTS_SI(bts, SYSINFO_TYPE_2); + const struct gsm48_system_information_type_2bis *si2bis = + (struct gsm48_system_information_type_2bis *) GSM_BTS_SI(bts, SYSINFO_TYPE_2bis); + const struct gsm48_system_information_type_2ter *si2ter = + (struct gsm48_system_information_type_2ter *) GSM_BTS_SI(bts, SYSINFO_TYPE_2ter); + const struct gsm48_system_information_type_5 *si5 = + (struct gsm48_system_information_type_5 *) GSM_BTS_SI(bts, SYSINFO_TYPE_5); + const struct gsm48_system_information_type_5bis *si5bis = + (struct gsm48_system_information_type_5bis *) GSM_BTS_SI(bts, SYSINFO_TYPE_5bis); + const struct gsm48_system_information_type_5ter *si5ter = + (struct gsm48_system_information_type_5ter *) GSM_BTS_SI(bts, SYSINFO_TYPE_5ter); + + int rc; + + bts->network = network; + bts->c0->arfcn = 23; + + printf("Testing if BA-IND is set as expected in SI2xxx and SI5xxx\n"); + + rc = gsm_generate_si(bts, SYSINFO_TYPE_2); + OSMO_ASSERT(rc > 0); + printf("SI2: %s\n", osmo_hexdump((uint8_t *)si2, rc)); + /* Validate BA-IND == 0 */ + OSMO_ASSERT(!(si2->bcch_frequency_list[0] & 0x10)); + + rc = gsm_generate_si(bts, SYSINFO_TYPE_2bis); + OSMO_ASSERT(rc > 0); + printf("SI2bis: %s\n", osmo_hexdump((uint8_t *)si2bis, rc)); + /* Validate BA-IND == 0 */ + OSMO_ASSERT(!(si2bis->bcch_frequency_list[0] & 0x10)); + + rc = gsm_generate_si(bts, SYSINFO_TYPE_2ter); + OSMO_ASSERT(rc > 0); + printf("SI2ter: %s\n", osmo_hexdump((uint8_t *)si2ter, rc)); + /* Validate BA-IND == 0 */ + OSMO_ASSERT(!(si2ter->ext_bcch_frequency_list[0] & 0x10)); + + rc = gsm_generate_si(bts, SYSINFO_TYPE_5); + OSMO_ASSERT(rc > 0); + printf("SI5: %s\n", osmo_hexdump((uint8_t *)si5, rc)); + /* Validate BA-IND == 1 */ + OSMO_ASSERT(si5->bcch_frequency_list[0] & 0x10); + + rc = gsm_generate_si(bts, SYSINFO_TYPE_5bis); + OSMO_ASSERT(rc > 0); + printf("SI5bis: %s\n", osmo_hexdump((uint8_t *)si5bis, rc)); + /* Validate BA-IND == 1 */ + OSMO_ASSERT(si5bis->bcch_frequency_list[0] & 0x10); + + rc = gsm_generate_si(bts, SYSINFO_TYPE_5ter); + OSMO_ASSERT(rc > 0); + printf("SI5ter: %s\n", osmo_hexdump((uint8_t *)si5ter, rc)); + /* Validate BA-IND == 1 */ + OSMO_ASSERT(si5ter->bcch_frequency_list[0] & 0x10); +} + int main(int argc, char **argv) { osmo_init_logging(&log_info); @@ -666,6 +727,8 @@ int main(int argc, char **argv) test_si2q_mu(); test_si2q_long(); + test_si_ba_ind(); + printf("Done.\n"); return EXIT_SUCCESS; diff --git a/tests/gsm0408/gsm0408_test.ok b/tests/gsm0408/gsm0408_test.ok index 8eba927f0..d23cebb02 100644 --- a/tests/gsm0408/gsm0408_test.ok +++ b/tests/gsm0408/gsm0408_test.ok @@ -58,10 +58,6 @@ Random range test: range 127, max num ARFCNs 29 Random range test: range 255, max num ARFCNs 22 Random range test: range 511, max num ARFCNs 18 Random range test: range 1023, max num ARFCNs 16 -testing RP-Reference wrap -Allocated reference: 255 -Allocated reference: 0 -Allocated reference: 1 Test SI2quater UARFCN (same scrambling code and diversity): generating SI2quater for 0 EARFCNs and 1 UARFCNs... generated valid SI2quater [00/00]: [23] 59 06 07 40 00 25 52 88 0a 7e 0b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b @@ -201,4 +197,11 @@ generated valid SI2quater [02/05]: [23] 59 06 07 44 a0 04 86 59 83 c2 ec 20 ff 6 generated valid SI2quater [03/05]: [23] 59 06 07 46 a0 04 86 59 84 21 54 21 4f 61 0a 99 08 55 b7 2e ca c1 2b generated valid SI2quater [04/05]: [23] 59 06 07 48 a0 04 86 59 84 2b 54 21 27 61 09 59 08 4b b7 2e ca c1 2b generated valid SI2quater [05/05]: [23] 59 06 07 4a a0 04 86 59 84 26 53 97 65 60 2b 2b 2b 2b 2b 2b 2b 2b 2b +Testing if BA-IND is set as expected in SI2xxx and SI5xxx +SI2: 59 06 1a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +SI2bis: 59 06 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +SI2ter: 59 06 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +SI5: 06 1d 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +SI5bis: 06 05 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +SI5ter: 06 06 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Done.