<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/23356">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">tests: ulc: Show current bug with FN wrap around<br><br>Issue will be fixed in next commit. Leaving ASSERTs disabled so that<br>test passes in jenkins.<br><br>Related: OS#5020<br>Change-Id: I657db6b300363f8f3a9e4cfaf7a7f49e361a0512<br>---<br>M tests/ulc/PdchUlcTest.cpp<br>M tests/ulc/PdchUlcTest.err<br>M tests/ulc/PdchUlcTest.ok<br>3 files changed, 350 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/56/23356/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/ulc/PdchUlcTest.cpp b/tests/ulc/PdchUlcTest.cpp</span><br><span>index df922f3..dfc14be 100644</span><br><span>--- a/tests/ulc/PdchUlcTest.cpp</span><br><span>+++ b/tests/ulc/PdchUlcTest.cpp</span><br><span>@@ -22,6 +22,9 @@</span><br><span> </span><br><span> #include <string.h></span><br><span> #include <stdio.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <stdint.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <unistd.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <inttypes.h></span><br><span> </span><br><span> extern "C" {</span><br><span> #include <osmocom/core/application.h></span><br><span>@@ -30,6 +33,7 @@</span><br><span> #include <osmocom/core/utils.h></span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#include "gprs_ms.h"</span><br><span> #include "bts.h"</span><br><span> #include "sba.h"</span><br><span> #include "pdch_ul_controller.h"</span><br><span>@@ -37,6 +41,36 @@</span><br><span> /* globals used by the code */</span><br><span> void *tall_pcu_ctx;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+static print_ulc_node(struct pdch_ulc_node *it)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gprs_rlcmac_sba *sba;</span><br><span style="color: hsl(120, 100%, 40%);">+  switch (item->type) {</span><br><span style="color: hsl(120, 100%, 40%);">+      case PDCH_ULC_NODE_SBA:</span><br><span style="color: hsl(120, 100%, 40%);">+               item->sba.sba</span><br><span style="color: hsl(120, 100%, 40%);">+              printf("FN=%" PRIu32 " type=%s TA=%" PRIu8,</span><br><span style="color: hsl(120, 100%, 40%);">+                       it->fn, get_value_string((pdch_ul_node_names, it->type) );</span><br><span style="color: hsl(120, 100%, 40%);">+              return;</span><br><span style="color: hsl(120, 100%, 40%);">+       case PDCH_ULC_NODE_TBF_POLL:</span><br><span style="color: hsl(120, 100%, 40%);">+          item_tbf = item->tbf_poll.poll_tbf;</span><br><span style="color: hsl(120, 100%, 40%);">+                return;</span><br><span style="color: hsl(120, 100%, 40%);">+       case PDCH_ULC_NODE_TBF_USF:</span><br><span style="color: hsl(120, 100%, 40%);">+           item_tbf = (struct gprs_rlcmac_tbf *)item->tbf_usf.ul_tbf;</span><br><span style="color: hsl(120, 100%, 40%);">+         return;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+*/</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void print_ulc_nodes(struct pdch_ulc *ulc)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      struct rb_node *node;</span><br><span style="color: hsl(120, 100%, 40%);">+ for (node = rb_first(&ulc->tree_root); node; node = rb_next(node)) {</span><br><span style="color: hsl(120, 100%, 40%);">+           struct pdch_ulc_node *it = container_of(node, struct pdch_ulc_node, node);</span><br><span style="color: hsl(120, 100%, 40%);">+            printf("FN=%" PRIu32 " type=%s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                       it->fn, get_value_string(pdch_ul_node_names, it->type));</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void test_reserve_multiple()</span><br><span> {</span><br><span>   printf("=== start: %s ===\n", __FUNCTION__);</span><br><span>@@ -145,6 +179,61 @@</span><br><span>        printf("=== end: %s ===\n", __FUNCTION__);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+int _alloc_algorithm_dummy(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf,</span><br><span style="color: hsl(120, 100%, 40%);">+                      bool single, int8_t use_tbf)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void test_fn_wrap_around()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        printf("=== start: %s ===\n", __FUNCTION__);</span><br><span style="color: hsl(120, 100%, 40%);">+        const uint32_t start_fn = GSM_MAX_FN - 40;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  the_pcu->alloc_algorithm = _alloc_algorithm_dummy;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       struct gprs_rlcmac_bts *bts = bts_alloc(the_pcu, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+  struct GprsMs *ms = ms_alloc(bts, 0x12345678);</span><br><span style="color: hsl(120, 100%, 40%);">+        struct gprs_rlcmac_tbf *tbf1 = tbf_alloc_dl_tbf(bts, ms, 0, true);</span><br><span style="color: hsl(120, 100%, 40%);">+    tbf1->trx = &bts->trx[0];</span><br><span style="color: hsl(120, 100%, 40%);">+   struct gprs_rlcmac_pdch *pdch = &tbf1->trx->pdch[0];</span><br><span style="color: hsl(120, 100%, 40%);">+        int rc;</span><br><span style="color: hsl(120, 100%, 40%);">+       uint32_t fn, last_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       fn = start_fn;</span><br><span style="color: hsl(120, 100%, 40%);">+        while (fn < 40 || fn >= start_fn) {</span><br><span style="color: hsl(120, 100%, 40%);">+             printf("*** RESERVE FN=%" PRIu32 ":\n", fn);</span><br><span style="color: hsl(120, 100%, 40%);">+              rc = pdch_ulc_reserve_tbf_poll(pdch->ulc, fn, tbf1);</span><br><span style="color: hsl(120, 100%, 40%);">+               OSMO_ASSERT(rc == 0);</span><br><span style="color: hsl(120, 100%, 40%);">+         print_ulc_nodes(pdch->ulc);</span><br><span style="color: hsl(120, 100%, 40%);">+                fn = fn_next_block(fn);</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+     last_fn = fn;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Expiring fn_next_block(start_fn) should only expire first 2 entries here: */</span><br><span style="color: hsl(120, 100%, 40%);">+       fn = fn_next_block(start_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+ printf("*** EXPIRE FN=%" PRIu32 ":\n", fn);</span><br><span style="color: hsl(120, 100%, 40%);">+       pdch_ulc_expire_fn(pdch->ulc, fn);</span><br><span style="color: hsl(120, 100%, 40%);">+ print_ulc_nodes(pdch->ulc);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* We should still be able to release FN=0 here, since it came later: */</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("*** RELEASE fn=%" PRIu32 ":\n", 0);</span><br><span style="color: hsl(120, 100%, 40%);">+       rc = pdch_ulc_release_fn(pdch->ulc, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+    print_ulc_nodes(pdch->ulc);</span><br><span style="color: hsl(120, 100%, 40%);">+        //OSMO_ASSERT(rc == 0); FIXME: DISABLED DUE TO BUG!</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Expiring last FN should expire all entries */</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("*** EXPIRE FN=%" PRIu32 ":\n", last_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+  pdch_ulc_expire_fn(pdch->ulc, last_fn);</span><br><span style="color: hsl(120, 100%, 40%);">+    print_ulc_nodes(pdch->ulc);</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Make sure the store is empty now: */</span><br><span style="color: hsl(120, 100%, 40%);">+       //OSMO_ASSERT(!rb_first(&pdch->ulc->tree_root)); FIXME: DISABLED DUE TO BUG!</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      talloc_free(bts);</span><br><span style="color: hsl(120, 100%, 40%);">+     printf("=== end: %s ===\n", __FUNCTION__);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> int main(int argc, char **argv)</span><br><span> {</span><br><span>    tall_pcu_ctx = talloc_named_const(NULL, 1, "pdch_ulc test context");</span><br><span>@@ -163,6 +252,7 @@</span><br><span>         the_pcu = gprs_pcu_alloc(tall_pcu_ctx);</span><br><span> </span><br><span>  test_reserve_multiple();</span><br><span style="color: hsl(120, 100%, 40%);">+      test_fn_wrap_around();</span><br><span> </span><br><span>   talloc_free(the_pcu);</span><br><span>        return EXIT_SUCCESS;</span><br><span>diff --git a/tests/ulc/PdchUlcTest.err b/tests/ulc/PdchUlcTest.err</span><br><span>index 29b4846..88e4644 100644</span><br><span>--- a/tests/ulc/PdchUlcTest.err</span><br><span>+++ b/tests/ulc/PdchUlcTest.err</span><br><span>@@ -4,3 +4,28 @@</span><br><span> PDCH(bts=0,trx=0,ts=0) Trying to reserve already reserved FN 78</span><br><span> PDCH(bts=0,trx=0,ts=0) Trying to release unregistered SBA (FN=78, TA=0)</span><br><span> PDCH(bts=0,trx=0,ts=0) Timeout for registered SBA (FN=72, TA=0)</span><br><span style="color: hsl(120, 100%, 40%);">+Creating MS object, TLLI = 0x12345678</span><br><span style="color: hsl(120, 100%, 40%);">+MS(TLLI=0x12345678, IMSI=, TA=220, 0/0,) Attaching DL TBF: TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=0 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=0): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=4 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=4): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=8 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=8): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=13 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=13): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=17 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=17): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=21 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=21): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=26 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=26): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=30 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=30): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=NULL)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=34 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=34): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=39 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=39): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Expiring FN=2715613 but previous FN=2715608 is still reserved!</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=2715608): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)</span><br><span style="color: hsl(120, 100%, 40%);">+PDCH(bts=0,trx=0,ts=0) Timeout for registered POLL (FN=2715613): TBF(TFI=0 TLLI=0x12345678 DIR=DL STATE=RELEASING)</span><br><span>diff --git a/tests/ulc/PdchUlcTest.ok b/tests/ulc/PdchUlcTest.ok</span><br><span>index a07636f..7c17f01 100644</span><br><span>--- a/tests/ulc/PdchUlcTest.ok</span><br><span>+++ b/tests/ulc/PdchUlcTest.ok</span><br><span>@@ -1,2 +1,237 @@</span><br><span> === start: test_reserve_multiple ===</span><br><span> === end: test_reserve_multiple ===</span><br><span style="color: hsl(120, 100%, 40%);">+=== start: test_fn_wrap_around ===</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715608:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715613:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715617:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715622:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715626:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715630:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715635:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715639:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=2715643:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=0:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=4:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=8:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=13:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=17:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=17 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=21:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=17 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=21 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=26:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=17 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=21 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=26 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=30:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=17 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=21 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=26 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=30 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=34:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=17 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=21 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=26 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=30 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=34 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RESERVE FN=39:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=0 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=4 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=8 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=13 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=17 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=21 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=26 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=30 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=34 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=39 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715608 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715613 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** EXPIRE FN=2715613:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** RELEASE fn=0:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+*** EXPIRE FN=43:</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715617 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715622 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715626 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715630 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715635 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715639 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+FN=2715643 type=POLL</span><br><span style="color: hsl(120, 100%, 40%);">+=== end: test_fn_wrap_around ===</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/23356">change 23356</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-pcu/+/23356"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I657db6b300363f8f3a9e4cfaf7a7f49e361a0512 </div>
<div style="display:none"> Gerrit-Change-Number: 23356 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>