diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/alloc/AllocTest.cpp | 75 | ||||
-rw-r--r-- | tests/app_info/AppInfoTest.cpp | 4 | ||||
-rw-r--r-- | tests/app_info/AppInfoTest.err | 11 | ||||
-rw-r--r-- | tests/edge/EdgeTest.cpp | 7 | ||||
-rw-r--r-- | tests/llc/LlcTest.cpp | 80 | ||||
-rw-r--r-- | tests/ms/MsTest.cpp | 474 | ||||
-rw-r--r-- | tests/tbf/TbfTest.cpp | 155 | ||||
-rw-r--r-- | tests/types/TypesTest.cpp | 32 |
8 files changed, 421 insertions, 417 deletions
diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 8ebf1594..17cee462 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -224,12 +224,12 @@ static inline bool test_alloc_b_ul_dl(bool ts0, bool ts1, bool ts2, bool ts3, bo return false; OSMO_ASSERT(ul_tbf->ms()); - OSMO_ASSERT(ul_tbf->ms()->current_trx()); + OSMO_ASSERT(ms_current_trx(ul_tbf->ms())); dump_assignment(ul_tbf, "UL", verbose); /* assume final ack has not been sent */ - dl_tbf = tbf_alloc_dl_tbf(bts, ms, ms->current_trx()->trx_no, false); + dl_tbf = tbf_alloc_dl_tbf(bts, ms, ms_current_trx(ms)->trx_no, false); if (!dl_tbf) return false; @@ -268,11 +268,11 @@ static inline bool test_alloc_b_dl_ul(bool ts0, bool ts1, bool ts2, bool ts3, bo dl_tbf->update_ms(0x23, GPRS_RLCMAC_DL_TBF); OSMO_ASSERT(dl_tbf->ms() == ms); - OSMO_ASSERT(dl_tbf->ms()->current_trx()); + OSMO_ASSERT(ms_current_trx(dl_tbf->ms())); dump_assignment(dl_tbf, "DL", verbose); - ul_tbf = tbf_alloc_ul_tbf(bts, ms, ms->current_trx()->trx_no, false); + ul_tbf = tbf_alloc_ul_tbf(bts, ms, ms_current_trx(ms)->trx_no, false); if (!ul_tbf) return false; @@ -319,8 +319,8 @@ static inline bool test_alloc_b_jolly(uint8_t ms_class) return false; OSMO_ASSERT(ul_tbf->ms() == ms); - OSMO_ASSERT(ul_tbf->ms()->current_trx()); - trx_no = ms->current_trx()->trx_no; + OSMO_ASSERT(ms_current_trx(ul_tbf->ms())); + trx_no = ms_current_trx(ms)->trx_no; dump_assignment(ul_tbf, "UL", true); /* assume final ack has not been sent */ @@ -453,50 +453,55 @@ static inline char *test_mode_descr(enum test_mode t) } } -static GprsMs *alloc_tbfs(BTS *the_bts, GprsMs *ms, enum test_mode mode) +static GprsMs *alloc_tbfs(BTS *the_bts, struct GprsMs *old_ms, enum test_mode mode) { struct gprs_rlcmac_bts *bts; + struct GprsMs *ms, *new_ms; uint8_t trx_no = -1; - OSMO_ASSERT(ms != NULL); + OSMO_ASSERT(old_ms != NULL); bts = the_bts->bts_data(); gprs_rlcmac_tbf *tbf = NULL; - if (ms && ms->current_trx()) - trx_no = ms->current_trx()->trx_no; + if (ms_current_trx(old_ms)) + trx_no = ms_current_trx(old_ms)->trx_no; - GprsMs::Guard guard1(ms); + ms_ref(old_ms); /* Allocate what is needed first */ switch (mode) { case TEST_MODE_UL_ONLY: case TEST_MODE_DL_AFTER_UL: case TEST_MODE_UL_AND_DL: - if (ms->ul_tbf()) - tbf_free(ms->ul_tbf()); - tbf = tbf_alloc_ul_tbf(bts, ms, trx_no, false); - if (tbf == NULL) + if (ms_ul_tbf(old_ms)) + tbf_free(ms_ul_tbf(old_ms)); + tbf = tbf_alloc_ul_tbf(bts, old_ms, trx_no, false); + if (tbf == NULL) { + ms_unref(old_ms); return NULL; + } break; case TEST_MODE_DL_ONLY: case TEST_MODE_UL_AFTER_DL: case TEST_MODE_DL_AND_UL: - if (ms->dl_tbf()) - tbf_free(ms->dl_tbf()); - tbf = tbf_alloc_dl_tbf(bts, ms, trx_no, false); - if (tbf == NULL) + if (ms_dl_tbf(old_ms)) + tbf_free(ms_dl_tbf(old_ms)); + tbf = tbf_alloc_dl_tbf(bts, old_ms, trx_no, false); + if (tbf == NULL) { + ms_unref(old_ms); return NULL; + } } OSMO_ASSERT(tbf); OSMO_ASSERT(tbf->ms()); - OSMO_ASSERT(ms == NULL || ms == tbf->ms()); + OSMO_ASSERT(old_ms == tbf->ms()); ms = tbf->ms(); - GprsMs::Guard guard2(ms); - + ms_ref(ms); + new_ms = ms; /* Continue with what is needed next */ switch (mode) { case TEST_MODE_UL_ONLY: @@ -506,12 +511,12 @@ static GprsMs *alloc_tbfs(BTS *the_bts, GprsMs *ms, enum test_mode mode) case TEST_MODE_DL_AFTER_UL: case TEST_MODE_UL_AND_DL: - ms = alloc_tbfs(the_bts, ms, TEST_MODE_DL_ONLY); + new_ms = alloc_tbfs(the_bts, ms, TEST_MODE_DL_ONLY); break; case TEST_MODE_UL_AFTER_DL: case TEST_MODE_DL_AND_UL: - ms = alloc_tbfs(the_bts, ms, TEST_MODE_UL_ONLY); + new_ms = alloc_tbfs(the_bts, ms, TEST_MODE_UL_ONLY); break; } @@ -527,10 +532,12 @@ static GprsMs *alloc_tbfs(BTS *the_bts, GprsMs *ms, enum test_mode mode) break; } - if (!ms && tbf) + if (!new_ms && tbf) tbf_free(tbf); - return guard2.is_idle() ? NULL : ms; + ms_unref(old_ms); + ms_unref(ms); + return new_ms; } static unsigned alloc_many_tbfs(BTS *the_bts, unsigned min_class, @@ -556,16 +563,16 @@ static unsigned alloc_many_tbfs(BTS *the_bts, unsigned min_class, ms = the_bts->ms_by_tlli(tlli); if (!ms) ms = the_bts->ms_alloc(0, 0); - ms->set_ms_class(ms_class); + ms_set_ms_class(ms, ms_class); ms = alloc_tbfs(the_bts, ms, mode); if (!ms) break; - ms->set_tlli(tlli); + ms_set_tlli(ms, tlli); - ul_tbf = ms->ul_tbf(); - dl_tbf = ms->dl_tbf(); - trx = ms->current_trx(); + ul_tbf = ms_ul_tbf(ms); + dl_tbf = ms_dl_tbf(ms); + trx = ms_current_trx(ms); OSMO_ASSERT(ul_tbf || dl_tbf); @@ -616,12 +623,12 @@ static unsigned alloc_many_tbfs(BTS *the_bts, unsigned min_class, get_dir_char(0x80, ul_slots, dl_slots, busy_slots)); if (tfi >= 0) { - OSMO_ASSERT(ms->current_trx()); + OSMO_ASSERT(ms_current_trx(ms)); tfi2 = the_bts->tfi_find_free(dir, &trx_no2, - ms->current_trx()->trx_no); + ms_current_trx(ms)->trx_no); OSMO_ASSERT(tfi != tfi2); OSMO_ASSERT(tfi2 < 0 || - trx_no2 == ms->current_trx()->trx_no); + trx_no2 == ms_current_trx(ms)->trx_no); } ms_class += 1; diff --git a/tests/app_info/AppInfoTest.cpp b/tests/app_info/AppInfoTest.cpp index cd4454d1..6e335389 100644 --- a/tests/app_info/AppInfoTest.cpp +++ b/tests/app_info/AppInfoTest.cpp @@ -152,9 +152,9 @@ void cleanup() { fprintf(stderr, "--- %s ---\n", __func__); + tbf_free(tbf1); + tbf_free(tbf2); BTS::main_bts()->cleanup(); - talloc_free(tbf1); - talloc_free(tbf2); /* FIXME: talloc report disabled, because bts->ms_alloc() in prepare_bts_with_two_dl_tbf_subscr() causes leak */ /* talloc_report_full(tall_pcu_ctx, stderr); */ talloc_free(tall_pcu_ctx); diff --git a/tests/app_info/AppInfoTest.err b/tests/app_info/AppInfoTest.err index ae20ea38..9b0910f2 100644 --- a/tests/app_info/AppInfoTest.err +++ b/tests/app_info/AppInfoTest.err @@ -52,3 +52,14 @@ Previous Packet Application Information was not sent to all subscribers, overwri Sending Packet Application Information to 2 subscribers with active TBF --- cleanup --- +PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 1 TBFs, USFs = 00, TFIs = 00000002. +PDCH(TS 5, TRX 0): Detaching TBF(TFI=0 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 1 TBFs, USFs = 00, TFIs = 00000002. +PDCH(TS 6, TRX 0): Detaching TBF(TFI=0 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 1 TBFs, USFs = 00, TFIs = 00000002. +PDCH(TS 7, TRX 0): Detaching TBF(TFI=0 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 0 TBFs, USFs = 00, TFIs = 00000000. +Detaching TBF from MS object, TLLI = 0xffffffff, TBF = TBF(TFI=0 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS) +PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 0 TBFs, USFs = 00, TFIs = 00000000. +PDCH(TS 5, TRX 0): Detaching TBF(TFI=1 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 0 TBFs, USFs = 00, TFIs = 00000000. +PDCH(TS 6, TRX 0): Detaching TBF(TFI=1 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS), 0 TBFs, USFs = 00, TFIs = 00000000. +Detaching TBF from MS object, TLLI = 0xffffffff, TBF = TBF(TFI=1 TLLI=0xffffffff DIR=DL STATE=RELEASING EGPRS) +Destroying MS object, TLLI = 0xffffffff +Destroying MS object, TLLI = 0xffffffff diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp index 67ed2a73..8fa76dd5 100644 --- a/tests/edge/EdgeTest.cpp +++ b/tests/edge/EdgeTest.cpp @@ -619,7 +619,7 @@ static void test_rlc_unit_encoder() write_offset = 0; memset(data, 0, sizeof(data)); - OSMO_ASSERT(llc.chunk_size() == 1); + OSMO_ASSERT(llc_chunk_size(&llc) == 1); count_payload = -1; @@ -767,7 +767,7 @@ static void test_rlc_unit_encoder() write_offset = 0; memset(data, 0, sizeof(data)); - OSMO_ASSERT(llc.chunk_size() == 10); + OSMO_ASSERT(llc_chunk_size(&llc) == 10); count_payload = -1; ar = Encoding::rlc_data_to_dl_append(&rdbi, cs, @@ -899,7 +899,7 @@ static void test_rlc_unit_encoder() write_offset = 0; memset(data, 0, sizeof(data)); - OSMO_ASSERT(llc.chunk_size() == 0); + OSMO_ASSERT(llc_chunk_size(&llc) == 0); count_payload = -1; ar = Encoding::rlc_data_to_dl_append(&rdbi, cs, @@ -1167,7 +1167,6 @@ static void uplink_header_type_2_parsing_test(BTS *the_bts, uint8_t ts_no, uint32_t tlli, uint32_t *fn, uint16_t qta, uint8_t ms_class) { - struct pcu_l1_meas meas; int tfi = 0; uint8_t data[79] = {0}; struct gprs_rlc_ul_header_egprs_2 *egprs2 = NULL; diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp index 10cd96bd..bfcac778 100644 --- a/tests/llc/LlcTest.cpp +++ b/tests/llc/LlcTest.cpp @@ -60,10 +60,10 @@ static void enqueue_data(gprs_llc_queue *queue, const uint8_t *data, size_t len, } static void dequeue_and_check(gprs_llc_queue *queue, const uint8_t *exp_data, - size_t len, const gprs_llc_queue::MetaInfo *exp_info) + size_t len, const MetaInfo *exp_info) { struct msgb *llc_msg; - const gprs_llc_queue::MetaInfo *info_res; + const MetaInfo *info_res; llc_msg = queue->dequeue(&info_res); OSMO_ASSERT(llc_msg != NULL); @@ -88,7 +88,7 @@ static void enqueue_data(gprs_llc_queue *queue, const char *message, } static void dequeue_and_check(gprs_llc_queue *queue, const char *exp_message, - const gprs_llc_queue::MetaInfo *exp_info = 0) + const MetaInfo *exp_info = 0) { dequeue_and_check(queue, (uint8_t *)(exp_message), strlen(exp_message), exp_info); @@ -101,33 +101,33 @@ static void test_llc_queue() printf("=== start %s ===\n", __func__); - queue.init(); - OSMO_ASSERT(queue.size() == 0); - OSMO_ASSERT(queue.octets() == 0); + llc_queue_init(&queue); + OSMO_ASSERT(llc_queue_size(&queue) == 0); + OSMO_ASSERT(llc_queue_octets(&queue) == 0); enqueue_data(&queue, "LLC message", &expire_time); - OSMO_ASSERT(queue.size() == 1); - OSMO_ASSERT(queue.octets() == 11); + OSMO_ASSERT(llc_queue_size(&queue) == 1); + OSMO_ASSERT(llc_queue_octets(&queue) == 11); enqueue_data(&queue, "other LLC message", &expire_time); - OSMO_ASSERT(queue.size() == 2); - OSMO_ASSERT(queue.octets() == 28); + OSMO_ASSERT(llc_queue_size(&queue) == 2); + OSMO_ASSERT(llc_queue_octets(&queue) == 28); dequeue_and_check(&queue, "LLC message"); - OSMO_ASSERT(queue.size() == 1); - OSMO_ASSERT(queue.octets() == 17); + OSMO_ASSERT(llc_queue_size(&queue) == 1); + OSMO_ASSERT(llc_queue_octets(&queue) == 17); dequeue_and_check(&queue, "other LLC message"); - OSMO_ASSERT(queue.size() == 0); - OSMO_ASSERT(queue.octets() == 0); + OSMO_ASSERT(llc_queue_size(&queue) == 0); + OSMO_ASSERT(llc_queue_octets(&queue) == 0); enqueue_data(&queue, "LLC", &expire_time); - OSMO_ASSERT(queue.size() == 1); - OSMO_ASSERT(queue.octets() == 3); + OSMO_ASSERT(llc_queue_size(&queue) == 1); + OSMO_ASSERT(llc_queue_octets(&queue) == 3); - queue.clear(NULL); - OSMO_ASSERT(queue.size() == 0); - OSMO_ASSERT(queue.octets() == 0); + llc_queue_clear(&queue, NULL); + OSMO_ASSERT(llc_queue_size(&queue) == 0); + OSMO_ASSERT(llc_queue_octets(&queue) == 0); printf("=== end %s ===\n", __func__); } @@ -135,14 +135,14 @@ static void test_llc_queue() static void test_llc_meta() { gprs_llc_queue queue; - gprs_llc_queue::MetaInfo info1 = {0}; - gprs_llc_queue::MetaInfo info2 = {0}; + MetaInfo info1 = {0}; + MetaInfo info2 = {0}; printf("=== start %s ===\n", __func__); - queue.init(); - OSMO_ASSERT(queue.size() == 0); - OSMO_ASSERT(queue.octets() == 0); + llc_queue_init(&queue); + OSMO_ASSERT(llc_queue_size(&queue) == 0); + OSMO_ASSERT(llc_queue_octets(&queue) == 0); info1.recv_time.tv_sec = 123456777; info1.recv_time.tv_nsec = 123456000; @@ -161,9 +161,9 @@ static void test_llc_meta() dequeue_and_check(&queue, "LLC message 1", &info1); dequeue_and_check(&queue, "LLC message 2", &info2); - queue.clear(NULL); - OSMO_ASSERT(queue.size() == 0); - OSMO_ASSERT(queue.octets() == 0); + llc_queue_clear(&queue, NULL); + OSMO_ASSERT(llc_queue_size(&queue) == 0); + OSMO_ASSERT(llc_queue_octets(&queue) == 0); printf("=== end %s ===\n", __func__); } @@ -176,8 +176,8 @@ static void test_llc_merge() printf("=== start %s ===\n", __func__); - queue1.init(); - queue2.init(); + llc_queue_init(&queue1); + llc_queue_init(&queue2); clk_mono_override_time->tv_sec += 1; enqueue_data(&queue1, "*A*", &expire_time); @@ -194,17 +194,17 @@ static void test_llc_merge() clk_mono_override_time->tv_sec += 1; enqueue_data(&queue2, "*E*", &expire_time); - OSMO_ASSERT(queue1.size() == 3); - OSMO_ASSERT(queue1.octets() == 9); - OSMO_ASSERT(queue2.size() == 2); - OSMO_ASSERT(queue2.octets() == 6); + OSMO_ASSERT(llc_queue_size(&queue1) == 3); + OSMO_ASSERT(llc_queue_octets(&queue1) == 9); + OSMO_ASSERT(llc_queue_size(&queue2) == 2); + OSMO_ASSERT(llc_queue_octets(&queue2) == 6); - queue2.move_and_merge(&queue1); + llc_queue_move_and_merge(&queue2, &queue1); - OSMO_ASSERT(queue1.size() == 0); - OSMO_ASSERT(queue1.octets() == 0); - OSMO_ASSERT(queue2.size() == 5); - OSMO_ASSERT(queue2.octets() == 15); + OSMO_ASSERT(llc_queue_size(&queue1) == 0); + OSMO_ASSERT(llc_queue_octets(&queue1) == 0); + OSMO_ASSERT(llc_queue_size(&queue2) == 5); + OSMO_ASSERT(llc_queue_octets(&queue2) == 15); dequeue_and_check(&queue2, "*A*"); dequeue_and_check(&queue2, "*B*"); @@ -212,8 +212,8 @@ static void test_llc_merge() dequeue_and_check(&queue2, "*D*"); dequeue_and_check(&queue2, "*E*"); - OSMO_ASSERT(queue2.size() == 0); - OSMO_ASSERT(queue2.octets() == 0); + OSMO_ASSERT(llc_queue_size(&queue2) == 0); + OSMO_ASSERT(llc_queue_octets(&queue2) == 0); printf("=== end %s ===\n", __func__); } diff --git a/tests/ms/MsTest.cpp b/tests/ms/MsTest.cpp index 4f47bc97..c164409a 100644 --- a/tests/ms/MsTest.cpp +++ b/tests/ms/MsTest.cpp @@ -56,33 +56,33 @@ static void test_ms_state() printf("=== start %s ===\n", __func__); - ms = new GprsMs(&the_bts, tlli); - OSMO_ASSERT(ms->is_idle()); + ms = ms_alloc(&the_bts, tlli); + OSMO_ASSERT(ms_is_idle(ms)); dl_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf); new (dl_tbf) gprs_rlcmac_dl_tbf(&the_bts, ms); ul_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_ul_tbf); new (ul_tbf) gprs_rlcmac_ul_tbf(&the_bts, ms); - ms->attach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); - OSMO_ASSERT(ms->dl_tbf() == NULL); + ms_attach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == NULL); - ms->attach_tbf(dl_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf); + ms_attach_tbf(ms, dl_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf); - OSMO_ASSERT(ms->tbf(GPRS_RLCMAC_UL_TBF) == ul_tbf); - OSMO_ASSERT(ms->tbf(GPRS_RLCMAC_DL_TBF) == dl_tbf); + OSMO_ASSERT(ms_tbf(ms, GPRS_RLCMAC_UL_TBF) == ul_tbf); + OSMO_ASSERT(ms_tbf(ms, GPRS_RLCMAC_DL_TBF) == dl_tbf); - ms->detach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf); + ms_detach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf); - ms->detach_tbf(dl_tbf); + ms_detach_tbf(ms, dl_tbf); /* The ms object is freed now */ ms = NULL; @@ -92,6 +92,23 @@ static void test_ms_state() printf("=== end %s ===\n", __func__); } +static enum {CB_UNKNOWN, CB_IS_IDLE, CB_IS_ACTIVE} last_cb = CB_UNKNOWN; +static void ms_idle_cb(struct GprsMs *ms) +{ + OSMO_ASSERT(ms_is_idle(ms)); + printf(" ms_idle() was called\n"); + last_cb = CB_IS_IDLE; +} +static void ms_active_cb(struct GprsMs *ms) +{ + OSMO_ASSERT(!ms_is_idle(ms)); + printf(" ms_active() was called\n"); + last_cb = CB_IS_ACTIVE; +} +static struct gpr_ms_callback ms_cb = { + .ms_idle = ms_idle_cb, + .ms_active = ms_active_cb +}; static void test_ms_callback() { uint32_t tlli = 0xffeeddbb; @@ -99,63 +116,50 @@ static void test_ms_callback() gprs_rlcmac_ul_tbf *ul_tbf; BTS the_bts; GprsMs *ms; - static enum {UNKNOWN, IS_IDLE, IS_ACTIVE} last_cb = UNKNOWN; - - struct MyCallback: public GprsMs::Callback { - virtual void ms_idle(class GprsMs *ms) { - OSMO_ASSERT(ms->is_idle()); - printf(" ms_idle() was called\n"); - last_cb = IS_IDLE; - } - virtual void ms_active(class GprsMs *ms) { - OSMO_ASSERT(!ms->is_idle()); - printf(" ms_active() was called\n"); - last_cb = IS_ACTIVE; - } - } cb; + last_cb = CB_UNKNOWN; printf("=== start %s ===\n", __func__); - ms = new GprsMs(&the_bts, tlli); - ms->set_callback(&cb); + ms = ms_alloc(&the_bts, tlli); + ms_set_callback(ms, &ms_cb); - OSMO_ASSERT(ms->is_idle()); + OSMO_ASSERT(ms_is_idle(ms)); dl_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf); new (dl_tbf) gprs_rlcmac_dl_tbf(&the_bts, ms); ul_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_ul_tbf); new (ul_tbf) gprs_rlcmac_ul_tbf(&the_bts, ms); - OSMO_ASSERT(last_cb == UNKNOWN); + OSMO_ASSERT(last_cb == CB_UNKNOWN); - ms->attach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); - OSMO_ASSERT(ms->dl_tbf() == NULL); - OSMO_ASSERT(last_cb == IS_ACTIVE); + ms_attach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == NULL); + OSMO_ASSERT(last_cb == CB_IS_ACTIVE); - last_cb = UNKNOWN; + last_cb = CB_UNKNOWN; - ms->attach_tbf(dl_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf); - OSMO_ASSERT(last_cb == UNKNOWN); + ms_attach_tbf(ms, dl_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf); + OSMO_ASSERT(last_cb == CB_UNKNOWN); - ms->detach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf); - OSMO_ASSERT(last_cb == UNKNOWN); + ms_detach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf); + OSMO_ASSERT(last_cb == CB_UNKNOWN); - ms->detach_tbf(dl_tbf); - OSMO_ASSERT(ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == NULL); - OSMO_ASSERT(last_cb == IS_IDLE); + ms_detach_tbf(ms, dl_tbf); + OSMO_ASSERT(ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == NULL); + OSMO_ASSERT(last_cb == CB_IS_IDLE); - last_cb = UNKNOWN; - delete ms; + last_cb = CB_UNKNOWN; + talloc_free(ms); talloc_free(dl_tbf); talloc_free(ul_tbf); @@ -163,6 +167,22 @@ static void test_ms_callback() printf("=== end %s ===\n", __func__); } +static bool was_idle; +static void ms_replace_tbf_idle_cb(struct GprsMs *ms) +{ + OSMO_ASSERT(ms_is_idle(ms)); + printf(" ms_idle() was called\n"); + was_idle = true; +} +static void ms_replace_tbf_active_cb(struct GprsMs *ms) +{ + OSMO_ASSERT(!ms_is_idle(ms)); + printf(" ms_active() was called\n"); +} +static struct gpr_ms_callback ms_replace_tbf_cb = { + .ms_idle = ms_replace_tbf_idle_cb, + .ms_active = ms_replace_tbf_active_cb +}; static void test_ms_replace_tbf() { uint32_t tlli = 0xffeeddbb; @@ -170,26 +190,13 @@ static void test_ms_replace_tbf() gprs_rlcmac_ul_tbf *ul_tbf; BTS the_bts; GprsMs *ms; - static bool was_idle; - - struct MyCallback: public GprsMs::Callback { - virtual void ms_idle(class GprsMs *ms) { - OSMO_ASSERT(ms->is_idle()); - printf(" ms_idle() was called\n"); - was_idle = true; - } - virtual void ms_active(class GprsMs *ms) { - OSMO_ASSERT(!ms->is_idle()); - printf(" ms_active() was called\n"); - } - } cb; printf("=== start %s ===\n", __func__); - ms = new GprsMs(&the_bts, tlli); - ms->set_callback(&cb); + ms = ms_alloc(&the_bts, tlli); + ms_set_callback(ms, &ms_replace_tbf_cb); - OSMO_ASSERT(ms->is_idle()); + OSMO_ASSERT(ms_is_idle(ms)); was_idle = false; dl_tbf[0] = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf); @@ -199,49 +206,49 @@ static void test_ms_replace_tbf() ul_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_ul_tbf); new (ul_tbf) gprs_rlcmac_ul_tbf(&the_bts, ms); - ms->attach_tbf(dl_tbf[0]); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf[0]); - OSMO_ASSERT(llist_empty(&ms->old_tbfs())); + ms_attach_tbf(ms, dl_tbf[0]); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf[0]); + OSMO_ASSERT(llist_empty(&ms->old_tbfs)); OSMO_ASSERT(!was_idle); - ms->attach_tbf(dl_tbf[1]); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf[1]); - OSMO_ASSERT(!llist_empty(&ms->old_tbfs())); + ms_attach_tbf(ms, dl_tbf[1]); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf[1]); + OSMO_ASSERT(!llist_empty(&ms->old_tbfs)); OSMO_ASSERT(!was_idle); - ms->attach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf[1]); - OSMO_ASSERT(!llist_empty(&ms->old_tbfs())); + ms_attach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf[1]); + OSMO_ASSERT(!llist_empty(&ms->old_tbfs)); OSMO_ASSERT(!was_idle); - ms->detach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf[1]); - OSMO_ASSERT(!llist_empty(&ms->old_tbfs())); + ms_detach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf[1]); + OSMO_ASSERT(!llist_empty(&ms->old_tbfs)); OSMO_ASSERT(!was_idle); - ms->detach_tbf(dl_tbf[0]); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf[1]); - OSMO_ASSERT(llist_empty(&ms->old_tbfs())); + ms_detach_tbf(ms, dl_tbf[0]); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf[1]); + OSMO_ASSERT(llist_empty(&ms->old_tbfs)); OSMO_ASSERT(!was_idle); - ms->detach_tbf(dl_tbf[1]); - OSMO_ASSERT(ms->is_idle()); - OSMO_ASSERT(ms->ul_tbf() == NULL); - OSMO_ASSERT(ms->dl_tbf() == NULL); - OSMO_ASSERT(llist_empty(&ms->old_tbfs())); + ms_detach_tbf(ms, dl_tbf[1]); + OSMO_ASSERT(ms_is_idle(ms)); + OSMO_ASSERT(ms_ul_tbf(ms) == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == NULL); + OSMO_ASSERT(llist_empty(&ms->old_tbfs)); OSMO_ASSERT(was_idle); - delete ms; + talloc_free(ms); talloc_free(dl_tbf[0]); talloc_free(dl_tbf[1]); @@ -260,86 +267,86 @@ static void test_ms_change_tlli() printf("=== start %s ===\n", __func__); - ms = new GprsMs(&the_bts, start_tlli); + ms = ms_alloc(&the_bts, start_tlli); - OSMO_ASSERT(ms->is_idle()); + OSMO_ASSERT(ms_is_idle(ms)); /* MS announces TLLI, SGSN uses it immediately */ - ms->set_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(start_tlli)); + ms_set_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, start_tlli)); - ms->confirm_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(!ms->check_tlli(start_tlli)); + ms_confirm_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(!ms_check_tlli(ms, start_tlli)); /* MS announces TLLI, SGSN uses it later */ - ms->set_tlli(start_tlli); - ms->confirm_tlli(start_tlli); + ms_set_tlli(ms, start_tlli); + ms_confirm_tlli(ms, start_tlli); - ms->set_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(start_tlli)); + ms_set_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, start_tlli)); - ms->confirm_tlli(start_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(start_tlli)); + ms_confirm_tlli(ms, start_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, start_tlli)); - ms->set_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(start_tlli)); + ms_set_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, start_tlli)); - ms->confirm_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(!ms->check_tlli(start_tlli)); + ms_confirm_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(!ms_check_tlli(ms, start_tlli)); /* MS announces TLLI, SGSN uses it later after another new TLLI */ - ms->set_tlli(start_tlli); - ms->confirm_tlli(start_tlli); - - ms->set_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(start_tlli)); - - ms->confirm_tlli(other_sgsn_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(other_sgsn_tlli)); - - ms->set_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(other_sgsn_tlli)); - - ms->confirm_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(!ms->check_tlli(start_tlli)); - OSMO_ASSERT(!ms->check_tlli(other_sgsn_tlli)); + ms_set_tlli(ms, start_tlli); + ms_confirm_tlli(ms, start_tlli); + + ms_set_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, start_tlli)); + + ms_confirm_tlli(ms, other_sgsn_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, other_sgsn_tlli)); + + ms_set_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, other_sgsn_tlli)); + + ms_confirm_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(!ms_check_tlli(ms, start_tlli)); + OSMO_ASSERT(!ms_check_tlli(ms, other_sgsn_tlli)); /* SGSN uses the new TLLI before it is announced by the MS (shouldn't * happen in normal use) */ - ms->set_tlli(start_tlli); - ms->confirm_tlli(start_tlli); + ms_set_tlli(ms, start_tlli); + ms_confirm_tlli(ms, start_tlli); - ms->confirm_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == start_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(ms->check_tlli(start_tlli)); + ms_confirm_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == start_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(ms_check_tlli(ms, start_tlli)); - ms->set_tlli(new_ms_tlli); - OSMO_ASSERT(ms->tlli() == new_ms_tlli); - OSMO_ASSERT(ms->check_tlli(new_ms_tlli)); - OSMO_ASSERT(!ms->check_tlli(start_tlli)); + ms_set_tlli(ms, new_ms_tlli); + OSMO_ASSERT(ms_tlli(ms) == new_ms_tlli); + OSMO_ASSERT(ms_check_tlli(ms, new_ms_tlli)); + OSMO_ASSERT(!ms_check_tlli(ms, start_tlli)); - delete ms; + talloc_free(ms); printf("=== end %s ===\n", __func__); } @@ -353,9 +360,9 @@ static GprsMs *prepare_ms(GprsMsStorage *st, uint32_t tlli, enum gprs_rlcmac_tbf ms = st->create_ms(); if (dir == GPRS_RLCMAC_UL_TBF) - ms->set_tlli(tlli); + ms_set_tlli(ms, tlli); else - ms->confirm_tlli(tlli); + ms_confirm_tlli(ms, tlli); return ms; } @@ -378,44 +385,44 @@ static void test_ms_storage() ms = prepare_ms(&store, tlli + 0, GPRS_RLCMAC_UL_TBF); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->tlli() == tlli + 0); - ms->set_imsi(imsi1); - OSMO_ASSERT(strcmp(ms->imsi(), imsi1) == 0); + OSMO_ASSERT(ms_tlli(ms) == tlli + 0); + ms_set_imsi(ms, imsi1); + OSMO_ASSERT(strcmp(ms_imsi(ms), imsi1) == 0); ms_tmp = store.get_ms(tlli + 0); OSMO_ASSERT(ms == ms_tmp); - OSMO_ASSERT(ms->tlli() == tlli + 0); + OSMO_ASSERT(ms_tlli(ms) == tlli + 0); ms_tmp = store.get_ms(0, 0, imsi1); OSMO_ASSERT(ms == ms_tmp); - OSMO_ASSERT(strcmp(ms->imsi(), imsi1) == 0); + OSMO_ASSERT(strcmp(ms_imsi(ms), imsi1) == 0); ms_tmp = store.get_ms(0, 0, imsi2); OSMO_ASSERT(ms_tmp == NULL); ms = prepare_ms(&store, tlli + 1, GPRS_RLCMAC_UL_TBF); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->tlli() == tlli + 1); - ms->set_imsi(imsi2); - OSMO_ASSERT(strcmp(ms->imsi(), imsi2) == 0); + OSMO_ASSERT(ms_tlli(ms) == tlli + 1); + ms_set_imsi(ms, imsi2); + OSMO_ASSERT(strcmp(ms_imsi(ms), imsi2) == 0); ms_tmp = store.get_ms(tlli + 1); OSMO_ASSERT(ms == ms_tmp); - OSMO_ASSERT(ms->tlli() == tlli + 1); + OSMO_ASSERT(ms_tlli(ms) == tlli + 1); ms_tmp = store.get_ms(0, 0, imsi1); OSMO_ASSERT(ms_tmp != NULL); OSMO_ASSERT(ms_tmp != ms); ms_tmp = store.get_ms(0, 0, imsi2); OSMO_ASSERT(ms == ms_tmp); - OSMO_ASSERT(strcmp(ms->imsi(), imsi2) == 0); + OSMO_ASSERT(strcmp(ms_imsi(ms), imsi2) == 0); /* delete ms */ ms = store.get_ms(tlli + 0); OSMO_ASSERT(ms != NULL); ul_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_ul_tbf); new (ul_tbf) gprs_rlcmac_ul_tbf(&the_bts, ms); - ms->attach_tbf(ul_tbf); - ms->detach_tbf(ul_tbf); + ms_attach_tbf(ms, ul_tbf); + ms_detach_tbf(ms, ul_tbf); ms = store.get_ms(tlli + 0); OSMO_ASSERT(ms == NULL); ms = store.get_ms(tlli + 1); @@ -424,8 +431,8 @@ static void test_ms_storage() /* delete ms */ ms = store.get_ms(tlli + 1); OSMO_ASSERT(ms != NULL); - ms->attach_tbf(ul_tbf); - ms->detach_tbf(ul_tbf); + ms_attach_tbf(ms, ul_tbf); + ms_detach_tbf(ms, ul_tbf); ms = store.get_ms(tlli + 1); OSMO_ASSERT(ms == NULL); @@ -441,62 +448,49 @@ static void test_ms_timeout() gprs_rlcmac_ul_tbf *ul_tbf; BTS the_bts; GprsMs *ms; - static enum {UNKNOWN, IS_IDLE, IS_ACTIVE} last_cb = UNKNOWN; - - struct MyCallback: public GprsMs::Callback { - virtual void ms_idle(class GprsMs *ms) { - OSMO_ASSERT(ms->is_idle()); - printf(" ms_idle() was called\n"); - last_cb = IS_IDLE; - } - virtual void ms_active(class GprsMs *ms) { - OSMO_ASSERT(!ms->is_idle()); - printf(" ms_active() was called\n"); - last_cb = IS_ACTIVE; - } - } cb; + last_cb = CB_UNKNOWN; printf("=== start %s ===\n", __func__); - ms = new GprsMs(&the_bts, tlli); - ms->set_callback(&cb); - ms->set_timeout(1); + ms = ms_alloc(&the_bts, tlli); + ms_set_callback(ms, &ms_cb); + ms_set_timeout(ms, 1); - OSMO_ASSERT(ms->is_idle()); + OSMO_ASSERT(ms_is_idle(ms)); dl_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf); new (dl_tbf) gprs_rlcmac_dl_tbf(&the_bts, ms); ul_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_ul_tbf); new (ul_tbf) gprs_rlcmac_ul_tbf(&the_bts, ms); - OSMO_ASSERT(last_cb == UNKNOWN); + OSMO_ASSERT(last_cb == CB_UNKNOWN); - ms->attach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(last_cb == IS_ACTIVE); + ms_attach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(last_cb == CB_IS_ACTIVE); - last_cb = UNKNOWN; + last_cb = CB_UNKNOWN; - ms->attach_tbf(dl_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(last_cb == UNKNOWN); + ms_attach_tbf(ms, dl_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(last_cb == CB_UNKNOWN); - ms->detach_tbf(ul_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(last_cb == UNKNOWN); + ms_detach_tbf(ms, ul_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(last_cb == CB_UNKNOWN); - ms->detach_tbf(dl_tbf); - OSMO_ASSERT(!ms->is_idle()); - OSMO_ASSERT(last_cb == UNKNOWN); + ms_detach_tbf(ms, dl_tbf); + OSMO_ASSERT(!ms_is_idle(ms)); + OSMO_ASSERT(last_cb == CB_UNKNOWN); usleep(1100000); osmo_timers_update(); - OSMO_ASSERT(ms->is_idle()); - OSMO_ASSERT(last_cb == IS_IDLE); + OSMO_ASSERT(ms_is_idle(ms)); + OSMO_ASSERT(last_cb == CB_IS_IDLE); - last_cb = UNKNOWN; - delete ms; + last_cb = CB_UNKNOWN; + talloc_free(ms); talloc_free(dl_tbf); talloc_free(ul_tbf); @@ -519,21 +513,21 @@ static void test_ms_cs_selection() bts->cs_downgrade_threshold = 0; bts->cs_adj_lower_limit = 0; - ms = new GprsMs(&the_bts, tlli); + ms = ms_alloc(&the_bts, tlli); - OSMO_ASSERT(ms->is_idle()); + OSMO_ASSERT(ms_is_idle(ms)); dl_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf); new (dl_tbf) gprs_rlcmac_dl_tbf(&the_bts, ms); - ms->attach_tbf(dl_tbf); + ms_attach_tbf(ms, dl_tbf); - OSMO_ASSERT(!ms->is_idle()); + OSMO_ASSERT(!ms_is_idle(ms)); - OSMO_ASSERT(mcs_chan_code(ms->current_cs_dl()) == 3); + OSMO_ASSERT(mcs_chan_code(ms_current_cs_dl(ms)) == 3); bts->cs_downgrade_threshold = 200; - OSMO_ASSERT(mcs_chan_code(ms->current_cs_dl()) == 2); + OSMO_ASSERT(mcs_chan_code(ms_current_cs_dl(ms)) == 2); talloc_free(dl_tbf); @@ -543,10 +537,10 @@ static void test_ms_cs_selection() static void dump_ms(const GprsMs *ms, const char *pref) { printf("%s MS DL %s/%s, UL %s/%s, mode %s, <%s>\n", pref, - mcs_name(ms->current_cs_dl()), mcs_name(ms->max_cs_dl()), - mcs_name(ms->current_cs_ul()), mcs_name(ms->max_cs_ul()), - mode_name(ms->mode()), - ms->is_idle() ? "IDLE" : "ACTIVE"); + mcs_name(ms_current_cs_dl(ms)), mcs_name(ms_max_cs_dl(ms)), + mcs_name(ms_current_cs_ul(ms)), mcs_name(ms_max_cs_ul(ms)), + mode_name(ms_mode(ms)), + ms_is_idle(ms) ? "IDLE" : "ACTIVE"); } static void test_ms_mcs_mode() @@ -560,48 +554,48 @@ static void test_ms_mcs_mode() printf("=== start %s ===\n", __func__); - ms1 = new GprsMs(&the_bts, tlli); + ms1 = ms_alloc(&the_bts, tlli); dump_ms(ms1, "1: no BTS defaults "); bts->initial_cs_dl = 4; bts->initial_cs_ul = 1; bts->cs_downgrade_threshold = 0; - ms2 = new GprsMs(&the_bts, tlli + 1); + ms2 = ms_alloc(&the_bts, tlli + 1); dump_ms(ms2, "2: with BTS defaults"); dl_tbf = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf); new (dl_tbf) gprs_rlcmac_dl_tbf(&the_bts, ms2); - ms2->attach_tbf(dl_tbf); + ms_attach_tbf(ms2, dl_tbf); dump_ms(ms2, "2: after TBF attach "); - ms1->set_mode(EGPRS); + ms_set_mode(ms1, EGPRS); dump_ms(ms1, "1: after mode set "); - ms2->set_mode(EGPRS); + ms_set_mode(ms2, EGPRS); dump_ms(ms2, "2: after mode set "); - ms1->set_current_cs_dl(MCS7); + ms_set_current_cs_dl(ms1, MCS7); dump_ms(ms1, "1: after MCS set "); - ms2->set_current_cs_dl(MCS8); + ms_set_current_cs_dl(ms2, MCS8); dump_ms(ms2, "2: after MCS set "); - ms1->set_mode(EGPRS_GMSK); + ms_set_mode(ms1, EGPRS_GMSK); dump_ms(ms1, "1: after mode set "); - ms2->set_mode(EGPRS_GMSK); + ms_set_mode(ms2, EGPRS_GMSK); dump_ms(ms2, "2: after mode set "); // FIXME: following code triggers ASAN failure: // ms2->detach_tbf(dl_tbf); // dump_ms(ms2, "2: after TBF detach "); - ms1->set_mode(GPRS); + ms_set_mode(ms1, GPRS); dump_ms(ms1, "1: after mode set "); - ms2->set_mode(GPRS); + ms_set_mode(ms2, GPRS); dump_ms(ms2, "2: after mode set "); talloc_free(dl_tbf); diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp index 1a1dc6f3..e6041a36 100644 --- a/tests/tbf/TbfTest.cpp +++ b/tests/tbf/TbfTest.cpp @@ -109,14 +109,14 @@ static void test_tbf_tlli_update() OSMO_ASSERT(dl_tbf != NULL); dl_tbf->update_ms(0x2342, GPRS_RLCMAC_DL_TBF); dl_tbf->set_ta(4); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf); OSMO_ASSERT(dl_tbf->ms() == ms); gprs_rlcmac_tbf *ul_tbf = tbf_alloc_ul_tbf(the_bts.bts_data(), ms, 0, false); OSMO_ASSERT(ul_tbf != NULL); ul_tbf->update_ms(0x2342, GPRS_RLCMAC_UL_TBF); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); OSMO_ASSERT(ul_tbf->ms() == ms); OSMO_ASSERT(the_bts.ms_by_tlli(0x2342) == ms); @@ -133,8 +133,8 @@ static void test_tbf_tlli_update() ms_new = the_bts.ms_by_tlli(0x4232); OSMO_ASSERT(ms == ms_new); - OSMO_ASSERT(ms->dl_tbf() == dl_tbf); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == dl_tbf); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); /* Now use the new TLLI for UL */ ul_tbf->update_ms(0x4232, GPRS_RLCMAC_UL_TBF); @@ -143,7 +143,7 @@ static void test_tbf_tlli_update() ms_new = the_bts.ms_by_tlli(0x4232); OSMO_ASSERT(ms_new != NULL); - OSMO_ASSERT(ms_new->ta() == 4); + OSMO_ASSERT(ms_ta(ms_new) == 4); OSMO_ASSERT(ul_tbf->ta() == 4); OSMO_ASSERT(dl_tbf->ta() == 4); @@ -298,25 +298,27 @@ static void test_tbf_final_ack(enum test_tbf_final_ack_mode test_mode) /* Clean up and ensure tbfs are in the correct state */ OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE)); - new_tbf = ms->dl_tbf(); + new_tbf = ms_dl_tbf(ms); check_tbf(new_tbf); OSMO_ASSERT(new_tbf != dl_tbf); OSMO_ASSERT(new_tbf->tfi() == 1); check_tbf(dl_tbf); TBF_SET_ASS_STATE_DL(dl_tbf, GPRS_RLCMAC_DL_ASS_NONE); if (test_mode == TEST_MODE_REVERSE_FREE) { - GprsMs::Guard guard(ms); + ms_ref(ms); tbf_free(new_tbf); - OSMO_ASSERT(ms->dl_tbf() == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == NULL); check_tbf(dl_tbf); tbf_free(dl_tbf); + ms_unref(ms); } else { - GprsMs::Guard guard(ms); + ms_ref(ms); tbf_free(dl_tbf); - OSMO_ASSERT(ms->dl_tbf() == new_tbf); + OSMO_ASSERT(ms_dl_tbf(ms) == new_tbf); check_tbf(new_tbf); tbf_free(new_tbf); - OSMO_ASSERT(ms->dl_tbf() == NULL); + OSMO_ASSERT(ms_dl_tbf(ms) == NULL); + ms_unref(ms); } fprintf(stderr, "=== end %s ===\n", __func__); @@ -421,32 +423,33 @@ static void test_tbf_imsi() dl_tbf[0]->update_ms(0xf1000001, GPRS_RLCMAC_DL_TBF); dl_tbf[1]->update_ms(0xf1000002, GPRS_RLCMAC_DL_TBF); - dl_tbf[0]->ms()->set_imsi("001001000000001"); + ms_set_imsi(dl_tbf[0]->ms(), "001001000000001"); ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000001"); OSMO_ASSERT(ms1 != NULL); ms2 = the_bts.ms_store().get_ms(0xf1000001); OSMO_ASSERT(ms2 != NULL); - OSMO_ASSERT(strcmp(ms2->imsi(), "001001000000001") == 0); + OSMO_ASSERT(strcmp(ms_imsi(ms2), "001001000000001") == 0); OSMO_ASSERT(ms1 == ms2); /* change the IMSI on TBF 0 */ - dl_tbf[0]->ms()->set_imsi("001001000000002"); + ms_set_imsi(dl_tbf[0]->ms(), "001001000000002"); ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000001"); OSMO_ASSERT(ms1 == NULL); ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002"); OSMO_ASSERT(ms1 != NULL); - OSMO_ASSERT(strcmp(ms2->imsi(), "001001000000002") == 0); + OSMO_ASSERT(strcmp(ms_imsi(ms2), "001001000000002") == 0); OSMO_ASSERT(ms1 == ms2); /* use the same IMSI on TBF 1 */ { - GprsMs::Guard guard(ms2); - dl_tbf[1]->ms()->set_imsi("001001000000002"); + ms_ref(ms2); + ms_set_imsi(dl_tbf[1]->ms(), "001001000000002"); ms1 = the_bts.ms_store().get_ms(0, 0, "001001000000002"); OSMO_ASSERT(ms1 != NULL); OSMO_ASSERT(ms1 != ms2); - OSMO_ASSERT(strcmp(ms1->imsi(), "001001000000002") == 0); - OSMO_ASSERT(strcmp(ms2->imsi(), "") == 0); + OSMO_ASSERT(strcmp(ms_imsi(ms1), "001001000000002") == 0); + OSMO_ASSERT(strcmp(ms_imsi(ms2), "") == 0); + ms_unref(ms2); } ms2 = the_bts.ms_store().get_ms(0xf1000001); @@ -539,8 +542,8 @@ static void test_tbf_dl_llc_loss() ms = the_bts.ms_store().get_ms(0, 0, imsi); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->dl_tbf() != NULL); - ms->dl_tbf()->set_ta(0); + OSMO_ASSERT(ms_dl_tbf(ms) != NULL); + ms_dl_tbf(ms)->set_ta(0); /* Handle LLC frame 2 */ memset(buf, 2, sizeof(buf)); @@ -549,7 +552,7 @@ static void test_tbf_dl_llc_loss() OSMO_ASSERT(rc >= 0); /* TBF establishment fails (timeout) */ - tbf_free(ms->dl_tbf()); + tbf_free(ms_dl_tbf(ms)); /* Handle LLC frame 3 */ memset(buf, 3, sizeof(buf)); @@ -557,7 +560,7 @@ static void test_tbf_dl_llc_loss() delay_csec, buf, sizeof(buf)); OSMO_ASSERT(rc >= 0); - OSMO_ASSERT(ms->dl_tbf() != NULL); + OSMO_ASSERT(ms_dl_tbf(ms) != NULL); /* Get first BSN */ struct msgb *msg; @@ -572,8 +575,8 @@ static void test_tbf_dl_llc_loss() 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, }; - while (ms->dl_tbf()->have_data()) { - msg = ms->dl_tbf()->create_dl_acked_block(fn += 4, 7); + while (ms_dl_tbf(ms)->have_data()) { + msg = ms_dl_tbf(ms)->create_dl_acked_block(fn += 4, 7); fprintf(stderr, "MSG = %s\n", msgb_hexdump(msg)); if (!msgb_eq_data_print(msg, exp[expected_data - 1], GSM_MACBLOCK_LEN)) fprintf(stderr, "%s failed at %u\n", __func__, expected_data); @@ -742,8 +745,8 @@ static gprs_rlcmac_ul_tbf *puan_urbb_len_issue(BTS *the_bts, ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); /* * TS 44.060, B.8.1 @@ -890,8 +893,8 @@ static gprs_rlcmac_ul_tbf *establish_ul_tbf_two_phase_spb(BTS *the_bts, ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); /* * TS 44.060, B.8.1 @@ -1386,8 +1389,8 @@ static gprs_rlcmac_ul_tbf *establish_ul_tbf_two_phase_puan_URBB_no_length(BTS *t ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); return ul_tbf; } @@ -1469,8 +1472,8 @@ static gprs_rlcmac_ul_tbf *establish_ul_tbf_two_phase_puan_URBB_with_length(BTS ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); return ul_tbf; } @@ -1554,8 +1557,8 @@ static gprs_rlcmac_ul_tbf *establish_ul_tbf_two_phase_puan_CRBB(BTS *the_bts, ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); return ul_tbf; } @@ -1637,8 +1640,8 @@ static gprs_rlcmac_ul_tbf *establish_ul_tbf_two_phase(BTS *the_bts, ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); return ul_tbf; } @@ -1655,7 +1658,7 @@ static void send_dl_data(BTS *the_bts, uint32_t tlli, const char *imsi, ms = the_bts->ms_by_imsi(imsi); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->dl_tbf() != NULL); + OSMO_ASSERT(ms_dl_tbf(ms) != NULL); if (imsi[0] && strcmp(imsi, "000") != 0) { ms2 = the_bts->ms_by_tlli(tlli); @@ -1672,7 +1675,7 @@ static void transmit_dl_data(BTS *the_bts, uint32_t tlli, uint32_t *fn, ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms); - dl_tbf = ms->dl_tbf(); + dl_tbf = ms_dl_tbf(ms); OSMO_ASSERT(dl_tbf); while (dl_tbf->have_data()) { @@ -1692,7 +1695,7 @@ static inline void print_ta_tlli(const gprs_rlcmac_ul_tbf *ul_tbf, bool print_ms { fprintf(stderr, "Got '%s', TA=%d\n", ul_tbf->name(), ul_tbf->ta()); if (print_ms) - fprintf(stderr, "Got MS: TLLI = 0x%08x, TA = %d\n", ul_tbf->ms()->tlli(), ul_tbf->ms()->ta()); + fprintf(stderr, "Got MS: TLLI = 0x%08x, TA = %d\n", ms_tlli(ul_tbf->ms()), ms_ta(ul_tbf->ms())); } static void test_tbf_single_phase() @@ -1866,10 +1869,10 @@ static void test_tbf_two_phase() fprintf(stderr, "=== end %s ===\n", __func__); } -static inline void print_ms(const GprsMs *ms, bool old) +static inline void print_ms(GprsMs *ms, bool old) { fprintf(stderr, "%s MS: TLLI = 0x%08x, TA = %d, IMSI = %s, LLC = %zu\n", - old ? "Old" : "New", ms->tlli(), ms->ta(), ms->imsi(), ms->llc_queue()->size()); + old ? "Old" : "New", ms_tlli(ms), ms_ta(ms), ms_imsi(ms), llc_queue_size(ms_llc_queue(ms))); } static void test_tbf_ra_update_rach() @@ -1905,9 +1908,9 @@ static void test_tbf_ra_update_rach() send_control_ack(ul_tbf); /* Make sure the RAU Accept gets sent to the MS */ - OSMO_ASSERT(ms1->llc_queue()->size() == 1); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms1)) == 1); transmit_dl_data(&the_bts, tlli1, &fn); - OSMO_ASSERT(ms1->llc_queue()->size() == 0); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms1)) == 0); /* Now establish a new TBF for the RA UPDATE COMPLETE (new TLLI) */ ul_tbf = establish_ul_tbf_two_phase(&the_bts, ts_no, tlli2, &fn, qta, @@ -1963,8 +1966,8 @@ static void test_tbf_dl_flow_and_rach_two_phase() send_dl_data(&the_bts, tlli1, imsi, (const uint8_t *)"DATA 2 *************", 20); print_ms(ms1, true); - OSMO_ASSERT(ms1->llc_queue()->size() == 2); - dl_tbf = ms1->dl_tbf(); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms1)) == 2); + dl_tbf = ms_dl_tbf(ms1); OSMO_ASSERT(dl_tbf != NULL); /* Get rid of old UL TBF */ @@ -1986,10 +1989,10 @@ static void test_tbf_dl_flow_and_rach_two_phase() OSMO_ASSERT(ms2 == ms); /* A DL TBF should still exist */ - OSMO_ASSERT(ms->dl_tbf()); + OSMO_ASSERT(ms_dl_tbf(ms)); /* No queued packets should be lost */ - OSMO_ASSERT(ms->llc_queue()->size() == 2); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms)) == 2); fprintf(stderr, "=== end %s ===\n", __func__); } @@ -2022,8 +2025,8 @@ static void test_tbf_dl_flow_and_rach_single_phase() send_dl_data(&the_bts, tlli1, imsi, (const uint8_t *)"DATA 2 *************", 20); print_ms(ms1, true); - OSMO_ASSERT(ms1->llc_queue()->size() == 2); - dl_tbf = ms1->dl_tbf(); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms1)) == 2); + dl_tbf = ms_dl_tbf(ms1); OSMO_ASSERT(dl_tbf != NULL); /* Get rid of old UL TBF */ @@ -2045,10 +2048,10 @@ static void test_tbf_dl_flow_and_rach_single_phase() OSMO_ASSERT(ms1 != ms); /* DL TBF should be removed */ - OSMO_ASSERT(!ms->dl_tbf()); + OSMO_ASSERT(!ms_dl_tbf(ms)); /* No queued packets should be lost */ - OSMO_ASSERT(ms->llc_queue()->size() == 2); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms)) == 2); fprintf(stderr, "=== end %s ===\n", __func__); } @@ -2099,11 +2102,11 @@ static void test_tbf_dl_reuse() /* Transmit all data */ transmit_dl_data(&the_bts, tlli1, &fn); - OSMO_ASSERT(ms1->llc_queue()->size() == 0); - OSMO_ASSERT(ms1->dl_tbf()); - OSMO_ASSERT(ms1->dl_tbf()->state_is(GPRS_RLCMAC_FINISHED)); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms1)) == 0); + OSMO_ASSERT(ms_dl_tbf(ms1)); + OSMO_ASSERT(ms_dl_tbf(ms1)->state_is(GPRS_RLCMAC_FINISHED)); - dl_tbf1 = ms1->dl_tbf(); + dl_tbf1 = ms_dl_tbf(ms1); /* Send some LLC frames */ for (i = 0; i < 10; i++) { @@ -2132,10 +2135,10 @@ static void test_tbf_dl_reuse() ms2 = the_bts.ms_by_tlli(tlli1); OSMO_ASSERT(ms2 == ms1); - OSMO_ASSERT(ms2->dl_tbf()); - OSMO_ASSERT(ms2->dl_tbf()->state_is(GPRS_RLCMAC_ASSIGN)); + OSMO_ASSERT(ms_dl_tbf(ms2)); + OSMO_ASSERT(ms_dl_tbf(ms2)->state_is(GPRS_RLCMAC_ASSIGN)); - dl_tbf2 = ms2->dl_tbf(); + dl_tbf2 = ms_dl_tbf(ms2); OSMO_ASSERT(dl_tbf1 != dl_tbf2); @@ -2144,9 +2147,9 @@ static void test_tbf_dl_reuse() /* Transmit all data */ transmit_dl_data(&the_bts, tlli1, &fn); - OSMO_ASSERT(ms2->llc_queue()->size() == 0); - OSMO_ASSERT(ms2->dl_tbf()); - OSMO_ASSERT(ms2->dl_tbf()->state_is(GPRS_RLCMAC_FINISHED)); + OSMO_ASSERT(llc_queue_size(ms_llc_queue(ms2)) == 0); + OSMO_ASSERT(ms_dl_tbf(ms2)); + OSMO_ASSERT(ms_dl_tbf(ms2)->state_is(GPRS_RLCMAC_FINISHED)); fprintf(stderr, "=== end %s ===\n", __func__); } @@ -2411,8 +2414,8 @@ static gprs_rlcmac_ul_tbf *tbf_li_decoding(BTS *the_bts, ms = the_bts->ms_by_tlli(tlli); OSMO_ASSERT(ms != NULL); - OSMO_ASSERT(ms->ta() == qta/4); - OSMO_ASSERT(ms->ul_tbf() == ul_tbf); + OSMO_ASSERT(ms_ta(ms) == qta/4); + OSMO_ASSERT(ms_ul_tbf(ms) == ul_tbf); egprs3 = (struct gprs_rlc_ul_header_egprs_3 *) data_msg; egprs3->si = 0; @@ -2799,9 +2802,7 @@ static void egprs_spb_to_normal_validation(BTS *the_bts, OSMO_ASSERT(bsn1 == 0); - dl_tbf->ms()->set_current_cs_dl - (static_cast < enum CodingScheme > - (CS4 + demanded_mcs)); + ms_set_current_cs_dl(dl_tbf->ms(), static_cast < enum CodingScheme > (CS4 + demanded_mcs)); fn = fn_add_blocks(fn, 1); @@ -2831,9 +2832,7 @@ static void egprs_spb_to_normal_validation(BTS *the_bts, OSMO_ASSERT(egprs3->cps == 3); /* Handle (MCS3, MCS3) -> MCS6 case */ - dl_tbf->ms()->set_current_cs_dl - (static_cast < enum CodingScheme > - (CS4 + mcs)); + ms_set_current_cs_dl(dl_tbf->ms(), static_cast < enum CodingScheme > (CS4 + mcs)); NACK(dl_tbf, 0); @@ -2880,9 +2879,7 @@ static void establish_and_use_egprs_dl_tbf_for_spb(BTS *the_bts, NACK(dl_tbf, 0); - dl_tbf->ms()->set_current_cs_dl - (static_cast < enum CodingScheme > - (CS4 + demanded_mcs)); + ms_set_current_cs_dl(dl_tbf->ms(), static_cast < enum CodingScheme > (CS4 + demanded_mcs)); fn = fn_add_blocks(fn, 1); @@ -2967,9 +2964,7 @@ static void establish_and_use_egprs_dl_tbf_for_retx(BTS *the_bts, NACK(dl_tbf, 1); /* Set the demanded MCS to demanded_mcs */ - dl_tbf->ms()->set_current_cs_dl - (static_cast < enum CodingScheme > - (CS4 + demanded_mcs)); + ms_set_current_cs_dl(dl_tbf->ms(), static_cast < enum CodingScheme > (CS4 + demanded_mcs)); fn = fn_add_blocks(fn, 1); /* Retransmit the first RLC data block with demanded_mcs */ @@ -2994,9 +2989,7 @@ static void establish_and_use_egprs_dl_tbf_for_retx(BTS *the_bts, NACK(dl_tbf, 0); NACK(dl_tbf, 1); - dl_tbf->ms()->set_current_cs_dl - (static_cast < enum CodingScheme > - (CS4 + demanded_mcs)); + ms_set_current_cs_dl(dl_tbf->ms(), static_cast < enum CodingScheme > (CS4 + demanded_mcs)); fn = fn_add_blocks(fn, 1); /* Send first, second RLC data blocks with demanded_mcs */ @@ -3264,8 +3257,8 @@ int main(int argc, char **argv) pcu_vty_init(); /* Initialize shared UL measurements */ - meas.set_link_qual(12); - meas.set_rssi(31); + pcu_l1_meas_set_link_qual(&meas, 12); + pcu_l1_meas_set_rssi(&meas, 31); test_tbf_base(); test_tbf_tlli_update(); diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp index f224146c..bc24b305 100644 --- a/tests/types/TypesTest.cpp +++ b/tests/types/TypesTest.cpp @@ -58,27 +58,27 @@ static void test_llc(void) gprs_llc llc; llc.init(); - OSMO_ASSERT(llc.chunk_size() == 0); - OSMO_ASSERT(llc.remaining_space() == LLC_MAX_LEN); - OSMO_ASSERT(llc.frame_length() == 0); + OSMO_ASSERT(llc_chunk_size(&llc) == 0); + OSMO_ASSERT(llc_remaining_space(&llc) == LLC_MAX_LEN); + OSMO_ASSERT(llc_frame_length(&llc) == 0); llc.put_frame(data, 2); - OSMO_ASSERT(llc.remaining_space() == LLC_MAX_LEN - 2); - OSMO_ASSERT(llc.frame_length() == 2); - OSMO_ASSERT(llc.chunk_size() == 2); + OSMO_ASSERT(llc_remaining_space(&llc) == LLC_MAX_LEN - 2); + OSMO_ASSERT(llc_frame_length(&llc) == 2); + OSMO_ASSERT(llc_chunk_size(&llc) == 2); OSMO_ASSERT(llc.frame[0] == 1); OSMO_ASSERT(llc.frame[1] == 2); llc.append_frame(&data[3], 1); - OSMO_ASSERT(llc.remaining_space() == LLC_MAX_LEN - 3); - OSMO_ASSERT(llc.frame_length() == 3); - OSMO_ASSERT(llc.chunk_size() == 3); + OSMO_ASSERT(llc_remaining_space(&llc) == LLC_MAX_LEN - 3); + OSMO_ASSERT(llc_frame_length(&llc) == 3); + OSMO_ASSERT(llc_chunk_size(&llc) == 3); /* consume two bytes */ - llc.consume(&out, 1); - OSMO_ASSERT(llc.remaining_space() == LLC_MAX_LEN - 3); - OSMO_ASSERT(llc.frame_length() == 3); - OSMO_ASSERT(llc.chunk_size() == 2); + llc_consume_data(&llc, &out, 1); + OSMO_ASSERT(llc_remaining_space(&llc) == LLC_MAX_LEN - 3); + OSMO_ASSERT(llc_frame_length(&llc) == 3); + OSMO_ASSERT(llc_chunk_size(&llc) == 2); /* check that the bytes are as we expected */ OSMO_ASSERT(llc.frame[0] == 1); @@ -86,9 +86,9 @@ static void test_llc(void) OSMO_ASSERT(llc.frame[2] == 4); /* now fill the frame */ - llc.append_frame(data, llc.remaining_space() - 1); - OSMO_ASSERT(llc.fits_in_current_frame(1)); - OSMO_ASSERT(!llc.fits_in_current_frame(2)); + llc.append_frame(data, llc_remaining_space(&llc) - 1); + OSMO_ASSERT(llc_fits_in_current_frame(&llc, 1)); + OSMO_ASSERT(!llc_fits_in_current_frame(&llc, 2)); } } |