tests: TbfTest: Unify stderr and stdout to ease debugging

osmo-pcu code is really verbose, and since log lines printing start and
end of tests are sent to a different file, it's really difficult to
understand which test outputs what.

Change-Id: I3e887158e2c9585c360d44f12f995f55861170f2
This commit is contained in:
Pau Espin 2019-09-09 14:09:48 +02:00 committed by pespin
parent 38cfa734f4
commit 474dc77894
5 changed files with 153 additions and 154 deletions

View File

@ -138,7 +138,7 @@ EXTRA_DIST = \
testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \ testsuite.at $(srcdir)/package.m4 $(TESTSUITE) \
rlcmac/RLCMACTest.ok rlcmac/RLCMACTest.err \ rlcmac/RLCMACTest.ok rlcmac/RLCMACTest.err \
alloc/AllocTest.ok alloc/AllocTest.err \ alloc/AllocTest.ok alloc/AllocTest.err \
tbf/TbfTest.ok tbf/TbfTest.err \ tbf/TbfTest.err \
bitcomp/BitcompTest.ok bitcomp/BitcompTest.err \ bitcomp/BitcompTest.ok bitcomp/BitcompTest.err \
types/TypesTest.ok types/TypesTest.err \ types/TypesTest.ok types/TypesTest.err \
ms/MsTest.ok ms/MsTest.err alloc/MslotTest.ok \ ms/MsTest.ok ms/MsTest.err alloc/MslotTest.ok \

View File

