<p>neels <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21197">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  pespin: Looks good to me, but someone else must approve
  neels: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">handover test: add 'expect-ts-use' to clarify tests<br><br>In handover tests, it can be hard to follow which lchans are currently<br>occupied. The expect-ts-use command is like an assertion for a specific<br>distribution of used lchans, and helps understanding test intentions.<br><br>Change-Id: I6f4b573de7faace2d6bfe4f58b568e69c74dd07d<br>---<br>M tests/handover/handover_test.c<br>1 file changed, 187 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/tests/handover/handover_test.c b/tests/handover/handover_test.c</span><br><span>index 6a24fde..0abe41d 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -273,6 +273,74 @@</span><br><span>         return bts;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+const char *ts_use_str(struct gsm_bts_trx_ts *ts)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    switch (ts->pchan_is) {</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_PCHAN_CCCH_SDCCH4:</span><br><span style="color: hsl(120, 100%, 40%);">+           return "c+s4";</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    case GSM_PCHAN_NONE:</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%);">+       case GSM_PCHAN_TCH_F:</span><br><span style="color: hsl(120, 100%, 40%);">+         if (lchan_state_is(&ts->lchan[0], LCHAN_ST_ESTABLISHED))</span><br><span style="color: hsl(120, 100%, 40%);">+                       return "TCH/F";</span><br><span style="color: hsl(120, 100%, 40%);">+             else</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%);">+       case GSM_PCHAN_TCH_H:</span><br><span style="color: hsl(120, 100%, 40%);">+         if (lchan_state_is(&ts->lchan[0], LCHAN_ST_ESTABLISHED)</span><br><span style="color: hsl(120, 100%, 40%);">+                    && lchan_state_is(&ts->lchan[1], LCHAN_ST_ESTABLISHED))</span><br><span style="color: hsl(120, 100%, 40%);">+                    return "TCH/HH";</span><br><span style="color: hsl(120, 100%, 40%);">+            if (lchan_state_is(&ts->lchan[0], LCHAN_ST_ESTABLISHED))</span><br><span style="color: hsl(120, 100%, 40%);">+                       return "TCH/H-";</span><br><span style="color: hsl(120, 100%, 40%);">+            if (lchan_state_is(&ts->lchan[1], LCHAN_ST_ESTABLISHED))</span><br><span style="color: hsl(120, 100%, 40%);">+                       return "TCH/-H";</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%);">+       default:</span><br><span style="color: hsl(120, 100%, 40%);">+              return gsm_pchan_name(ts->pchan_is);</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%);">+bool expect_ts_use(int bts_nr, int trx_nr, const char * const *ts_use)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     struct gsm_bts *bts;</span><br><span style="color: hsl(120, 100%, 40%);">+  struct gsm_bts_trx *trx;</span><br><span style="color: hsl(120, 100%, 40%);">+      int i;</span><br><span style="color: hsl(120, 100%, 40%);">+        int mismatching_ts = -1;</span><br><span style="color: hsl(120, 100%, 40%);">+      bts = gsm_bts_num(bsc_gsmnet, bts_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+        OSMO_ASSERT(bts);</span><br><span style="color: hsl(120, 100%, 40%);">+     trx = gsm_bts_trx_num(bts, trx_nr);</span><br><span style="color: hsl(120, 100%, 40%);">+   OSMO_ASSERT(trx);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   fprintf(stderr, "Expect TS use:");</span><br><span style="color: hsl(120, 100%, 40%);">+  for (i = 0; i < 8; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+            fprintf(stderr, "\t%s", ts_use[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+ fprintf(stderr, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+      fprintf(stderr, "   Got TS use:");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        for (i = 0; i < 8; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+          struct gsm_bts_trx_ts *ts = &trx->ts[i];</span><br><span style="color: hsl(120, 100%, 40%);">+               const char *use = ts_use_str(ts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+           fprintf(stderr, "\t%s", use);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+             if (!strcmp(ts_use[i], "*"))</span><br><span style="color: hsl(120, 100%, 40%);">+                        continue;</span><br><span style="color: hsl(120, 100%, 40%);">+             if (strcmp(ts_use[i], use) && mismatching_ts < 0)</span><br><span style="color: hsl(120, 100%, 40%);">+                  mismatching_ts = i;</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span style="color: hsl(120, 100%, 40%);">+     fprintf(stderr, "\n");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if (mismatching_ts >= 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+         fprintf(stderr, "Test failed: mismatching TS use in bts %d trx %d ts %d\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                bts_nr, trx_nr, mismatching_ts);</span><br><span style="color: hsl(120, 100%, 40%);">+               return false;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+     return true;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void create_conn(struct gsm_lchan *lchan)</span><br><span> {</span><br><span>  static unsigned int next_imsi = 0;</span><br><span>@@ -567,6 +635,7 @@</span><br><span> </span><br><span>         "create-n-bts", "7",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "30","0",</span><br><span>           "6","0","20","1","21","2","18","3","20","4","23","5","19",</span><br><span>         "expect-no-chan",</span><br><span>@@ -581,12 +650,15 @@</span><br><span> </span><br><span>      "create-n-bts", "7",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "10","0",</span><br><span>           "6","0","20","1","21","2","18","3","20","4","23","5","19",</span><br><span>         "expect-chan", "5", "1",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "5", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -605,6 +677,7 @@</span><br><span>         "create-n-bts", "2",</span><br><span>     "afs-rxlev-improve", "0", "5",</span><br><span>         "create-ms", "0", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>        "as-enable", "0", "0",</span><br><span>         "ho-enable", "0", "0",</span><br><span>         "meas-rep", "0", "0","0", "1","0","30",</span><br><span>@@ -615,6 +688,7 @@</span><br><span>  "ack-chan",</span><br><span>        "expect-ho", "0", "5",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "ho-enable", "0", "1",</span><br><span>         "ho-enable", "1", "0",</span><br><span>         "meas-rep", "0", "0","0", "1","0","30",</span><br><span>@@ -625,6 +699,8 @@</span><br><span>  "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -638,11 +714,14 @@</span><br><span> </span><br><span>   "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-chan", "1", "1",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-failed",</span><br><span style="color: hsl(120, 100%, 40%);">+        "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span>     "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  NULL</span><br><span>@@ -659,6 +738,7 @@</span><br><span>   "create-n-bts", "2",</span><br><span>     "set-min-free", "1", "TCH/H", "4",</span><br><span>   "create-ms", "0", "TCH/H", "HR",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>        "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "set-min-free", "1", "TCH/H", "3",</span><br><span>@@ -667,6 +747,8 @@</span><br><span>     "ack-chan",</span><br><span>        "expect-ho", "0", "5",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>        NULL</span><br><span> };</span><br><span> </span><br><span>@@ -681,6 +763,7 @@</span><br><span>         "create-n-bts", "2",</span><br><span>     "set-min-free", "1", "TCH/F", "4",</span><br><span>   "create-ms", "0", "TCH/F", "FR",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "set-min-free", "1", "TCH/F", "3",</span><br><span>@@ -689,6 +772,8 @@</span><br><span>     "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -703,6 +788,7 @@</span><br><span>         "create-n-bts", "2",</span><br><span>     "set-min-free", "1", "TCH/F", "4",</span><br><span>   "create-ms", "0", "TCH/F", "EFR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "set-min-free", "1", "TCH/F", "3",</span><br><span>@@ -711,6 +797,8 @@</span><br><span>     "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -724,11 +812,14 @@</span><br><span>       "create-n-bts", "2",</span><br><span>     "set-min-free", "1", "TCH/F", "4",</span><br><span>   "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-chan", "1", "5",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>        NULL</span><br><span> };</span><br><span> </span><br><span>@@ -740,6 +831,7 @@</span><br><span> </span><br><span>     "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "create-ms", "1", "TCH/F", "AMR",</span><br><span>    "create-ms", "1", "TCH/F", "AMR",</span><br><span>    "create-ms", "1", "TCH/F", "AMR",</span><br><span>@@ -748,6 +840,7 @@</span><br><span>      "create-ms", "1", "TCH/H", "AMR",</span><br><span>    "create-ms", "1", "TCH/H", "AMR",</span><br><span>    "create-ms", "1", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "1", "0", "*", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/HH", "TCH/HH", "-",</span><br><span>   "meas-rep", "0", "0","0", "1","0","30",</span><br><span>        "expect-no-chan",</span><br><span>  NULL</span><br><span>@@ -765,6 +858,7 @@</span><br><span>   "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "TCH/F", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "0","0", "1","0","30",</span><br><span>        "expect-chan", "1", "1",</span><br><span>       "meas-rep", "1", "0","0", "1","0","30",</span><br><span>@@ -783,6 +877,7 @@</span><br><span> </span><br><span>      "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "27","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "meas-rep", "0", "26","0", "1","0","30",</span><br><span>@@ -790,6 +885,8 @@</span><br><span>         "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -807,6 +904,7 @@</span><br><span> </span><br><span>     "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "10","0", "1","0","11",</span><br><span>       "expect-no-chan",</span><br><span>  "meas-rep", "0", "8","0", "1","0","9",</span><br><span>@@ -816,6 +914,8 @@</span><br><span>   "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -828,6 +928,7 @@</span><br><span> </span><br><span>     "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "set-min-free", "1", "TCH/F", "4",</span><br><span>   "set-min-free", "1", "TCH/H", "4",</span><br><span>   "meas-rep", "0", "20","0", "1","0","30",</span><br><span>@@ -839,6 +940,8 @@</span><br><span>         "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -853,6 +956,7 @@</span><br><span> </span><br><span>     "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "set-min-free", "0", "TCH/F", "4",</span><br><span>   "set-min-free", "0", "TCH/H", "4",</span><br><span>   "set-min-free", "1", "TCH/F", "4",</span><br><span>@@ -860,11 +964,14 @@</span><br><span>   "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "-", "-", "-",</span><br><span>     "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-chan", "1", "1",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "TCH/F", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -878,6 +985,7 @@</span><br><span> </span><br><span>     "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "set-min-free", "1", "TCH/F", "4",</span><br><span>   "set-min-free", "1", "TCH/H", "4",</span><br><span>   "meas-rep", "0", "10","0", "1","0","30",</span><br><span>@@ -887,6 +995,8 @@</span><br><span>         "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -905,6 +1015,7 @@</span><br><span> </span><br><span>    "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "40","6", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "meas-rep", "0", "40","6", "1","0","30",</span><br><span>@@ -928,6 +1039,8 @@</span><br><span>        "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -943,6 +1056,7 @@</span><br><span> </span><br><span>    "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "set-max-ta", "0", "5", /* of cell */</span><br><span>  "set-ta", "0", "5", /* of ms */</span><br><span>        "meas-rep", "0", "30","0", "1","0","20",</span><br><span>@@ -953,6 +1067,8 @@</span><br><span>        "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "20","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  NULL</span><br><span>@@ -978,6 +1094,8 @@</span><br><span>  "create-ms", "0", "TCH/H", "AMR",</span><br><span>    "create-ms", "1", "TCH/F", "AMR",</span><br><span>    "create-ms", "1", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/HH", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+ "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>    "meas-rep", "0", "30","0", "2","0","20","1","20",</span><br><span>  "expect-no-chan",</span><br><span>  "meas-rep", "1", "30","0", "2","0","20","1","20",</span><br><span>@@ -992,6 +1110,8 @@</span><br><span>   "expect-no-chan",</span><br><span>  "congestion-check",</span><br><span>        "expect-no-chan",</span><br><span style="color: hsl(120, 100%, 40%);">+   "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/HH", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+ "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>    NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1017,6 +1137,8 @@</span><br><span>       "create-ms", "0", "TCH/H", "AMR",</span><br><span>    "create-ms", "1", "TCH/F", "AMR",</span><br><span>    "create-ms", "1", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "TCH/F", "-", "TCH/HH", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>    "meas-rep", "0", "30","0", "2","0","20","1","20",</span><br><span>  "expect-no-chan",</span><br><span>  "meas-rep", "1", "30","0", "2","0","20","1","20",</span><br><span>@@ -1031,11 +1153,15 @@</span><br><span>        "expect-no-chan",</span><br><span>  "meas-rep", "6", "30","0", "2","0","20","1","20",</span><br><span>  "expect-no-chan",</span><br><span style="color: hsl(120, 100%, 40%);">+   "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "TCH/F", "-", "TCH/HH", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>    "congestion-check",</span><br><span>        "expect-chan", "1", "2",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "3", /* best candidate is MS 2 at BTS 0, TS 3 */</span><br><span>     "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/HH", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+ "expect-ts-use", "1", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/H-", "-", "-",</span><br><span>        NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1053,6 +1179,8 @@</span><br><span>       "create-ms", "0", "TCH/F", "FR",</span><br><span>     "create-ms", "0", "TCH/F", "FR",</span><br><span>     "create-ms", "1", "TCH/F", "FR",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "TCH/F", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "30","0", "1","0","20",</span><br><span>       "expect-no-chan",</span><br><span>  "meas-rep", "1", "30","0", "1","0","21",</span><br><span>@@ -1066,6 +1194,8 @@</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "2", /* best candidate is MS 1 at BTS 0, TS 2 */</span><br><span>     "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "TCH/F", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "TCH/F", "-", "-", "-", "-", "-",</span><br><span>     NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1080,6 +1210,7 @@</span><br><span>       "set-min-free", "0", "TCH/H", "4",</span><br><span>   "set-min-free", "1", "TCH/F", "4",</span><br><span>   "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "30","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "congestion-check",</span><br><span>@@ -1087,6 +1218,8 @@</span><br><span>        "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "TCH/H-", "-", "-",</span><br><span>        NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1104,6 +1237,7 @@</span><br><span>       "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "create-ms", "0", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/H-", "-", "-",</span><br><span>        "meas-rep", "0", "30","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "congestion-check",</span><br><span>@@ -1111,6 +1245,8 @@</span><br><span>        "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "TCH/F", "-", "-", "TCH/H-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1128,6 +1264,7 @@</span><br><span>       "create-ms", "0", "TCH/H", "AMR",</span><br><span>    "create-ms", "0", "TCH/H", "AMR",</span><br><span>    "create-ms", "0", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "TCH/HH", "TCH/H-", "-",</span><br><span>   "meas-rep", "0", "30","0", "0",</span><br><span>    "meas-rep", "1", "34","0", "0",</span><br><span>    "meas-rep", "2", "20","0", "0",</span><br><span>@@ -1137,6 +1274,7 @@</span><br><span>    "ack-chan",</span><br><span>        "expect-ho", "0", "6",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "TCH/HH", "-", "-",</span><br><span>    NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1156,6 +1294,9 @@</span><br><span>       "create-ms", "2", "TCH/F", "AMR",</span><br><span>    /* andreas */</span><br><span>        "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "2", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "1", "40","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span> </span><br><span>@@ -1173,6 +1314,9 @@</span><br><span>      "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "2", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span> </span><br><span>     "print",</span><br><span>   "While Andreas is walking into the store, Axel asks, if he could also\n"</span><br><span>@@ -1188,6 +1332,9 @@</span><br><span>   "ack-chan",</span><br><span>        "expect-ho", "1", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "2", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span> </span><br><span>     "print",</span><br><span>   "After Andreas bought skewers and beer, he leaves the store.\n"</span><br><span>@@ -1200,6 +1347,9 @@</span><br><span>    "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "2", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span> </span><br><span>     "print",</span><br><span>   /* bts 2 becomes better */</span><br><span>@@ -1212,6 +1362,9 @@</span><br><span>   "ack-chan",</span><br><span>        "expect-ho", "1", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "2", "0", "*", "TCH/F", "TCH/F", "-", "-", "-", "-", "-",</span><br><span> </span><br><span>         "print",</span><br><span>   "Andreas wonders why he still has good radio coverage: \"Last time it\n"</span><br><span>@@ -1237,6 +1390,7 @@</span><br><span>      "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "congestion-check",</span><br><span>        "expect-no-chan",</span><br><span style="color: hsl(120, 100%, 40%);">+   "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span> </span><br><span>     /* send measurement and trigger congestion check */</span><br><span>  "meas-rep", "0", "20","0", "1","0","20",</span><br><span>@@ -1246,6 +1400,8 @@</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span> </span><br><span>     /* congest the first cell and remove congestion from second cell */</span><br><span>  "set-min-free", "0", "TCH/F", "0",</span><br><span>@@ -1263,6 +1419,8 @@</span><br><span>   "ack-chan",</span><br><span>        "expect-ho", "1", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+  "expect-ts-use", "1", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span>     NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1275,6 +1433,7 @@</span><br><span> </span><br><span>   "create-n-bts", "7",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "30","0",</span><br><span>           "6","0","20","1","21","2","18","3","20","4","23","5","19",</span><br><span>         "expect-no-chan",</span><br><span>@@ -1289,12 +1448,15 @@</span><br><span> </span><br><span>    "create-n-bts", "7",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "meas-rep", "0", "10","0",</span><br><span>           "6","0","20","1","21","2","18","3","20","4","23","5","19",</span><br><span>         "expect-chan", "5", "1",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "5", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1313,6 +1475,7 @@</span><br><span>       "create-ms", "0", "TCH/H", "AMR",</span><br><span>    "create-ms", "0", "TCH/H", "AMR",</span><br><span>    "create-ms", "0", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "TCH/HH", "TCH/H-", "-",</span><br><span>   "meas-rep", "0", "30","0", "0",</span><br><span>    "meas-rep", "1", "34","0", "0",</span><br><span>    "meas-rep", "2", "20","0", "0",</span><br><span>@@ -1322,11 +1485,13 @@</span><br><span>  "ack-chan",</span><br><span>        "expect-ho", "0", "6",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "TCH/HH", "-", "-",</span><br><span>    "congestion-check",</span><br><span>        "expect-chan", "0", "2",</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "5",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/-H", "-", "-",</span><br><span>        "congestion-check",</span><br><span>        "expect-no-chan",</span><br><span>  "congestion-check",</span><br><span>@@ -1345,6 +1510,7 @@</span><br><span> </span><br><span>    "create-n-bts", "2",</span><br><span>     "create-ms", "0", "TCH/F", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         "set-min-free", "1", "TCH/F", "4",</span><br><span>   "set-min-free", "1", "TCH/H", "4",</span><br><span>   "meas-rep", "0", "30","6", "1","0","40",</span><br><span>@@ -1370,6 +1536,8 @@</span><br><span>       "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "-", "-", "-", "-", "-", "-",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "1", "0", "*", "TCH/F", "-", "-", "-", "-", "-", "-",</span><br><span>         NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1385,6 +1553,7 @@</span><br><span>       "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "create-ms", "0", "TCH/F", "AMR",</span><br><span>    "create-ms", "0", "TCH/H", "AMR",</span><br><span style="color: hsl(120, 100%, 40%);">+     "expect-ts-use", "0", "0", "*", "TCH/F", "TCH/F", "-", "-", "TCH/H-", "-", "-",</span><br><span>        "meas-rep", "0", "30","0", "1","0","30",</span><br><span>       "expect-no-chan",</span><br><span>  "congestion-check",</span><br><span>@@ -1392,6 +1561,7 @@</span><br><span>        "ack-chan",</span><br><span>        "expect-ho", "0", "1",</span><br><span>         "ho-complete",</span><br><span style="color: hsl(120, 100%, 40%);">+      "expect-ts-use", "0", "0", "*", "-", "TCH/F", "-", "-", "TCH/HH", "-", "-",</span><br><span>    NULL</span><br><span> };</span><br><span> </span><br><span>@@ -1831,6 +2001,23 @@</span><br><span>                      got_ho_req = 0;</span><br><span>                      send_ho_complete(ho_req_lchan, false);</span><br><span>               } else</span><br><span style="color: hsl(120, 100%, 40%);">+                if (!strcmp(*test_case, "expect-ts-use")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                 /* expect-ts-use <bts-nr> <trx-nr> 8x<ts-use></span><br><span style="color: hsl(120, 100%, 40%);">+                        * e.g.</span><br><span style="color: hsl(120, 100%, 40%);">+                        * expect-ts-use 0 0  - TCH/F - - TCH/H- TCH/HH TCH/-H PDCH</span><br><span style="color: hsl(120, 100%, 40%);">+                    * TCH/F: one FR call.</span><br><span style="color: hsl(120, 100%, 40%);">+                         * TCH/H-: HR TS with first subslot used as TCH/H, other subslot unused.</span><br><span style="color: hsl(120, 100%, 40%);">+                       * TCH/HH: HR TS with both subslots used as TCH/H</span><br><span style="color: hsl(120, 100%, 40%);">+                      * TCH/-H: HR TS with only second subslot used as TCH/H</span><br><span style="color: hsl(120, 100%, 40%);">+                        * PDCH: TS used for PDCH (e.g. unused dynamic TS)</span><br><span style="color: hsl(120, 100%, 40%);">+                     */</span><br><span style="color: hsl(120, 100%, 40%);">+                   int bts_nr = atoi(test_case[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+                      int trx_nr = atoi(test_case[2]);</span><br><span style="color: hsl(120, 100%, 40%);">+                      const char * const * ts_use = (void*)&test_case[3];</span><br><span style="color: hsl(120, 100%, 40%);">+                       if (!expect_ts_use(bts_nr, trx_nr, ts_use))</span><br><span style="color: hsl(120, 100%, 40%);">+                           return EXIT_FAILURE;</span><br><span style="color: hsl(120, 100%, 40%);">+                  test_case += 1 + 2 + 8;</span><br><span style="color: hsl(120, 100%, 40%);">+               } else</span><br><span>               if (!strcmp(*test_case, "print")) {</span><br><span>                        fprintf(stderr, "\n%s\n\n", test_case[1]);</span><br><span>                         test_case += 2;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21197">change 21197</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-bsc/+/21197"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I6f4b573de7faace2d6bfe4f58b568e69c74dd07d </div>
<div style="display:none"> Gerrit-Change-Number: 21197 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>