From 14376a73a5916a3dfa5bb65a2487d364a933e4c8 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Tue, 7 Jul 2015 11:31:28 +0200 Subject: alloc/test: Delete first TBF after the second is allocated Currently when using the test modes TEST_MODE_DL_AFTER_UL or TEST_MODE_UL_AFTER_DL, the first TBF is deleted before the second is allocated. The far more interesting case were to keep the first TBF a little bit longer until the second TBF has been created and delete then. This comes closer the the situation observed with real MS, where the first TBF takes some time (timeout or waiting for Ack) before it gets deleted and thus detached from the MS object. This commit delays the call to tbf_free accordingly. The effect can be observed in the results of the algo A tests, where the uniform distribution of the allocated PDCH is lost. Sponsored-by: On-Waves ehf --- tests/alloc/AllocTest.cpp | 34 +++++------ tests/alloc/AllocTest.err | 2 +- tests/alloc/AllocTest.ok | 141 +++++++++++++++++++--------------------------- 3 files changed, 77 insertions(+), 100 deletions(-) diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 874f9070..bf93f579 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -461,34 +461,36 @@ static GprsMs *alloc_tbfs(BTS *the_bts, GprsMs *ms, unsigned ms_class, GprsMs::Guard guard(ms); - /* Optionally delete the TBF */ - switch (mode) { - case TEST_MODE_DL_AFTER_UL: - case TEST_MODE_UL_AFTER_DL: - tbf_free(tbf); - break; - - default: - break; - } - /* Continue with what is needed next */ switch (mode) { case TEST_MODE_UL_ONLY: case TEST_MODE_DL_ONLY: /* We are done */ - return ms; + break; case TEST_MODE_DL_AFTER_UL: case TEST_MODE_UL_AND_DL: - return alloc_tbfs(the_bts, ms, ms_class, TEST_MODE_DL_ONLY); + ms = alloc_tbfs(the_bts, ms, ms_class, TEST_MODE_DL_ONLY); + break; case TEST_MODE_UL_AFTER_DL: case TEST_MODE_DL_AND_UL: - return alloc_tbfs(the_bts, ms, ms_class, TEST_MODE_UL_ONLY); + ms = alloc_tbfs(the_bts, ms, ms_class, TEST_MODE_UL_ONLY); + break; + } + + /* Optionally delete the TBF */ + switch (mode) { + case TEST_MODE_DL_AFTER_UL: + case TEST_MODE_UL_AFTER_DL: + tbf_free(tbf); + break; + + default: + break; } - return NULL; + return ms; } static void test_successive_allocation(algo_t algo, unsigned min_class, @@ -584,7 +586,7 @@ static void test_successive_allocation() 32, "algorithm B class 10 (DL after UL)"); test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_UL_AFTER_DL, - 32, "algorithm A (UL after DL)"); + 7, "algorithm A (UL after DL)"); test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_UL_AFTER_DL, 32, "algorithm B class 10 (UL after DL)"); diff --git a/tests/alloc/AllocTest.err b/tests/alloc/AllocTest.err index af9b1340..7bb29950 100644 --- a/tests/alloc/AllocTest.err +++ b/tests/alloc/AllocTest.err @@ -11,7 +11,7 @@ No TFI available. No TFI available. No TFI available. No TFI available. -No TFI available. +- Failed to allocate a TS, no USF available No TFI available. No TFI available. No TFI available. diff --git a/tests/alloc/AllocTest.ok b/tests/alloc/AllocTest.ok index cfd0441c..231b42fd 100644 --- a/tests/alloc/AllocTest.ok +++ b/tests/alloc/AllocTest.ok @@ -8828,37 +8828,37 @@ Going to test assignment with many TBF, algorithm B class 10 (DL and UL) Successfully allocated 32 UL TBFs Going to test assignment with many TBF, algorithm A (DL after UL) TBF[0] class 1 reserves ...C.... - TBF[1] class 1 reserves ....C... - TBF[2] class 1 reserves .....C.. - TBF[3] class 1 reserves ......C. - TBF[4] class 1 reserves .......C + TBF[1] class 1 reserves ...C.... + TBF[2] class 1 reserves ...C.... + TBF[3] class 1 reserves ...C.... + TBF[4] class 1 reserves ...C.... TBF[5] class 1 reserves ...C.... - TBF[6] class 1 reserves ....C... - TBF[7] class 1 reserves .....C.. - TBF[8] class 1 reserves ......C. - TBF[9] class 1 reserves .......C + TBF[6] class 1 reserves ...C.... + TBF[7] class 1 reserves ...C.... + TBF[8] class 1 reserves ...C.... + TBF[9] class 1 reserves ...C.... TBF[10] class 1 reserves ...C.... - TBF[11] class 1 reserves ....C... - TBF[12] class 1 reserves .....C.. - TBF[13] class 1 reserves ......C. - TBF[14] class 1 reserves .......C + TBF[11] class 1 reserves ...C.... + TBF[12] class 1 reserves ...C.... + TBF[13] class 1 reserves ...C.... + TBF[14] class 1 reserves ...C.... TBF[15] class 1 reserves ...C.... - TBF[16] class 1 reserves ....C... - TBF[17] class 1 reserves .....C.. - TBF[18] class 1 reserves ......C. - TBF[19] class 1 reserves .......C + TBF[16] class 1 reserves ...C.... + TBF[17] class 1 reserves ...C.... + TBF[18] class 1 reserves ...C.... + TBF[19] class 1 reserves ...C.... TBF[20] class 1 reserves ...C.... - TBF[21] class 1 reserves ....C... - TBF[22] class 1 reserves .....C.. - TBF[23] class 1 reserves ......C. - TBF[24] class 1 reserves .......C + TBF[21] class 1 reserves ...C.... + TBF[22] class 1 reserves ...C.... + TBF[23] class 1 reserves ...C.... + TBF[24] class 1 reserves ...C.... TBF[25] class 1 reserves ...C.... - TBF[26] class 1 reserves ....C... - TBF[27] class 1 reserves .....C.. - TBF[28] class 1 reserves ......C. - TBF[29] class 1 reserves .......C + TBF[26] class 1 reserves ...C.... + TBF[27] class 1 reserves ...C.... + TBF[28] class 1 reserves ...C.... + TBF[29] class 1 reserves ...C.... TBF[30] class 1 reserves ...C.... - TBF[31] class 1 reserves ....C... + TBF[31] class 1 reserves ...C.... Successfully allocated 32 UL TBFs Going to test assignment with many TBF, algorithm B class 10 (DL after UL) TBF[0] class 10 reserves ...DDCD. @@ -8883,83 +8883,58 @@ Going to test assignment with many TBF, algorithm B class 10 (DL after UL) TBF[19] class 10 reserves .....DCD TBF[20] class 10 reserves ...DCD.. TBF[21] class 10 reserves .....DCD - TBF[22] class 10 reserves ...CD... + TBF[22] class 10 reserves ...DCD.. TBF[23] class 10 reserves .....DCD - TBF[24] class 10 reserves ...CD... - TBF[25] class 10 reserves ...CD... - TBF[26] class 10 reserves .....DCD - TBF[27] class 10 reserves ...CD... - TBF[28] class 10 reserves ....DCD. + TBF[24] class 10 reserves ...DCD.. + TBF[25] class 10 reserves .....DCD + TBF[26] class 10 reserves ...DCD.. + TBF[27] class 10 reserves .....DCD + TBF[28] class 10 reserves ...DCD.. TBF[29] class 10 reserves .....DCD - TBF[30] class 10 reserves ...CD... - TBF[31] class 10 reserves ...CD... + TBF[30] class 10 reserves ...DCD.. + TBF[31] class 10 reserves .....DCD Successfully allocated 32 UL TBFs Going to test assignment with many TBF, algorithm A (UL after DL) TBF[0] class 1 reserves ...U.... - TBF[1] class 1 reserves ....U... - TBF[2] class 1 reserves .....U.. - TBF[3] class 1 reserves ......U. - TBF[4] class 1 reserves .......U + TBF[1] class 1 reserves ...U.... + TBF[2] class 1 reserves ...U.... + TBF[3] class 1 reserves ...U.... + TBF[4] class 1 reserves ...U.... TBF[5] class 1 reserves ...U.... - TBF[6] class 1 reserves ....U... - TBF[7] class 1 reserves .....U.. - TBF[8] class 1 reserves ......U. - TBF[9] class 1 reserves .......U - TBF[10] class 1 reserves ...U.... - TBF[11] class 1 reserves ....U... - TBF[12] class 1 reserves .....U.. - TBF[13] class 1 reserves ......U. - TBF[14] class 1 reserves .......U - TBF[15] class 1 reserves ...U.... - TBF[16] class 1 reserves ....U... - TBF[17] class 1 reserves .....U.. - TBF[18] class 1 reserves ......U. - TBF[19] class 1 reserves .......U - TBF[20] class 1 reserves ...U.... - TBF[21] class 1 reserves ....U... - TBF[22] class 1 reserves .....U.. - TBF[23] class 1 reserves ......U. - TBF[24] class 1 reserves .......U - TBF[25] class 1 reserves ...U.... - TBF[26] class 1 reserves ....U... - TBF[27] class 1 reserves .....U.. - TBF[28] class 1 reserves ......U. - TBF[29] class 1 reserves .......U - TBF[30] class 1 reserves ...U.... - TBF[31] class 1 reserves ....U... - Successfully allocated 32 UL TBFs + TBF[6] class 1 reserves ...U.... + Successfully allocated 7 UL TBFs Going to test assignment with many TBF, algorithm B class 10 (UL after DL) TBF[0] class 10 reserves .....U.. TBF[1] class 10 reserves ......U. TBF[2] class 10 reserves ....U... - TBF[3] class 10 reserves .......U + TBF[3] class 10 reserves ......U. TBF[4] class 10 reserves ....U... TBF[5] class 10 reserves ......U. - TBF[6] class 10 reserves .....U.. - TBF[7] class 10 reserves .......U + TBF[6] class 10 reserves ....U... + TBF[7] class 10 reserves ......U. TBF[8] class 10 reserves ....U... TBF[9] class 10 reserves ......U. - TBF[10] class 10 reserves .....U.. - TBF[11] class 10 reserves .......U + TBF[10] class 10 reserves ....U... + TBF[11] class 10 reserves ......U. TBF[12] class 10 reserves ....U... TBF[13] class 10 reserves ......U. - TBF[14] class 10 reserves .....U.. - TBF[15] class 10 reserves .......U - TBF[16] class 10 reserves ....U... - TBF[17] class 10 reserves ......U. + TBF[14] class 10 reserves ....U... + TBF[15] class 10 reserves .....U.. + TBF[16] class 10 reserves .....U.. + TBF[17] class 10 reserves .....U.. TBF[18] class 10 reserves .....U.. - TBF[19] class 10 reserves .......U - TBF[20] class 10 reserves ....U... - TBF[21] class 10 reserves ......U. - TBF[22] class 10 reserves .....U.. + TBF[19] class 10 reserves .....U.. + TBF[20] class 10 reserves .....U.. + TBF[21] class 10 reserves .......U + TBF[22] class 10 reserves .......U TBF[23] class 10 reserves .......U - TBF[24] class 10 reserves ....U... - TBF[25] class 10 reserves ......U. - TBF[26] class 10 reserves .....U.. - TBF[27] class 10 reserves ...U.... - TBF[28] class 10 reserves .......U + TBF[24] class 10 reserves .......U + TBF[25] class 10 reserves .......U + TBF[26] class 10 reserves ...U.... + TBF[27] class 10 reserves .......U + TBF[28] class 10 reserves ...U.... TBF[29] class 10 reserves ...U.... - TBF[30] class 10 reserves ...U.... + TBF[30] class 10 reserves .......U TBF[31] class 10 reserves ...U.... Successfully allocated 32 UL TBFs Going to test assignment with many TBF, algorithm A (UL only) -- cgit v1.2.3