@ -61,12 +61,12 @@ static void check_tbf(gprs_rlcmac_tbf *tbf)
static void test_tbf_base() static void test_tbf_base()
{ {
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
OSMO_ASSERT(GPRS_RLCMAC_DL_TBF == reverse(GPRS_RLCMAC_UL_TBF)); OSMO_ASSERT(GPRS_RLCMAC_DL_TBF == reverse(GPRS_RLCMAC_UL_TBF));
OSMO_ASSERT(GPRS_RLCMAC_UL_TBF == reverse(GPRS_RLCMAC_DL_TBF)); OSMO_ASSERT(GPRS_RLCMAC_UL_TBF == reverse(GPRS_RLCMAC_DL_TBF));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_tlli_update() static void test_tbf_tlli_update()
@ -74,7 +74,7 @@ static void test_tbf_tlli_update()
BTS the_bts; BTS the_bts;
GprsMs *ms, *ms_new; GprsMs *ms, *ms_new;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
the_bts.bts_data()->alloc_algorithm = alloc_algorithm_a; the_bts.bts_data()->alloc_algorithm = alloc_algorithm_a;
the_bts.bts_data()->trx[0].pdch[2].enable(); the_bts.bts_data()->trx[0].pdch[2].enable();
@ -134,7 +134,7 @@ static void test_tbf_tlli_update()
OSMO_ASSERT(ul_tbf->ta() == 6); OSMO_ASSERT(ul_tbf->ta() == 6);
OSMO_ASSERT(dl_tbf->ta() == 6); OSMO_ASSERT(dl_tbf->ta() == 6);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static uint8_t llc_data[200]; static uint8_t llc_data[200];
@ -241,7 +241,7 @@ static void test_tbf_final_ack(enum test_tbf_final_ack_mode test_mode)
uint8_t rbb[64/8]; uint8_t rbb[64/8];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
gprs_rlcmac_tbf *new_tbf; gprs_rlcmac_tbf *new_tbf;
@ -297,7 +297,7 @@ static void test_tbf_final_ack(enum test_tbf_final_ack_mode test_mode)
OSMO_ASSERT(ms->dl_tbf() == NULL); OSMO_ASSERT(ms->dl_tbf() == NULL);
} }
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
/* Receive an ACK */ /* Receive an ACK */
@ -322,7 +322,7 @@ static void test_tbf_delayed_release()
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bts = the_bts.bts_data(); bts = the_bts.bts_data();
@ -373,7 +373,7 @@ static void test_tbf_delayed_release()
TBF_SET_ASS_STATE_DL(dl_tbf, GPRS_RLCMAC_DL_ASS_NONE); TBF_SET_ASS_STATE_DL(dl_tbf, GPRS_RLCMAC_DL_ASS_NONE);
check_tbf(dl_tbf); check_tbf(dl_tbf);
tbf_free(dl_tbf); tbf_free(dl_tbf);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_imsi() static void test_tbf_imsi()
@ -386,7 +386,7 @@ static void test_tbf_imsi()
gprs_rlcmac_dl_tbf *dl_tbf[2]; gprs_rlcmac_dl_tbf *dl_tbf[2];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no); setup_bts(&the_bts, ts_no);
@ -431,7 +431,7 @@ static void test_tbf_imsi()
ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002"); ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002");
OSMO_ASSERT(ms1 == NULL); OSMO_ASSERT(ms1 == NULL);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_exhaustion() static void test_tbf_exhaustion()
@ -445,7 +445,7 @@ static void test_tbf_exhaustion()
uint8_t buf[256] = {0}; uint8_t buf[256] = {0};
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx); bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx);
if (!bssgp_nsi) { if (!bssgp_nsi) {
@ -472,7 +472,7 @@ static void test_tbf_exhaustion()
} }
OSMO_ASSERT(rc == -EBUSY); OSMO_ASSERT(rc == -EBUSY);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
gprs_bssgp_destroy(); gprs_bssgp_destroy();
} }
@ -497,7 +497,7 @@ static void test_tbf_dl_llc_loss()
abort(); abort();
} }
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bts = the_bts.bts_data(); bts = the_bts.bts_data();
setup_bts(&the_bts, ts_no); setup_bts(&the_bts, ts_no);
@ -550,13 +550,13 @@ static void test_tbf_dl_llc_loss()
msg = ms->dl_tbf()->create_dl_acked_block(fn += 4, 7); msg = ms->dl_tbf()->create_dl_acked_block(fn += 4, 7);
fprintf(stderr, "MSG = %s\n", msgb_hexdump(msg)); fprintf(stderr, "MSG = %s\n", msgb_hexdump(msg));
if (!msgb_eq_data_print(msg, exp[expected_data - 1], GSM_MACBLOCK_LEN)) if (!msgb_eq_data_print(msg, exp[expected_data - 1], GSM_MACBLOCK_LEN))
printf("%s failed at %u\n", __func__, expected_data); fprintf(stderr, "%s failed at %u\n", __func__, expected_data);
expected_data += 1; expected_data += 1;
} }
OSMO_ASSERT(expected_data-1 == 3); OSMO_ASSERT(expected_data-1 == 3);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
gprs_bssgp_destroy(); gprs_bssgp_destroy();
} }
@ -756,7 +756,7 @@ static gprs_rlcmac_ul_tbf *puan_urbb_len_issue(BTS *the_bts,
}; };
if (!msgb_eq_data_print(msg1, exp1, GSM_MACBLOCK_LEN)) { if (!msgb_eq_data_print(msg1, exp1, GSM_MACBLOCK_LEN)) {
printf("%s test failed on 1st segment!\n", __func__); fprintf(stderr, "%s test failed on 1st segment!\n", __func__);
return NULL; return NULL;
} }
@ -783,7 +783,7 @@ static gprs_rlcmac_ul_tbf *puan_urbb_len_issue(BTS *the_bts,
}; };
if (!msgb_eq_data_print(msg1, exp2, GSM_MACBLOCK_LEN)) { if (!msgb_eq_data_print(msg1, exp2, GSM_MACBLOCK_LEN)) {
printf("%s test failed on 2nd segment!\n", __func__); fprintf(stderr, "%s test failed on 2nd segment!\n", __func__);
return NULL; return NULL;
} }
return ul_tbf; return ul_tbf;
@ -1712,7 +1712,7 @@ static void test_tbf_single_phase()
uint16_t qta = 31; uint16_t qta = 31;
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no); setup_bts(&the_bts, ts_no);
@ -1721,7 +1721,7 @@ static void test_tbf_single_phase()
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, (const uint8_t *)"TEST", 4); send_dl_data(&the_bts, tlli, imsi, (const uint8_t *)"TEST", 4);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_egprs_two_phase_puan(void) static void test_tbf_egprs_two_phase_puan(void)
@ -1738,7 +1738,7 @@ static void test_tbf_egprs_two_phase_puan(void)
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
uint8_t test_data[256]; uint8_t test_data[256];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
memset(test_data, 1, sizeof(test_data)); memset(test_data, 1, sizeof(test_data));
@ -1775,7 +1775,7 @@ static void test_tbf_egprs_two_phase_puan(void)
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data)); send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
/* /*
* Trigger rach for single block * Trigger rach for single block
@ -1787,7 +1787,7 @@ static void test_immediate_assign_rej_single_block()
uint16_t qta = 31; uint16_t qta = 31;
int ts_no = 7; int ts_no = 7;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 4); setup_bts(&the_bts, ts_no, 4);
@ -1806,7 +1806,7 @@ static void test_immediate_assign_rej_single_block()
OSMO_ASSERT(rc == -EINVAL); OSMO_ASSERT(rc == -EINVAL);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
/* /*
@ -1819,7 +1819,7 @@ static void test_immediate_assign_rej_multi_block()
uint16_t qta = 31; uint16_t qta = 31;
int ts_no = 7; int ts_no = 7;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 4); setup_bts(&the_bts, ts_no, 4);
@ -1850,7 +1850,7 @@ static void test_immediate_assign_rej_multi_block()
OSMO_ASSERT(rc == -EBUSY); OSMO_ASSERT(rc == -EBUSY);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_immediate_assign_rej() static void test_immediate_assign_rej()
@ -1870,7 +1870,7 @@ static void test_tbf_two_phase()
uint8_t ms_class = 1; uint8_t ms_class = 1;
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 4); setup_bts(&the_bts, ts_no, 4);
@ -1880,7 +1880,7 @@ static void test_tbf_two_phase()
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, (const uint8_t *)"TEST", 4); send_dl_data(&the_bts, tlli, imsi, (const uint8_t *)"TEST", 4);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static inline void print_ms(const GprsMs *ms, bool old) static inline void print_ms(const GprsMs *ms, bool old)
@ -1902,7 +1902,7 @@ static void test_tbf_ra_update_rach()
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
GprsMs *ms, *ms1, *ms2; GprsMs *ms, *ms1, *ms2;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 4); setup_bts(&the_bts, ts_no, 4);
@ -1950,7 +1950,7 @@ static void test_tbf_ra_update_rach()
ms = the_bts.ms_by_tlli(tlli2); ms = the_bts.ms_by_tlli(tlli2);
OSMO_ASSERT(ms == ms2); OSMO_ASSERT(ms == ms2);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_dl_flow_and_rach_two_phase() static void test_tbf_dl_flow_and_rach_two_phase()
@ -1966,7 +1966,7 @@ static void test_tbf_dl_flow_and_rach_two_phase()
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
GprsMs *ms, *ms1, *ms2; GprsMs *ms, *ms1, *ms2;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 1); setup_bts(&the_bts, ts_no, 1);
@ -2008,7 +2008,7 @@ static void test_tbf_dl_flow_and_rach_two_phase()
/* No queued packets should be lost */ /* No queued packets should be lost */
OSMO_ASSERT(ms->llc_queue()->size() == 2); OSMO_ASSERT(ms->llc_queue()->size() == 2);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
@ -2025,7 +2025,7 @@ static void test_tbf_dl_flow_and_rach_single_phase()
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
GprsMs *ms, *ms1, *ms2; GprsMs *ms, *ms1, *ms2;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 1); setup_bts(&the_bts, ts_no, 1);
@ -2067,7 +2067,7 @@ static void test_tbf_dl_flow_and_rach_single_phase()
/* No queued packets should be lost */ /* No queued packets should be lost */
OSMO_ASSERT(ms->llc_queue()->size() == 2); OSMO_ASSERT(ms->llc_queue()->size() == 2);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_dl_reuse() static void test_tbf_dl_reuse()
@ -2085,7 +2085,7 @@ static void test_tbf_dl_reuse()
unsigned i; unsigned i;
RlcMacUplink_t ulreq = {0}; RlcMacUplink_t ulreq = {0};
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 1); setup_bts(&the_bts, ts_no, 1);
@ -2165,7 +2165,7 @@ static void test_tbf_dl_reuse()
OSMO_ASSERT(ms2->dl_tbf()); OSMO_ASSERT(ms2->dl_tbf());
OSMO_ASSERT(ms2->dl_tbf()->state_is(GPRS_RLCMAC_FINISHED)); OSMO_ASSERT(ms2->dl_tbf()->state_is(GPRS_RLCMAC_FINISHED));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_gprs_egprs() static void test_tbf_gprs_egprs()
@ -2181,7 +2181,7 @@ static void test_tbf_gprs_egprs()
uint8_t buf[256] = {0}; uint8_t buf[256] = {0};
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx); bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx);
if (!bssgp_nsi) { if (!bssgp_nsi) {
@ -2202,7 +2202,7 @@ static void test_tbf_gprs_egprs()
delay_csec, buf, sizeof(buf)); delay_csec, buf, sizeof(buf));
OSMO_ASSERT(rc == -EBUSY); OSMO_ASSERT(rc == -EBUSY);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
gprs_bssgp_destroy(); gprs_bssgp_destroy();
} }
@ -2230,7 +2230,7 @@ static inline void ws_check(gprs_rlcmac_dl_tbf *dl_tbf, const char *test, uint8_
tbf_free(dl_tbf); tbf_free(dl_tbf);
if (end) { if (end) {
printf("=== end %s ===\n", test); fprintf(stderr, "=== end %s ===\n", test);
gprs_bssgp_destroy(); gprs_bssgp_destroy();
} }
} }
@ -2243,7 +2243,7 @@ static void test_tbf_ws()
uint8_t ms_class = 12; uint8_t ms_class = 12;
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx); bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx);
if (!bssgp_nsi) { if (!bssgp_nsi) {
@ -2286,7 +2286,7 @@ static void test_tbf_update_ws(void)
uint8_t ms_class = 11; uint8_t ms_class = 11;
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx); bssgp_nsi = gprs_ns_instantiate(&gprs_bssgp_ns_cb, tall_pcu_ctx);
if (!bssgp_nsi) { if (!bssgp_nsi) {
@ -2334,7 +2334,7 @@ static void test_tbf_puan_urbb_len(void)
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
uint8_t test_data[256]; uint8_t test_data[256];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
memset(test_data, 1, sizeof(test_data)); memset(test_data, 1, sizeof(test_data));
@ -2348,7 +2348,7 @@ static void test_tbf_puan_urbb_len(void)
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data)); send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static gprs_rlcmac_ul_tbf *tbf_li_decoding(BTS *the_bts, static gprs_rlcmac_ul_tbf *tbf_li_decoding(BTS *the_bts,
@ -2479,7 +2479,7 @@ static void test_tbf_li_decoding(void)
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
uint8_t test_data[256]; uint8_t test_data[256];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
memset(test_data, 1, sizeof(test_data)); memset(test_data, 1, sizeof(test_data));
@ -2493,7 +2493,7 @@ static void test_tbf_li_decoding(void)
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data)); send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
/* /*
@ -2522,7 +2522,7 @@ static void test_tbf_epdan_out_of_rx_window(void)
memset(&ul_control_block, 0, sizeof(RlcMacUplink_t)); memset(&ul_control_block, 0, sizeof(RlcMacUplink_t));
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bts = the_bts.bts_data(); bts = the_bts.bts_data();
@ -2589,7 +2589,7 @@ static void test_tbf_epdan_out_of_rx_window(void)
bitvec_free(block); bitvec_free(block);
tbf_free(dl_tbf); tbf_free(dl_tbf);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_egprs_two_phase_spb(void) static void test_tbf_egprs_two_phase_spb(void)
@ -2605,7 +2605,7 @@ static void test_tbf_egprs_two_phase_spb(void)
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
uint8_t test_data[256]; uint8_t test_data[256];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
memset(test_data, 1, sizeof(test_data)); memset(test_data, 1, sizeof(test_data));
@ -2619,7 +2619,7 @@ static void test_tbf_egprs_two_phase_spb(void)
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data)); send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_egprs_two_phase() static void test_tbf_egprs_two_phase()
@ -2635,7 +2635,7 @@ static void test_tbf_egprs_two_phase()
gprs_rlcmac_ul_tbf *ul_tbf; gprs_rlcmac_ul_tbf *ul_tbf;
uint8_t test_data[256]; uint8_t test_data[256];
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
memset(test_data, 1, sizeof(test_data)); memset(test_data, 1, sizeof(test_data));
@ -2649,7 +2649,7 @@ static void test_tbf_egprs_two_phase()
print_ta_tlli(ul_tbf, true); print_ta_tlli(ul_tbf, true);
send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data)); send_dl_data(&the_bts, tlli, imsi, test_data, sizeof(test_data));
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void establish_and_use_egprs_dl_tbf(BTS *the_bts, int mcs) static void establish_and_use_egprs_dl_tbf(BTS *the_bts, int mcs)
@ -2666,7 +2666,7 @@ static void establish_and_use_egprs_dl_tbf(BTS *the_bts, int mcs)
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
printf("Testing MCS-%d\n", mcs); fprintf(stderr, "Testing MCS-%d\n", mcs);
memset(test_data, 1, sizeof(test_data)); memset(test_data, 1, sizeof(test_data));
the_bts->bts_data()->initial_mcs_dl = mcs; the_bts->bts_data()->initial_mcs_dl = mcs;
@ -2794,7 +2794,7 @@ static void egprs_spb_to_normal_validation(BTS *the_bts,
struct gprs_rlc_dl_header_egprs_3 *egprs3; struct gprs_rlc_dl_header_egprs_3 *egprs3;
struct gprs_rlc_dl_header_egprs_2 *egprs2; struct gprs_rlc_dl_header_egprs_2 *egprs2;
printf("Testing retx for MCS %u to reseg_mcs %u\n", mcs, demanded_mcs); fprintf(stderr, "Testing retx for MCS %u to reseg_mcs %u\n", mcs, demanded_mcs);
dl_tbf = tbf_init(the_bts, mcs); dl_tbf = tbf_init(the_bts, mcs);
@ -2874,7 +2874,7 @@ static void establish_and_use_egprs_dl_tbf_for_spb(BTS *the_bts,
struct msgb *msg; struct msgb *msg;
struct gprs_rlc_dl_header_egprs_3 *egprs3; struct gprs_rlc_dl_header_egprs_3 *egprs3;
printf("Testing retx for MCS %u to reseg_mcs %u\n", mcs, demanded_mcs); fprintf(stderr, "Testing retx for MCS %u to reseg_mcs %u\n", mcs, demanded_mcs);
dl_tbf = tbf_init(the_bts, mcs); dl_tbf = tbf_init(the_bts, mcs);
@ -2962,7 +2962,7 @@ static void establish_and_use_egprs_dl_tbf_for_retx(BTS *the_bts,
gprs_rlcmac_dl_tbf *dl_tbf; gprs_rlcmac_dl_tbf *dl_tbf;
struct msgb *msg; struct msgb *msg;
printf("Testing retx for MCS %u - %u\n", mcs, demanded_mcs); fprintf(stderr, "Testing retx for MCS %u - %u\n", mcs, demanded_mcs);
dl_tbf = tbf_init(the_bts, mcs); dl_tbf = tbf_init(the_bts, mcs);
@ -3057,7 +3057,7 @@ static void test_tbf_egprs_retx_dl(void)
gprs_rlcmac_bts *bts; gprs_rlcmac_bts *bts;
uint8_t ts_no = 4; uint8_t ts_no = 4;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bts = the_bts.bts_data(); bts = the_bts.bts_data();
bts->cs_downgrade_threshold = 0; bts->cs_downgrade_threshold = 0;
@ -3077,7 +3077,7 @@ static void test_tbf_egprs_retx_dl(void)
establish_and_use_egprs_dl_tbf_for_retx(&the_bts, 7, 5); establish_and_use_egprs_dl_tbf_for_retx(&the_bts, 7, 5);
establish_and_use_egprs_dl_tbf_for_retx(&the_bts, 9, 6); establish_and_use_egprs_dl_tbf_for_retx(&the_bts, 9, 6);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_egprs_spb_dl(void) static void test_tbf_egprs_spb_dl(void)
@ -3086,7 +3086,7 @@ static void test_tbf_egprs_spb_dl(void)
gprs_rlcmac_bts *bts; gprs_rlcmac_bts *bts;
uint8_t ts_no = 4; uint8_t ts_no = 4;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bts = the_bts.bts_data(); bts = the_bts.bts_data();
bts->cs_downgrade_threshold = 0; bts->cs_downgrade_threshold = 0;
@ -3108,7 +3108,7 @@ static void test_tbf_egprs_spb_dl(void)
/* check MCS6->(MCS3+MCS3)->MCS6 case */ /* check MCS6->(MCS3+MCS3)->MCS6 case */
egprs_spb_to_normal_validation(&the_bts, 6, 3); egprs_spb_to_normal_validation(&the_bts, 6, 3);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_tbf_egprs_dl() static void test_tbf_egprs_dl()
@ -3118,7 +3118,7 @@ static void test_tbf_egprs_dl()
uint8_t ts_no = 4; uint8_t ts_no = 4;
int i; int i;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
bts = the_bts.bts_data(); bts = the_bts.bts_data();
@ -3131,7 +3131,7 @@ static void test_tbf_egprs_dl()
for (i = 1; i <= 9; i++) for (i = 1; i <= 9; i++)
establish_and_use_egprs_dl_tbf(&the_bts, i); establish_and_use_egprs_dl_tbf(&the_bts, i);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
@ -3145,7 +3145,7 @@ static void test_packet_access_rej_prr_no_other_tbfs()
uint32_t tlli = 0xffeeddcc; uint32_t tlli = 0xffeeddcc;
struct gprs_rlcmac_ul_tbf *ul_tbf = NULL; struct gprs_rlcmac_ul_tbf *ul_tbf = NULL;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 4); setup_bts(&the_bts, ts_no, 4);
@ -3166,7 +3166,7 @@ static void test_packet_access_rej_prr_no_other_tbfs()
ul_tbf->handle_timeout(); ul_tbf->handle_timeout();
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
static void test_packet_access_rej_prr() static void test_packet_access_rej_prr()
@ -3186,7 +3186,7 @@ static void test_packet_access_rej_prr()
MS_Radio_Access_capability_t *pmsradiocap = NULL; MS_Radio_Access_capability_t *pmsradiocap = NULL;
Multislot_capability_t *pmultislotcap = NULL; Multislot_capability_t *pmultislotcap = NULL;
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, ts_no, 4); setup_bts(&the_bts, ts_no, 4);
@ -3241,7 +3241,7 @@ static void test_packet_access_rej_prr()
OSMO_ASSERT(rc == 0); OSMO_ASSERT(rc == 0);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }
void test_packet_access_rej_epdan() void test_packet_access_rej_epdan()
@ -3253,7 +3253,7 @@ void test_packet_access_rej_epdan()
0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b
}; };
printf("=== start %s ===\n", __func__); fprintf(stderr, "=== start %s ===\n", __func__);
setup_bts(&the_bts, 4); setup_bts(&the_bts, 4);
static gprs_rlcmac_dl_tbf *dl_tbf = tbf_init(&the_bts, 1); static gprs_rlcmac_dl_tbf *dl_tbf = tbf_init(&the_bts, 1);
@ -3261,13 +3261,13 @@ void test_packet_access_rej_epdan()
struct msgb *msg = dl_tbf->create_packet_access_reject(); struct msgb *msg = dl_tbf->create_packet_access_reject();
printf("packet reject: %s\n", fprintf(stderr, "packet reject: %s\n",
osmo_hexdump(msg->data, 23)); osmo_hexdump(msg->data, 23));
if (!msgb_eq_data_print(msg, exp, GSM_MACBLOCK_LEN)) if (!msgb_eq_data_print(msg, exp, GSM_MACBLOCK_LEN))
printf("%s test failed!\n", __func__); fprintf(stderr, "%s test failed!\n", __func__);
printf("=== end %s ===\n", __func__); fprintf(stderr, "=== end %s ===\n", __func__);
} }

