tests: ulc: Show current bug with FN wrap around
Issue will be fixed in next commit. Leaving ASSERTs disabled so that test passes in jenkins. Related: OS#5020 Change-Id: I657db6b300363f8f3a9e4cfaf7a7f49e361a0512
This commit is contained in:
parent
582a15e413
commit
95f8fa1f7c
|
@ -20,6 +20,9 @@
|
|||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <unistd.h>
|
||||
#include <inttypes.h>
|
||||
|
||||
extern "C" {
|
||||
#include <osmocom/core/application.h>
|
||||
|
@ -28,6 +31,7 @@ extern "C" {
|
|||
#include <osmocom/core/utils.h>
|
||||
}
|
||||
|
||||
#include "gprs_ms.h"
|
||||
#include "bts.h"
|
||||
#include "sba.h"
|
||||
#include "pdch_ul_controller.h"
|
||||
|
@ -35,6 +39,16 @@ extern "C" {
|
|||
/* globals used by the code */
|
||||
void *tall_pcu_ctx;
|
||||
|
||||
static void print_ulc_nodes(struct pdch_ulc *ulc)
|
||||
{
|
||||
struct rb_node *node;
|
||||
for (node = rb_first(&ulc->tree_root); node; node = rb_next(node)) {
|
||||
struct pdch_ulc_node *it = container_of(node, struct pdch_ulc_node, node);
|
||||
printf("FN=%" PRIu32 " type=%s\n",
|
||||
it->fn, get_value_string(pdch_ul_node_names, it->type));
|
||||
}
|
||||
}
|
||||
|
||||
static void test_reserve_multiple()
|
||||
{
|
||||
printf("=== start: %s ===\n", __FUNCTION__);
|
||||
|
@ -143,6 +157,61 @@ static void test_reserve_multiple()
|
|||
printf("=== end: %s ===\n", __FUNCTION__);
|
||||
}
|
||||
|
||||
int _alloc_algorithm_dummy(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf,
|
||||
bool single, int8_t use_tbf)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static void test_fn_wrap_around()
|
||||
{
|
||||
printf("=== start: %s ===\n", __FUNCTION__);
|
||||
const uint32_t start_fn = GSM_MAX_FN - 40;
|
||||
|
||||
the_pcu->alloc_algorithm = _alloc_algorithm_dummy;
|
||||
|
||||
struct gprs_rlcmac_bts *bts = bts_alloc(the_pcu, 0);
|
||||
struct GprsMs *ms = ms_alloc(bts, 0x12345678);
|
||||
struct gprs_rlcmac_tbf *tbf1 = tbf_alloc_dl_tbf(bts, ms, 0, true);
|
||||
tbf1->trx = &bts->trx[0];
|
||||
struct gprs_rlcmac_pdch *pdch = &tbf1->trx->pdch[0];
|
||||
int rc;
|
||||
uint32_t fn, last_fn;
|
||||
|
||||
fn = start_fn;
|
||||
while (fn < 40 || fn >= start_fn) {
|
||||
printf("*** RESERVE FN=%" PRIu32 ":\n", fn);
|
||||
rc = pdch_ulc_reserve_tbf_poll(pdch->ulc, fn, tbf1);
|
||||
OSMO_ASSERT(rc == 0);
|
||||
print_ulc_nodes(pdch->ulc);
|
||||
fn = fn_next_block(fn);
|
||||
}
|
||||
last_fn = fn;
|
||||
|
||||
/* Expiring fn_next_block(start_fn) should only expire first 2 entries here: */
|
||||
fn = fn_next_block(start_fn);
|
||||
printf("*** EXPIRE FN=%" PRIu32 ":\n", fn);
|
||||
pdch_ulc_expire_fn(pdch->ulc, fn);
|
||||
print_ulc_nodes(pdch->ulc);
|
||||
|
||||
/* We should still be able to release FN=0 here, since it came later: */
|
||||
printf("*** RELEASE fn=%" PRIu32 ":\n", 0);
|
||||
rc = pdch_ulc_release_fn(pdch->ulc, 0);
|
||||
print_ulc_nodes(pdch->ulc);
|
||||
//OSMO_ASSERT(rc == 0); FIXME: DISABLED DUE TO BUG!
|
||||
|
||||
/* Expiring last FN should expire all entries */
|
||||
printf("*** EXPIRE FN=%" PRIu32 ":\n", last_fn);
|
||||
pdch_ulc_expire_fn(pdch->ulc, last_fn);
|
||||
print_ulc_nodes(pdch->ulc);
|
||||
/* Make sure the store is empty now: */
|
||||
//OSMO_ASSERT(!rb_first(&pdch->ulc->tree_root)); FIXME: DISABLED DUE TO BUG!
|
||||
|
||||
talloc_free(bts);
|
||||
printf("=== end: %s ===\n", __FUNCTION__);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
tall_pcu_ctx = talloc_named_const(NULL, 1, "pdch_ulc test context");
|
||||
|
@ -161,6 +230,7 @@ int main(int argc, char **argv)
|
|||
the_pcu = gprs_pcu_alloc(tall_pcu_ctx);
|
||||
|
||||
test_reserve_multiple();
|
||||
test_fn_wrap_around();
|
||||
|
||||
talloc_free(the_pcu);
|
||||
return EXIT_SUCCESS;
|
||||
|
|
|
@ -4,3 +4,28 @@ PDCH(bts=0,trx=0,ts=0) Trying to reserve already reserved FN 72
|
|||
PDCH(bts=0,trx=0,ts=0) Trying to reserve already reserved FN 78
|
||||
PDCH(bts=0,trx=0,ts=0) Trying to release unregistered SBA (FN=78, TA=0)
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered SBA (FN=72, TA=0)
|
||||
Creating MS object, TLLI = 0x12345678
|
||||
MS(TLLI=0x12345678, IMSI=, TA=220, 0/0,) Attaching DL TBF: TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=0 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=0): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=4 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=4): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=8 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=8): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=13 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=17 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=21 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=21): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=26 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=26): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=30 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=30): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=34 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=34): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=39 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=39): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)
|
||||
PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=2715608 is still reserved!
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=2715608): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)
|
||||
PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=2715613): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)
|
||||
|
|
|
@ -1,2 +1,237 @@
|
|||
=== start: test_reserve_multiple ===
|
||||
=== end: test_reserve_multiple ===
|
||||
=== start: test_fn_wrap_around ===
|
||||
*** RESERVE FN=2715608:
|
||||
FN=2715608 type=POLL
|
||||
*** RESERVE FN=2715613:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
*** RESERVE FN=2715617:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
*** RESERVE FN=2715622:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
*** RESERVE FN=2715626:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
*** RESERVE FN=2715630:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
*** RESERVE FN=2715635:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
*** RESERVE FN=2715639:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
*** RESERVE FN=2715643:
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=0:
|
||||
FN=0 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=4:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=8:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=13:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=17:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=17 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=21:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=17 type=POLL
|
||||
FN=21 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=26:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=17 type=POLL
|
||||
FN=21 type=POLL
|
||||
FN=26 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=30:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=17 type=POLL
|
||||
FN=21 type=POLL
|
||||
FN=26 type=POLL
|
||||
FN=30 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=34:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=17 type=POLL
|
||||
FN=21 type=POLL
|
||||
FN=26 type=POLL
|
||||
FN=30 type=POLL
|
||||
FN=34 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RESERVE FN=39:
|
||||
FN=0 type=POLL
|
||||
FN=4 type=POLL
|
||||
FN=8 type=POLL
|
||||
FN=13 type=POLL
|
||||
FN=17 type=POLL
|
||||
FN=21 type=POLL
|
||||
FN=26 type=POLL
|
||||
FN=30 type=POLL
|
||||
FN=34 type=POLL
|
||||
FN=39 type=POLL
|
||||
FN=2715608 type=POLL
|
||||
FN=2715613 type=POLL
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** EXPIRE FN=2715613:
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** RELEASE fn=0:
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
*** EXPIRE FN=43:
|
||||
FN=2715617 type=POLL
|
||||
FN=2715622 type=POLL
|
||||
FN=2715626 type=POLL
|
||||
FN=2715630 type=POLL
|
||||
FN=2715635 type=POLL
|
||||
FN=2715639 type=POLL
|
||||
FN=2715643 type=POLL
|
||||
=== end: test_fn_wrap_around ===
|
||||
|
|
Loading…
Reference in New Issue