<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>