alloc/test: Add test for interleaved TBF chains

MS iniated TCP connections generally result in a sequence
of short time UL and longer lasting DL TBFs, being interleaved
between several MS. This scenario is not covered by the existing
tests.

This commit adds a test, that allocates as man as possible TBFs
several times with different test modes without clearing the BTS (and
thus the TBF list) in between. The number of allocated DL TBFs in
each round is expected to be constant.

Sponsored-by: On-Waves ehf
diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp
index 6732058..19ca718 100644
--- a/tests/alloc/AllocTest.cpp
+++ b/tests/alloc/AllocTest.cpp
@@ -646,6 +646,55 @@
 	check_tfi_usage(&the_bts);
 }
 
+static void test_many_connections(algo_t algo, unsigned expect_num,
+	const char *text)
+{
+	BTS the_bts;
+	struct gprs_rlcmac_bts *bts;
+	struct gprs_rlcmac_trx *trx;
+	int counter1, counter2 = -1;
+	unsigned i;
+	enum test_mode mode_seq[] = {
+		TEST_MODE_DL_AFTER_UL,
+		TEST_MODE_UL_ONLY,
+		TEST_MODE_DL_AFTER_UL,
+		TEST_MODE_DL_ONLY,
+	};
+
+	printf("Going to test assignment with many connections, %s\n", text);
+
+	bts = the_bts.bts_data();
+	bts->alloc_algorithm = algo;
+
+	trx = &bts->trx[0];
+	trx->pdch[3].enable();
+	trx->pdch[4].enable();
+	trx->pdch[5].enable();
+	trx->pdch[6].enable();
+	trx->pdch[7].enable();
+
+	for (i = 0; i < ARRAY_SIZE(mode_seq); i += 1) {
+		counter1 = alloc_many_tbfs(&the_bts, 1, 29, mode_seq[i]);
+		fprintf(stderr, "  Allocated %d TBFs (previously %d)\n",
+			counter1, counter2);
+
+		check_tfi_usage(&the_bts);
+
+		/* This will stop earlier due to USF shortage */
+		if (mode_seq[i] == TEST_MODE_UL_ONLY)
+			continue;
+
+		if (counter2 >= 0)
+			OSMO_ASSERT(counter1 >= counter2);
+
+		counter2 = counter1;
+	}
+
+	printf("  Successfully allocated %d TBFs\n", counter1);
+
+	OSMO_ASSERT(expect_num == (unsigned)counter1);
+}
+
 static void test_successive_allocation()
 {
 	test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_UL_AND_DL,
@@ -685,6 +734,12 @@
 		32, "algorithm B class 10 (DL ONLY)");
 }
 
+static void test_many_connections()
+{
+	test_many_connections(alloc_algorithm_a, 160, "algorithm A");
+	test_many_connections(alloc_algorithm_b, 32, "algorithm B");
+}
+
 int main(int argc, char **argv)
 {
 	tall_pcu_ctx = talloc_named_const(NULL, 1, "moiji-mobile AllocTest context");
@@ -701,6 +756,7 @@
 	test_alloc_a();
 	test_alloc_b();
 	test_successive_allocation();
+	test_many_connections();
 	return EXIT_SUCCESS;
 }
 
diff --git a/tests/alloc/AllocTest.err b/tests/alloc/AllocTest.err
index 33925dc..c3852fe 100644
--- a/tests/alloc/AllocTest.err
+++ b/tests/alloc/AllocTest.err
@@ -51,3 +51,412 @@
 No TFI available.
 No TFI available.
 - Failed to allocate a TFI
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+- Failed to find a usable TRX (TFI exhausted)
+  Allocated 160 TBFs (previously -1)
+- Failed to allocate a TS, no TFI or USF available
+  Allocated 35 TBFs (previously 160)
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+- Failed to find a usable TRX (TFI exhausted)
+  Allocated 160 TBFs (previously 160)
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+- Failed to find a usable TRX (TFI exhausted)
+  Allocated 160 TBFs (previously 160)
+No TFI available.
+No TFI available.
+- Failed to allocate a TFI
+  Allocated 32 TBFs (previously -1)
+No USF available
+  Allocated 24 TBFs (previously 32)
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+- Failed to allocate a TFI
+  Allocated 32 TBFs (previously 32)
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+No TFI available.
+- Failed to allocate a TFI
+  Allocated 32 TBFs (previously 32)
diff --git a/tests/alloc/AllocTest.ok b/tests/alloc/AllocTest.ok
index fc96cb9..8733e9a 100644
--- a/tests/alloc/AllocTest.ok
+++ b/tests/alloc/AllocTest.ok
@@ -9366,3 +9366,642 @@
  TBF[30] class 10 reserves ...CD...
  TBF[31] class 10 reserves ...CD...
   Successfully allocated 32 UL TBFs