View File

@ -1,3 +1,6 @@
=== start test_tbf_base ===
=== end test_tbf_base ===
=== start test_tbf_tlli_update ===
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
Allocating DL TBF: MS_CLASS=0/0 Allocating DL TBF: MS_CLASS=0/0
Creating MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000
@ -35,6 +38,8 @@ Modifying MS object, TLLI: 0x00000000 -> 0x00002342, already confirmed partly
The MS object cannot fully confirm an unexpected TLLI: 0x00004232, partly confirmed The MS object cannot fully confirm an unexpected TLLI: 0x00004232, partly confirmed
Modifying MS object, TLLI: 0x00002342 -> 0x00004232, already confirmed partly Modifying MS object, TLLI: 0x00002342 -> 0x00004232, already confirmed partly
Modifying MS object, TLLI = 0x00004232, TA 4 -> 6 Modifying MS object, TLLI = 0x00004232, TA 4 -> 6
=== end test_tbf_tlli_update ===
=== start test_tbf_final_ack ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -123,6 +128,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING),
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING)
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
=== end test_tbf_final_ack ===
=== start test_tbf_final_ack ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -211,6 +218,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING),
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING)
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
=== end test_tbf_final_ack ===
=== start test_tbf_delayed_release ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -464,6 +473,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING),
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_delayed_release ===
=== start test_tbf_imsi ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -529,6 +540,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=RELEASING),
Detaching TBF from MS object, TLLI = 0xf1000002, TBF = TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=RELEASING) Detaching TBF from MS object, TLLI = 0xf1000002, TBF = TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=RELEASING)
Destroying MS object, TLLI = 0xf1000002 Destroying MS object, TLLI = 0xf1000002
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_imsi ===
=== start test_tbf_exhaustion ===
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
Allocating DL TBF: MS_CLASS=45/0 Allocating DL TBF: MS_CLASS=45/0
Creating MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000
@ -1336,7 +1349,9 @@ Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
[DL] Slot Allocation (Algorithm A) for class 45 [DL] Slot Allocation (Algorithm A) for class 45
[DL] algo A <single> (suggested TRX: -1): failed to find a usable TRX (TFI exhausted) [DL] algo A <single> (suggested TRX: -1): failed to find a usable TRX (TFI exhausted)
No PDCH resource No PDCH resource
=== end test_tbf_exhaustion ===
Destroying MS object, TLLI = 0x00000000 Destroying MS object, TLLI = 0x00000000
=== start test_tbf_dl_llc_loss ===
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
Allocating DL TBF: MS_CLASS=45/0 Allocating DL TBF: MS_CLASS=45/0
Creating MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000
@ -1424,6 +1439,8 @@ TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=FINISHED) Scheduling Ack/Nack polling, be
TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=FINISHED) Polling cannot be scheduled in this TS 7 (first control TS 4) TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=FINISHED) Polling cannot be scheduled in this TS 7 (first control TS 4)
TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=FINISHED) msg block (BSN 2, CS-1): 07 01 04 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=FINISHED) msg block (BSN 2, CS-1): 07 01 04 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
MSG = 07 01 04 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 MSG = 07 01 04 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
=== end test_tbf_dl_llc_loss ===
=== start test_tbf_single_phase ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
MS requests UL TBF on RACH, so we provide one: ra=0x03 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x03 Fn=2654167 qta=31 is_11bit=0:
@ -1496,6 +1513,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH) TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
- TRX=0 (0) TS=7 TA=7 pollFN=-1 - TRX=0 (0) TS=7 TA=7 pollFN=-1
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes
=== end test_tbf_single_phase ===
=== start test_tbf_two_phase ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -1578,6 +1597,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0] TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev CCCH:0, PACCH:0]
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes
=== end test_tbf_two_phase ===
=== start test_tbf_ra_update_rach ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -1777,6 +1798,8 @@ Clearing MS object, TLLI: 0xf1223344, IMSI: '0011223344'
TBF(TFI=0 TLLI=0xf5667788 DIR=DL STATE=FINISHED) appending 4 bytes TBF(TFI=0 TLLI=0xf5667788 DIR=DL STATE=FINISHED) appending 4 bytes
Modifying MS object, TLLI: 0xf5667788 confirmed Modifying MS object, TLLI: 0xf5667788 confirmed
New MS: TLLI = 0xf5667788, TA = 7, IMSI = 0011223344, LLC = 1 New MS: TLLI = 0xf5667788, TA = 7, IMSI = 0011223344, LLC = 1
=== end test_tbf_ra_update_rach ===
=== start test_tbf_dl_flow_and_rach_two_phase ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -1948,6 +1971,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Assembling frames: (len=20)
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Frame 1 starts at offset 0, length=20, is_complete=0 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) Frame 1 starts at offset 0, length=20, is_complete=0
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) No gaps in received block, last block: BSN=0 CV=15 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) No gaps in received block, last block: BSN=0 CV=15
New MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2 New MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2
=== end test_tbf_dl_flow_and_rach_two_phase ===
=== start test_tbf_dl_flow_and_rach_single_phase ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -2097,6 +2122,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FINISHED) Scheduling Ack/Nack, because TL
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FINISHED) Scheduling Ack/Nack, because last block has CV==0. TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FINISHED) Scheduling Ack/Nack, because last block has CV==0.
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FINISHED) changes UL ACK state from GPRS_RLCMAC_UL_ACK_NONE to GPRS_RLCMAC_UL_ACK_SEND_ACK TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FINISHED) changes UL ACK state from GPRS_RLCMAC_UL_ACK_NONE to GPRS_RLCMAC_UL_ACK_SEND_ACK
New MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2 New MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 2
=== end test_tbf_dl_flow_and_rach_single_phase ===
=== start test_tbf_dl_reuse ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -3031,8 +3058,12 @@ TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled DL Acknowledgement po
TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 5 sec. 0 microsec, cur_fn=0 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final block (DL-TBF)] with 5 sec. 0 microsec, cur_fn=0
TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=2654461, TS=7 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on FN=2654461, TS=7
TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 10, CS-1): 0f 03 14 4d 43 20 50 41 43 4b 45 54 20 30 39 20 28 54 42 46 20 32 29 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 10, CS-1): 0f 03 14 4d 43 20 50 41 43 4b 45 54 20 30 39 20 28 54 42 46 20 32 29
=== end test_tbf_dl_reuse ===
=== start test_tbf_gprs_egprs ===
Not accepting non-EGPRS phone in EGPRS-only mode Not accepting non-EGPRS phone in EGPRS-only mode
No PDCH resource No PDCH resource
=== end test_tbf_gprs_egprs ===
=== start test_tbf_ws ===
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
Allocating DL TBF: MS_CLASS=12/0 Allocating DL TBF: MS_CLASS=12/0
Creating MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000
@ -3111,6 +3142,8 @@ PDCH(TS 5, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0x00000000 Destroying MS object, TLLI = 0x00000000
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_ws ===
=== start test_tbf_egprs_two_phase ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -3201,6 +3234,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to AS
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0]
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
=== end test_tbf_egprs_two_phase ===
=== start test_tbf_egprs_two_phase_spb ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -3421,6 +3456,9 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to AS
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0]
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
=== end test_tbf_egprs_two_phase_spb ===
=== start test_tbf_egprs_dl ===
Testing MCS-1
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -3727,6 +3765,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-2
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -3983,6 +4022,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-3
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -4201,6 +4241,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-4
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -4387,6 +4428,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-5
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -4553,6 +4595,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-6
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -4701,6 +4744,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-7
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -4844,6 +4888,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-8
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -4976,6 +5021,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing MCS-9
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5108,6 +5154,9 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_egprs_dl ===
=== start test_tbf_egprs_retx_dl ===
Testing retx for MCS 6 - 6
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5163,6 +5212,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 1 - 9
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5218,6 +5268,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 2 - 8
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5273,6 +5324,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 5 - 7
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5344,6 +5396,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 6 - 9
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5415,6 +5468,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 7 - 5
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5486,6 +5540,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 9 - 6
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5557,6 +5612,9 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_egprs_retx_dl ===
=== start test_tbf_egprs_spb_dl ===
Testing retx for MCS 6 to reseg_mcs 3
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5619,6 +5677,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 5 to reseg_mcs 2
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5681,6 +5740,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 4 to reseg_mcs 1
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5743,6 +5803,7 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
Testing retx for MCS 6 to reseg_mcs 3
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -5812,6 +5873,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_egprs_spb_dl ===
=== start test_tbf_puan_urbb_len ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -5921,6 +5984,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to AS
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0]
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
=== end test_tbf_puan_urbb_len ===
=== start test_tbf_update_ws ===
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
Allocating DL TBF: MS_CLASS=11/11 Allocating DL TBF: MS_CLASS=11/11
Creating MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000
@ -5973,6 +6038,8 @@ PDCH(TS 5, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0x00000000 Destroying MS object, TLLI = 0x00000000
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_update_ws ===
=== start test_tbf_li_decoding ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -6076,6 +6143,8 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to AS
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0] TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev CCCH:0, PACCH:0]
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 [assignment (PACCH)] with 2 sec. 0 microsec, cur_fn=0
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
=== end test_tbf_li_decoding ===
=== start test_tbf_epdan_out_of_rx_window ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -6115,6 +6184,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** DL-TBF ends here ********** ********** DL-TBF ends here **********
=== end test_tbf_epdan_out_of_rx_window ===
=== start test_immediate_assign_rej_multi_block ===
MS requests UL TBF on RACH, so we provide one: ra=0x78 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x78 Fn=2654167 qta=31 is_11bit=0:
********** UL-TBF starts here ********** ********** UL-TBF starts here **********
Allocating UL TBF: MS_CLASS=0/0 Allocating UL TBF: MS_CLASS=0/0
@ -6305,11 +6376,15 @@ Creating MS object, TLLI = 0x00000000
- Skipping TS 7, because no USF available - Skipping TS 7, because no USF available
[UL] algo A <single> (suggested TRX: -1): failed to allocate a TS, no USF available [UL] algo A <single> (suggested TRX: -1): failed to allocate a TS, no USF available
No PDCH resource sending Immediate Assignment Uplink (AGCH) reject No PDCH resource sending Immediate Assignment Uplink (AGCH) reject
=== end test_immediate_assign_rej_multi_block ===
Destroying MS object, TLLI = 0x00000000 Destroying MS object, TLLI = 0x00000000
=== start test_immediate_assign_rej_single_block ===
MS requests UL TBF on RACH, so we provide one: ra=0x70 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x70 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
No PDCH available. No PDCH available.
No PDCH resource for single block allocation.sending Immediate Assignment Uplink (AGCH) reject No PDCH resource for single block allocation.sending Immediate Assignment Uplink (AGCH) reject
=== end test_immediate_assign_rej_single_block ===
=== start test_tbf_egprs_two_phase_puan ===
MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 is_11bit=0:
MS requests single block allocation MS requests single block allocation
RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270 RX: [PCU <- BTS] RACH qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
@ -7711,6 +7786,8 @@ Received RTS for PDCH: TRX=0 TS=7 FN=2654283 block_nr=11 scheduling USF=0 for re
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS)', TA=7 Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS)', TA=7
Got MS: TLLI = 0xf1223344, TA = 7 Got MS: TLLI = 0xf1223344, TA = 7
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
=== end test_tbf_egprs_two_phase_puan ===
=== start test_packet_access_rej_epdan ===
Searching for first unallocated TFI: TRX=0 Searching for first unallocated TFI: TRX=0
Found TFI=0. Found TFI=0.
********** DL-TBF starts here ********** ********** DL-TBF starts here **********
@ -7736,6 +7813,9 @@ TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes DL ASS state from GPRS_RLCM
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
The MS object cannot fully confirm an unexpected TLLI: 0xffeeddcc, partly confirmed The MS object cannot fully confirm an unexpected TLLI: 0xffeeddcc, partly confirmed
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) appending 100 bytes TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) appending 100 bytes
packet reject: 40 84 7f f7 6e e6 41 4b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
=== end test_packet_access_rej_epdan ===
=== start test_packet_access_rej_prr ===
MS requests UL TBF on RACH, so we provide one: ra=0x78 Fn=2654167 qta=31 is_11bit=0: MS requests UL TBF on RACH, so we provide one: ra=0x78 Fn=2654167 qta=31 is_11bit=0:
********** UL-TBF starts here ********** ********** UL-TBF starts here **********
Allocating UL TBF: MS_CLASS=0/0 Allocating UL TBF: MS_CLASS=0/0
@ -7940,7 +8020,9 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) changes UL ASS state from GPRS_RL
Received RTS for PDCH: TRX=0 TS=7 FN=2654218 block_nr=8 scheduling USF=0 for required uplink resource of UL TFI=0 Received RTS for PDCH: TRX=0 TS=7 FN=2654218 block_nr=8 scheduling USF=0 for required uplink resource of UL TFI=0
TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec, cur_fn=0 TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) starting timer T0 [reject (PACCH)] with 0 sec. 2000 microsec, cur_fn=0
Scheduling control message at RTS for TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) (TRX=0, TS=7) Scheduling control message at RTS for TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) (TRX=0, TS=7)
=== end test_packet_access_rej_prr ===
Destroying MS object, TLLI = 0x00000000 Destroying MS object, TLLI = 0x00000000
=== start test_packet_access_rej_prr_no_other_tbfs ===
Creating MS object, TLLI = 0x00000000 Creating MS object, TLLI = 0x00000000
Modifying MS object, UL TLLI: 0x00000000 -> 0xffeeddcc, not yet confirmed Modifying MS object, UL TLLI: 0x00000000 -> 0xffeeddcc, not yet confirmed
TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN
@ -7955,3 +8037,4 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) stopping timer T0 [freeing TBF]
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN)
Destroying MS object, TLLI = 0xffeeddcc Destroying MS object, TLLI = 0xffeeddcc
********** UL-TBF ends here ********** ********** UL-TBF ends here **********
=== end test_packet_access_rej_prr_no_other_tbfs ===