+Going to test assignment with many connections, algorithm A
+ TBF[0] class 1 reserves ...C....
+ TBF[0] class 2 reserves ....C...
+ TBF[0] class 3 reserves .....C..
+ TBF[0] class 4 reserves ......C.
+ TBF[0] class 5 reserves .......C
+ TBF[1] class 6 reserves ...C....
+ TBF[1] class 7 reserves ....C...
+ TBF[1] class 8 reserves .....C..
+ TBF[1] class 9 reserves ......C.
+ TBF[1] class 10 reserves .......C
+ TBF[2] class 11 reserves ...C....
+ TBF[2] class 12 reserves ....C...
+ TBF[2] class 13 reserves .....C..
+ TBF[2] class 14 reserves ......C.
+ TBF[2] class 15 reserves .......C
+ TBF[3] class 16 reserves ...C....
+ TBF[3] class 17 reserves ....C...
+ TBF[3] class 18 reserves .....C..
+ TBF[3] class 19 reserves ......C.
+ TBF[3] class 20 reserves .......C
+ TBF[4] class 21 reserves ...C....
+ TBF[4] class 22 reserves ....C...
+ TBF[4] class 23 reserves .....C..
+ TBF[4] class 24 reserves ......C.
+ TBF[4] class 25 reserves .......C
+ TBF[5] class 26 reserves ...C....
+ TBF[5] class 27 reserves ....C...
+ TBF[5] class 28 reserves .....C..
+ TBF[5] class 29 reserves ......C.
+ TBF[5] class 1 reserves .......C
+ TBF[6] class 2 reserves ...C....
+ TBF[6] class 3 reserves ....C...
+ TBF[6] class 4 reserves .....C..
+ TBF[6] class 5 reserves ......C.
+ TBF[6] class 6 reserves .......C
+ TBF[7] class 7 reserves ...C....
+ TBF[7] class 8 reserves ....C...
+ TBF[7] class 9 reserves .....C..
+ TBF[7] class 10 reserves ......C.
+ TBF[7] class 11 reserves .......C
+ TBF[8] class 12 reserves ...C....
+ TBF[8] class 13 reserves ....C...
+ TBF[8] class 14 reserves .....C..
+ TBF[8] class 15 reserves ......C.
+ TBF[8] class 16 reserves .......C
+ TBF[9] class 17 reserves ...C....
+ TBF[9] class 18 reserves ....C...
+ TBF[9] class 19 reserves .....C..
+ TBF[9] class 20 reserves ......C.
+ TBF[9] class 21 reserves .......C
+ TBF[10] class 22 reserves ...C....
+ TBF[10] class 23 reserves ....C...
+ TBF[10] class 24 reserves .....C..
+ TBF[10] class 25 reserves ......C.
+ TBF[10] class 26 reserves .......C
+ TBF[11] class 27 reserves ...C....
+ TBF[11] class 28 reserves ....C...
+ TBF[11] class 29 reserves .....C..
+ TBF[11] class 1 reserves ......C.
+ TBF[11] class 2 reserves .......C
+ TBF[12] class 3 reserves ...C....
+ TBF[12] class 4 reserves ....C...
+ TBF[12] class 5 reserves .....C..
+ TBF[12] class 6 reserves ......C.
+ TBF[12] class 7 reserves .......C
+ TBF[13] class 8 reserves ...C....
+ TBF[13] class 9 reserves ....C...
+ TBF[13] class 10 reserves .....C..
+ TBF[13] class 11 reserves ......C.
+ TBF[13] class 12 reserves .......C
+ TBF[14] class 13 reserves ...C....
+ TBF[14] class 14 reserves ....C...
+ TBF[14] class 15 reserves .....C..
+ TBF[14] class 16 reserves ......C.
+ TBF[14] class 17 reserves .......C
+ TBF[15] class 18 reserves ...C....
+ TBF[15] class 19 reserves ....C...
+ TBF[15] class 20 reserves .....C..
+ TBF[15] class 21 reserves ......C.
+ TBF[15] class 22 reserves .......C
+ TBF[16] class 23 reserves ...C....
+ TBF[16] class 24 reserves ....C...
+ TBF[16] class 25 reserves .....C..
+ TBF[16] class 26 reserves ......C.
+ TBF[16] class 27 reserves .......C
+ TBF[17] class 28 reserves ...C....
+ TBF[17] class 29 reserves ....C...
+ TBF[17] class 1 reserves .....C..
+ TBF[17] class 2 reserves ......C.
+ TBF[17] class 3 reserves .......C
+ TBF[18] class 4 reserves ...C....
+ TBF[18] class 5 reserves ....C...
+ TBF[18] class 6 reserves .....C..
+ TBF[18] class 7 reserves ......C.
+ TBF[18] class 8 reserves .......C
+ TBF[19] class 9 reserves ...C....
+ TBF[19] class 10 reserves ....C...
+ TBF[19] class 11 reserves .....C..
+ TBF[19] class 12 reserves ......C.
+ TBF[19] class 13 reserves .......C
+ TBF[20] class 14 reserves ...C....
+ TBF[20] class 15 reserves ....C...
+ TBF[20] class 16 reserves .....C..
+ TBF[20] class 17 reserves ......C.
+ TBF[20] class 18 reserves .......C
+ TBF[21] class 19 reserves ...C....
+ TBF[21] class 20 reserves ....C...
+ TBF[21] class 21 reserves .....C..
+ TBF[21] class 22 reserves ......C.
+ TBF[21] class 23 reserves .......C
+ TBF[22] class 24 reserves ...C....
+ TBF[22] class 25 reserves ....C...
+ TBF[22] class 26 reserves .....C..
+ TBF[22] class 27 reserves ......C.
+ TBF[22] class 28 reserves .......C
+ TBF[23] class 29 reserves ...C....
+ TBF[23] class 1 reserves ....C...
+ TBF[23] class 2 reserves .....C..
+ TBF[23] class 3 reserves ......C.
+ TBF[23] class 4 reserves .......C
+ TBF[24] class 5 reserves ...C....
+ TBF[24] class 6 reserves ....C...
+ TBF[24] class 7 reserves .....C..
+ TBF[24] class 8 reserves ......C.
+ TBF[24] class 9 reserves .......C
+ TBF[25] class 10 reserves ...C....
+ TBF[25] class 11 reserves ....C...
+ TBF[25] class 12 reserves .....C..
+ TBF[25] class 13 reserves ......C.
+ TBF[25] class 14 reserves .......C
+ TBF[26] class 15 reserves ...C....
+ TBF[26] class 16 reserves ....C...
+ TBF[26] class 17 reserves .....C..
+ TBF[26] class 18 reserves ......C.
+ TBF[26] class 19 reserves .......C
+ TBF[27] class 20 reserves ...C....
+ TBF[27] class 21 reserves ....C...
+ TBF[27] class 22 reserves .....C..
+ TBF[27] class 23 reserves ......C.
+ TBF[27] class 24 reserves .......C
+ TBF[28] class 25 reserves ...C....
+ TBF[28] class 26 reserves ....C...
+ TBF[28] class 27 reserves .....C..
+ TBF[28] class 28 reserves ......C.
+ TBF[28] class 29 reserves .......C
+ TBF[29] class 1 reserves ...C....
+ TBF[29] class 2 reserves ....C...
+ TBF[29] class 3 reserves .....C..
+ TBF[29] class 4 reserves ......C.
+ TBF[29] class 5 reserves .......C
+ TBF[30] class 6 reserves ...C....
+ TBF[30] class 7 reserves ....C...
+ TBF[30] class 8 reserves .....C..
+ TBF[30] class 9 reserves ......C.
+ TBF[30] class 10 reserves .......C
+ TBF[31] class 11 reserves ...C....
+ TBF[31] class 12 reserves ....C...
+ TBF[31] class 13 reserves .....C..
+ TBF[31] class 14 reserves ......C.
+ TBF[31] class 15 reserves .......C
+ TBF[0] class 1 reserves ...C....
+ TBF[0] class 2 reserves ....C...
+ TBF[0] class 3 reserves .....C..
+ TBF[0] class 4 reserves ......C.
+ TBF[0] class 5 reserves .......C
+ TBF[1] class 6 reserves ...C....
+ TBF[1] class 7 reserves ....C...
+ TBF[1] class 8 reserves .....C..
+ TBF[1] class 9 reserves ......C.
+ TBF[1] class 10 reserves .......C
+ TBF[2] class 11 reserves ...C....
+ TBF[2] class 12 reserves ....C...
+ TBF[2] class 13 reserves .....C..
+ TBF[2] class 14 reserves ......C.
+ TBF[2] class 15 reserves .......C
+ TBF[3] class 16 reserves ...C....
+ TBF[3] class 17 reserves ....C...
+ TBF[3] class 18 reserves .....C..
+ TBF[3] class 19 reserves ......C.
+ TBF[3] class 20 reserves .......C
+ TBF[4] class 21 reserves ...C....
+ TBF[4] class 22 reserves ....C...
+ TBF[4] class 23 reserves .....C..
+ TBF[4] class 24 reserves ......C.
+ TBF[4] class 25 reserves .......C
+ TBF[5] class 26 reserves ...C....
+ TBF[5] class 27 reserves ....C...
+ TBF[5] class 28 reserves .....C..
+ TBF[5] class 29 reserves ......C.
+ TBF[5] class 1 reserves .......C
+ TBF[6] class 2 reserves ...C....
+ TBF[6] class 3 reserves ....C...
+ TBF[6] class 4 reserves .....C..
+ TBF[6] class 5 reserves ......C.
+ TBF[6] class 6 reserves .......C
+ TBF[0] class 1 reserves ...C....
+ TBF[0] class 2 reserves ....C...
+ TBF[0] class 3 reserves .....C..
+ TBF[0] class 4 reserves ......C.
+ TBF[0] class 5 reserves .......C
+ TBF[1] class 6 reserves ...C....
+ TBF[1] class 7 reserves ....C...
+ TBF[1] class 8 reserves .....C..
+ TBF[1] class 9 reserves ......C.
+ TBF[1] class 10 reserves .......C
+ TBF[2] class 11 reserves ...C....
+ TBF[2] class 12 reserves ....C...
+ TBF[2] class 13 reserves .....C..
+ TBF[2] class 14 reserves ......C.
+ TBF[2] class 15 reserves .......C
+ TBF[3] class 16 reserves ...C....
+ TBF[3] class 17 reserves ....C...
+ TBF[3] class 18 reserves .....C..
+ TBF[3] class 19 reserves ......C.
+ TBF[3] class 20 reserves .......C
+ TBF[4] class 21 reserves ...C....
+ TBF[4] class 22 reserves ....C...
+ TBF[4] class 23 reserves .....C..
+ TBF[4] class 24 reserves ......C.
+ TBF[4] class 25 reserves .......C
+ TBF[5] class 26 reserves ...C....
+ TBF[5] class 27 reserves ....C...
+ TBF[5] class 28 reserves .....C..
+ TBF[5] class 29 reserves ......C.
+ TBF[5] class 1 reserves .......C
+ TBF[6] class 2 reserves ...C....
+ TBF[6] class 3 reserves ....C...
+ TBF[6] class 4 reserves .....C..
+ TBF[6] class 5 reserves ......C.
+ TBF[6] class 6 reserves .......C
+ TBF[7] class 7 reserves ...C....
+ TBF[7] class 8 reserves ....C...
+ TBF[7] class 9 reserves .....C..
+ TBF[7] class 10 reserves ......C.
+ TBF[7] class 11 reserves .......C
+ TBF[8] class 12 reserves ...C....
+ TBF[8] class 13 reserves ....C...
+ TBF[8] class 14 reserves .....C..
+ TBF[8] class 15 reserves ......C.
+ TBF[8] class 16 reserves .......C
+ TBF[9] class 17 reserves ...C....
+ TBF[9] class 18 reserves ....C...
+ TBF[9] class 19 reserves .....C..
+ TBF[9] class 20 reserves ......C.
+ TBF[9] class 21 reserves .......C
+ TBF[10] class 22 reserves ...C....
+ TBF[10] class 23 reserves ....C...
+ TBF[10] class 24 reserves .....C..
+ TBF[10] class 25 reserves ......C.
+ TBF[10] class 26 reserves .......C
+ TBF[11] class 27 reserves ...C....
+ TBF[11] class 28 reserves ....C...
+ TBF[11] class 29 reserves .....C..
+ TBF[11] class 1 reserves ......C.
+ TBF[11] class 2 reserves .......C
+ TBF[12] class 3 reserves ...C....
+ TBF[12] class 4 reserves ....C...
+ TBF[12] class 5 reserves .....C..
+ TBF[12] class 6 reserves ......C.
+ TBF[12] class 7 reserves .......C
+ TBF[13] class 8 reserves ...C....
+ TBF[13] class 9 reserves ....C...
+ TBF[13] class 10 reserves .....C..
+ TBF[13] class 11 reserves ......C.
+ TBF[13] class 12 reserves .......C
+ TBF[14] class 13 reserves ...C....
+ TBF[14] class 14 reserves ....C...
+ TBF[14] class 15 reserves .....C..
+ TBF[14] class 16 reserves ......C.
+ TBF[14] class 17 reserves .......C
+ TBF[15] class 18 reserves ...C....
+ TBF[15] class 19 reserves ....C...
+ TBF[15] class 20 reserves .....C..
+ TBF[15] class 21 reserves ......C.
+ TBF[15] class 22 reserves .......C
+ TBF[16] class 23 reserves ...C....
+ TBF[16] class 24 reserves ....C...
+ TBF[16] class 25 reserves .....C..
+ TBF[16] class 26 reserves ......C.
+ TBF[16] class 27 reserves .......C
+ TBF[17] class 28 reserves ...C....
+ TBF[17] class 29 reserves ....C...
+ TBF[17] class 1 reserves .....C..
+ TBF[17] class 2 reserves ......C.
+ TBF[17] class 3 reserves .......C
+ TBF[18] class 4 reserves ...C....
+ TBF[18] class 5 reserves ....C...
+ TBF[18] class 6 reserves .....C..
+ TBF[18] class 7 reserves ......C.
+ TBF[18] class 8 reserves .......C
+ TBF[19] class 9 reserves ...C....
+ TBF[19] class 10 reserves ....C...
+ TBF[19] class 11 reserves .....C..
+ TBF[19] class 12 reserves ......C.
+ TBF[19] class 13 reserves .......C
+ TBF[20] class 14 reserves ...C....
+ TBF[20] class 15 reserves ....C...
+ TBF[20] class 16 reserves .....C..
+ TBF[20] class 17 reserves ......C.
+ TBF[20] class 18 reserves .......C
+ TBF[21] class 19 reserves ...C....
+ TBF[21] class 20 reserves ....C...
+ TBF[21] class 21 reserves .....C..
+ TBF[21] class 22 reserves ......C.
+ TBF[21] class 23 reserves .......C
+ TBF[22] class 24 reserves ...C....
+ TBF[22] class 25 reserves ....C...
+ TBF[22] class 26 reserves .....C..
+ TBF[22] class 27 reserves ......C.
+ TBF[22] class 28 reserves .......C
+ TBF[23] class 29 reserves ...C....
+ TBF[23] class 1 reserves ....C...
+ TBF[23] class 2 reserves .....C..
+ TBF[23] class 3 reserves ......C.
+ TBF[23] class 4 reserves .......C
+ TBF[24] class 5 reserves ...C....
+ TBF[24] class 6 reserves ....C...
+ TBF[24] class 7 reserves .....C..
+ TBF[24] class 8 reserves ......C.
+ TBF[24] class 9 reserves .......C
+ TBF[25] class 10 reserves ...C....
+ TBF[25] class 11 reserves ....C...
+ TBF[25] class 12 reserves .....C..
+ TBF[25] class 13 reserves ......C.
+ TBF[25] class 14 reserves .......C
+ TBF[26] class 15 reserves ...C....
+ TBF[26] class 16 reserves ....C...
+ TBF[26] class 17 reserves .....C..
+ TBF[26] class 18 reserves ......C.
+ TBF[26] class 19 reserves .......C
+ TBF[27] class 20 reserves ...C....
+ TBF[27] class 21 reserves ....C...
+ TBF[27] class 22 reserves .....C..
+ TBF[27] class 23 reserves ......C.
+ TBF[27] class 24 reserves .......C
+ TBF[28] class 25 reserves ...C....
+ TBF[28] class 26 reserves ....C...
+ TBF[28] class 27 reserves .....C..
+ TBF[28] class 28 reserves ......C.
+ TBF[28] class 29 reserves .......C
+ TBF[29] class 1 reserves ...C....
+ TBF[29] class 2 reserves ....C...
+ TBF[29] class 3 reserves .....C..
+ TBF[29] class 4 reserves ......C.
+ TBF[29] class 5 reserves .......C
+ TBF[30] class 6 reserves ...C....
+ TBF[30] class 7 reserves ....C...
+ TBF[30] class 8 reserves .....C..
+ TBF[30] class 9 reserves ......C.
+ TBF[30] class 10 reserves .......C
+ TBF[31] class 11 reserves ...C....
+ TBF[31] class 12 reserves ....C...
+ TBF[31] class 13 reserves .....C..
+ TBF[31] class 14 reserves ......C.
+ TBF[31] class 15 reserves .......C
+ TBF[0] class 1 reserves ...C....
+ TBF[0] class 2 reserves ....C...
+ TBF[0] class 3 reserves .....C..
+ TBF[0] class 4 reserves ......C.
+ TBF[0] class 5 reserves .......C
+ TBF[1] class 6 reserves ...C....
+ TBF[1] class 7 reserves ....C...
+ TBF[1] class 8 reserves .....C..
+ TBF[1] class 9 reserves ......C.
+ TBF[1] class 10 reserves .......C
+ TBF[2] class 11 reserves ...C....
+ TBF[2] class 12 reserves ....C...
+ TBF[2] class 13 reserves .....C..
+ TBF[2] class 14 reserves ......C.
+ TBF[2] class 15 reserves .......C
+ TBF[3] class 16 reserves ...C....
+ TBF[3] class 17 reserves ....C...
+ TBF[3] class 18 reserves .....C..
+ TBF[3] class 19 reserves ......C.
+ TBF[3] class 20 reserves .......C
+ TBF[4] class 21 reserves ...C....
+ TBF[4] class 22 reserves ....C...
+ TBF[4] class 23 reserves .....C..
+ TBF[4] class 24 reserves ......C.
+ TBF[4] class 25 reserves .......C
+ TBF[5] class 26 reserves ...C....
+ TBF[5] class 27 reserves ....C...
+ TBF[5] class 28 reserves .....C..
+ TBF[5] class 29 reserves ......C.
+ TBF[5] class 1 reserves .......C
+ TBF[6] class 2 reserves ...C....
+ TBF[6] class 3 reserves ....C...
+ TBF[6] class 4 reserves .....C..
+ TBF[6] class 5 reserves ......C.
+ TBF[6] class 6 reserves .......C
+ TBF[7] class 7 reserves ...C....
+ TBF[7] class 8 reserves ....C...
+ TBF[7] class 9 reserves .....C..
+ TBF[7] class 10 reserves ......C.
+ TBF[7] class 11 reserves .......C
+ TBF[8] class 12 reserves ...C....
+ TBF[8] class 13 reserves ....C...
+ TBF[8] class 14 reserves .....C..
+ TBF[8] class 15 reserves ......C.
+ TBF[8] class 16 reserves .......C
+ TBF[9] class 17 reserves ...C....
+ TBF[9] class 18 reserves ....C...
+ TBF[9] class 19 reserves .....C..
+ TBF[9] class 20 reserves ......C.
+ TBF[9] class 21 reserves .......C
+ TBF[10] class 22 reserves ...C....
+ TBF[10] class 23 reserves ....C...
+ TBF[10] class 24 reserves .....C..
+ TBF[10] class 25 reserves ......C.
+ TBF[10] class 26 reserves .......C
+ TBF[11] class 27 reserves ...C....
+ TBF[11] class 28 reserves ....C...
+ TBF[11] class 29 reserves .....C..
+ TBF[11] class 1 reserves ......C.
+ TBF[11] class 2 reserves .......C
+ TBF[12] class 3 reserves ...C....
+ TBF[12] class 4 reserves ....C...
+ TBF[12] class 5 reserves .....C..
+ TBF[12] class 6 reserves ......C.
+ TBF[12] class 7 reserves .......C
+ TBF[13] class 8 reserves ...C....
+ TBF[13] class 9 reserves ....C...
+ TBF[13] class 10 reserves .....C..
+ TBF[13] class 11 reserves ......C.
+ TBF[13] class 12 reserves .......C
+ TBF[14] class 13 reserves ...C....
+ TBF[14] class 14 reserves ....C...
+ TBF[14] class 15 reserves .....C..
+ TBF[14] class 16 reserves ......C.
+ TBF[14] class 17 reserves .......C
+ TBF[15] class 18 reserves ...C....
+ TBF[15] class 19 reserves ....C...
+ TBF[15] class 20 reserves .....C..
+ TBF[15] class 21 reserves ......C.
+ TBF[15] class 22 reserves .......C
+ TBF[16] class 23 reserves ...C....
+ TBF[16] class 24 reserves ....C...
+ TBF[16] class 25 reserves .....C..
+ TBF[16] class 26 reserves ......C.
+ TBF[16] class 27 reserves .......C
+ TBF[17] class 28 reserves ...C....
+ TBF[17] class 29 reserves ....C...
+ TBF[17] class 1 reserves .....C..
+ TBF[17] class 2 reserves ......C.
+ TBF[17] class 3 reserves .......C
+ TBF[18] class 4 reserves ...C....
+ TBF[18] class 5 reserves ....C...
+ TBF[18] class 6 reserves .....C..
+ TBF[18] class 7 reserves ......C.
+ TBF[18] class 8 reserves .......C
+ TBF[19] class 9 reserves ...C....
+ TBF[19] class 10 reserves ....C...
+ TBF[19] class 11 reserves .....C..
+ TBF[19] class 12 reserves ......C.
+ TBF[19] class 13 reserves .......C
+ TBF[20] class 14 reserves ...C....
+ TBF[20] class 15 reserves ....C...
+ TBF[20] class 16 reserves .....C..
+ TBF[20] class 17 reserves ......C.
+ TBF[20] class 18 reserves .......C
+ TBF[21] class 19 reserves ...C....
+ TBF[21] class 20 reserves ....C...
+ TBF[21] class 21 reserves .....C..
+ TBF[21] class 22 reserves ......C.
+ TBF[21] class 23 reserves .......C
+ TBF[22] class 24 reserves ...C....
+ TBF[22] class 25 reserves ....C...
+ TBF[22] class 26 reserves .....C..
+ TBF[22] class 27 reserves ......C.
+ TBF[22] class 28 reserves .......C
+ TBF[23] class 29 reserves ...C....
+ TBF[23] class 1 reserves ....C...
+ TBF[23] class 2 reserves .....C..
+ TBF[23] class 3 reserves ......C.
+ TBF[23] class 4 reserves .......C
+ TBF[24] class 5 reserves ...C....
+ TBF[24] class 6 reserves ....C...
+ TBF[24] class 7 reserves .....C..
+ TBF[24] class 8 reserves ......C.
+ TBF[24] class 9 reserves .......C
+ TBF[25] class 10 reserves ...C....
+ TBF[25] class 11 reserves ....C...
+ TBF[25] class 12 reserves .....C..
+ TBF[25] class 13 reserves ......C.
+ TBF[25] class 14 reserves .......C
+ TBF[26] class 15 reserves ...C....
+ TBF[26] class 16 reserves ....C...
+ TBF[26] class 17 reserves .....C..
+ TBF[26] class 18 reserves ......C.
+ TBF[26] class 19 reserves .......C
+ TBF[27] class 20 reserves ...C....
+ TBF[27] class 21 reserves ....C...
+ TBF[27] class 22 reserves .....C..
+ TBF[27] class 23 reserves ......C.
+ TBF[27] class 24 reserves .......C
+ TBF[28] class 25 reserves ...C....
+ TBF[28] class 26 reserves ....C...
+ TBF[28] class 27 reserves .....C..
+ TBF[28] class 28 reserves ......C.
+ TBF[28] class 29 reserves .......C
+ TBF[29] class 1 reserves ...C....
+ TBF[29] class 2 reserves ....C...
+ TBF[29] class 3 reserves .....C..
+ TBF[29] class 4 reserves ......C.
+ TBF[29] class 5 reserves .......C
+ TBF[30] class 6 reserves ...C....
+ TBF[30] class 7 reserves ....C...
+ TBF[30] class 8 reserves .....C..
+ TBF[30] class 9 reserves ......C.
+ TBF[30] class 10 reserves .......C
+ TBF[31] class 11 reserves ...C....
+ TBF[31] class 12 reserves ....C...
+ TBF[31] class 13 reserves .....C..
+ TBF[31] class 14 reserves ......C.
+ TBF[31] class 15 reserves .......C
+  Successfully allocated 160 TBFs
+Going to test assignment with many connections, algorithm B
+ TBF[0] class 1 reserves ...C....
+ TBF[1] class 2 reserves ....DC..
+ TBF[2] class 3 reserves ......DC
+ TBF[3] class 4 reserves ...DCD..
+ TBF[4] class 5 reserves ......CD
+ TBF[5] class 6 reserves ...CD...
+ TBF[6] class 7 reserves .....CD.
+ TBF[7] class 8 reserves ....DDCD
+ TBF[8] class 9 reserves ...DCD..
+ TBF[9] class 10 reserves .....DCD
+ TBF[10] class 11 reserves ...DCD..
+ TBF[11] class 12 reserves .....DCD
+ TBF[12] class 13 reserves ...CDD..
+ TBF[13] class 14 reserves ....CDDD
+ TBF[14] class 15 reserves ...CDDDD
+ TBF[15] class 16 reserves ...CDDDD
+ TBF[16] class 17 reserves ...CDDDD
+ TBF[17] class 18 reserves ...CDDDD
+ TBF[18] class 19 reserves .....DCD
+ TBF[19] class 20 reserves ...DCD..
+ TBF[20] class 21 reserves .....DCD
+ TBF[21] class 22 reserves ...DCD..
+ TBF[22] class 23 reserves .....DCD
+ TBF[23] class 24 reserves ...DCD..
+ TBF[24] class 25 reserves .....DCD
+ TBF[25] class 26 reserves ...DCD..
+ TBF[26] class 27 reserves .....DCD
+ TBF[27] class 28 reserves ...DCD..
+ TBF[28] class 29 reserves .....DCD
+ TBF[29] class 1 reserves .......C
+ TBF[30] class 2 reserves ......DC
+ TBF[31] class 3 reserves ......DC
+ TBF[0] class 1 reserves ...C....
+ TBF[1] class 2 reserves ....DC..
+ TBF[2] class 3 reserves ......DC
+ TBF[3] class 4 reserves ...DCD..
+ TBF[4] class 5 reserves ......CD
+ TBF[5] class 6 reserves ...CD...
+ TBF[6] class 7 reserves .....CD.
+ TBF[7] class 8 reserves ....DDCD
+ TBF[8] class 9 reserves ...DCD..
+ TBF[9] class 10 reserves .....DCD
+ TBF[10] class 11 reserves ...DCD..
+ TBF[11] class 12 reserves .....DCD
+ TBF[12] class 13 reserves ...CDD..
+ TBF[13] class 14 reserves ....CDDD
+ TBF[14] class 15 reserves ...CDDDD
+ TBF[15] class 16 reserves ...CDDDD
+ TBF[16] class 17 reserves ...CDDDD
+ TBF[17] class 18 reserves ...CDDDD
+ TBF[18] class 19 reserves .....DCD
+ TBF[19] class 20 reserves ...DCD..
+ TBF[20] class 21 reserves .....DCD
+ TBF[21] class 22 reserves ...DCD..
+ TBF[22] class 23 reserves .....DCD
+ TBF[23] class 24 reserves ...DCD..
+ TBF[0] class 1 reserves ...C....
+ TBF[1] class 2 reserves ....DC..
+ TBF[2] class 3 reserves ......DC
+ TBF[3] class 4 reserves ...DCD..
+ TBF[4] class 5 reserves ......CD
+ TBF[5] class 6 reserves ...CD...
+ TBF[6] class 7 reserves .....CD.
+ TBF[7] class 8 reserves ....DDCD
+ TBF[8] class 9 reserves ...DCD..
+ TBF[9] class 10 reserves .....DCD
+ TBF[10] class 11 reserves ...DCD..
+ TBF[11] class 12 reserves .....DCD
+ TBF[12] class 13 reserves ...CDD..
+ TBF[13] class 14 reserves ....CDDD
+ TBF[14] class 15 reserves ...CDDDD
+ TBF[15] class 16 reserves ...CDDDD
+ TBF[16] class 17 reserves ...CDDDD
+ TBF[17] class 18 reserves ...CDDDD
+ TBF[18] class 19 reserves .....DCD
+ TBF[19] class 20 reserves ...DCD..
+ TBF[20] class 21 reserves .....DCD
+ TBF[21] class 22 reserves ...DCD..
+ TBF[22] class 23 reserves .....DCD
+ TBF[23] class 24 reserves ...DCD..
+ TBF[24] class 25 reserves .....DCD
+ TBF[25] class 26 reserves ...DCD..
+ TBF[26] class 27 reserves .....DCD
+ TBF[27] class 28 reserves ...DCD..
+ TBF[28] class 29 reserves .....DCD
+ TBF[29] class 1 reserves .......C
+ TBF[30] class 2 reserves ......DC
+ TBF[31] class 3 reserves ......DC
+ TBF[0] class 1 reserves ...C....
+ TBF[1] class 2 reserves ...DC...
+ TBF[2] class 3 reserves ......DC
+ TBF[3] class 4 reserves ....DCD.
+ TBF[4] class 5 reserves ...CD...
+ TBF[5] class 6 reserves ...CD...
+ TBF[6] class 7 reserves ......CD
+ TBF[7] class 8 reserves ...DDCD.
+ TBF[8] class 9 reserves ...DCD..
+ TBF[9] class 10 reserves ....DCD.
+ TBF[10] class 11 reserves ...DCD..
+ TBF[11] class 12 reserves .....DCD
+ TBF[12] class 13 reserves .....CDD
+ TBF[13] class 14 reserves ...CDDD.
+ TBF[14] class 15 reserves ...CDDDD
+ TBF[15] class 16 reserves ...CDDDD
+ TBF[16] class 17 reserves ...CDDDD
+ TBF[17] class 18 reserves ...CDDDD
+ TBF[18] class 19 reserves .....DCD
+ TBF[19] class 20 reserves ...DCD..
+ TBF[20] class 21 reserves .....DCD
+ TBF[21] class 22 reserves ...DCD..
+ TBF[22] class 23 reserves .....DCD
+ TBF[23] class 24 reserves ...DCD..
+ TBF[24] class 25 reserves .....DCD
+ TBF[25] class 26 reserves ...DCD..
+ TBF[26] class 27 reserves .....DCD
+ TBF[27] class 28 reserves ...DCD..
+ TBF[28] class 29 reserves .....DCD
+ TBF[29] class 1 reserves ...C....
+ TBF[30] class 2 reserves ......DC
+ TBF[31] class 3 reserves ......DC
+  Successfully allocated 32 TBFs