View File

@ -1,83 +0,0 @@
=== start test_tbf_base ===
=== end test_tbf_base ===
=== start test_tbf_tlli_update ===
=== end test_tbf_tlli_update ===
=== start test_tbf_final_ack ===
=== end test_tbf_final_ack ===
=== start test_tbf_final_ack ===
=== end test_tbf_final_ack ===
=== start test_tbf_delayed_release ===
=== end test_tbf_delayed_release ===
=== start test_tbf_imsi ===
=== end test_tbf_imsi ===
=== start test_tbf_exhaustion ===
=== end test_tbf_exhaustion ===
=== start test_tbf_dl_llc_loss ===
=== end test_tbf_dl_llc_loss ===
=== start test_tbf_single_phase ===
=== end test_tbf_single_phase ===
=== start test_tbf_two_phase ===
=== end test_tbf_two_phase ===
=== start test_tbf_ra_update_rach ===
=== end test_tbf_ra_update_rach ===
=== start test_tbf_dl_flow_and_rach_two_phase ===
=== end test_tbf_dl_flow_and_rach_two_phase ===
=== start test_tbf_dl_flow_and_rach_single_phase ===
=== end test_tbf_dl_flow_and_rach_single_phase ===
=== start test_tbf_dl_reuse ===
=== end test_tbf_dl_reuse ===
=== start test_tbf_gprs_egprs ===
=== end test_tbf_gprs_egprs ===
=== start test_tbf_ws ===
=== end test_tbf_ws ===
=== start test_tbf_egprs_two_phase ===
=== end test_tbf_egprs_two_phase ===
=== start test_tbf_egprs_two_phase_spb ===
=== end test_tbf_egprs_two_phase_spb ===
=== start test_tbf_egprs_dl ===
Testing MCS-1
Testing MCS-2
Testing MCS-3
Testing MCS-4
Testing MCS-5
Testing MCS-6
Testing MCS-7
Testing MCS-8
Testing MCS-9
=== end test_tbf_egprs_dl ===
=== start test_tbf_egprs_retx_dl ===
Testing retx for MCS 6 - 6
Testing retx for MCS 1 - 9
Testing retx for MCS 2 - 8
Testing retx for MCS 5 - 7
Testing retx for MCS 6 - 9
Testing retx for MCS 7 - 5
Testing retx for MCS 9 - 6
=== end test_tbf_egprs_retx_dl ===
=== start test_tbf_egprs_spb_dl ===
Testing retx for MCS 6 to reseg_mcs 3
Testing retx for MCS 5 to reseg_mcs 2
Testing retx for MCS 4 to reseg_mcs 1
Testing retx for MCS 6 to reseg_mcs 3
=== end test_tbf_egprs_spb_dl ===
=== start test_tbf_puan_urbb_len ===
=== end test_tbf_puan_urbb_len ===
=== start test_tbf_update_ws ===
=== end test_tbf_update_ws ===
=== start test_tbf_li_decoding ===
=== end test_tbf_li_decoding ===
=== start test_tbf_epdan_out_of_rx_window ===
=== end test_tbf_epdan_out_of_rx_window ===
=== start test_immediate_assign_rej_multi_block ===
=== end test_immediate_assign_rej_multi_block ===
=== start test_immediate_assign_rej_single_block ===
=== end test_immediate_assign_rej_single_block ===
=== start test_tbf_egprs_two_phase_puan ===
=== end test_tbf_egprs_two_phase_puan ===
=== start test_packet_access_rej_epdan ===
packet reject: 40 84 7f f7 6e e6 41 4b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
=== end test_packet_access_rej_epdan ===
=== start test_packet_access_rej_prr ===
=== end test_packet_access_rej_prr ===
=== start test_packet_access_rej_prr_no_other_tbfs ===
=== end test_packet_access_rej_prr_no_other_tbfs ===

View File

@ -24,9 +24,8 @@ AT_CLEANUP
AT_SETUP([tbf]) AT_SETUP([tbf])
AT_KEYWORDS([tbf]) AT_KEYWORDS([tbf])
cat $abs_srcdir/tbf/TbfTest.ok > expout
cat $abs_srcdir/tbf/TbfTest.err > experr cat $abs_srcdir/tbf/TbfTest.err > experr
AT_CHECK([$OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest], [0], [expout], [experr]) AT_CHECK([$OSMO_QEMU $abs_top_builddir/tests/tbf/TbfTest], [0], [ignore], [experr])
AT_CLEANUP AT_CLEANUP
AT_SETUP([bitcomp]) AT_SETUP([bitcomp])