<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21195">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">handover_test: allow arbitrary timeslot config and multiple TRX<br><br>Adjust 'create-bts' command so that it allows multiple TRX and arbitrary<br>timeslot configurations. It is now possible to write tests for dynamic<br>timeslots and multiple TRX.<br><br>Change-Id: Ic645cea671aa4798804666b8886f11bab5351e11<br>---<br>M tests/handover/handover_test.c<br>1 file changed, 42 insertions(+), 7 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/95/21195/1</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 b469f03..2aa48b7 100644</span><br><span>--- a/tests/handover/handover_test.c</span><br><span>+++ b/tests/handover/handover_test.c</span><br><span>@@ -176,7 +176,14 @@</span><br><span> </span><br><span> enum gsm_phys_chan_config pchan_from_str(const char *str)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    enum gsm_phys_chan_config pchan = gsm_pchan_parse(str);</span><br><span style="color: hsl(120, 100%, 40%);">+       enum gsm_phys_chan_config pchan;</span><br><span style="color: hsl(120, 100%, 40%);">+      if (!strcmp(str, "dyn"))</span><br><span style="color: hsl(120, 100%, 40%);">+            return GSM_PCHAN_TCH_F_TCH_H_PDCH;</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!strcmp(str, "c+s4"))</span><br><span style="color: hsl(120, 100%, 40%);">+           return GSM_PCHAN_CCCH_SDCCH4;</span><br><span style="color: hsl(120, 100%, 40%);">+ if (!strcmp(str, "-"))</span><br><span style="color: hsl(120, 100%, 40%);">+              return GSM_PCHAN_NONE;</span><br><span style="color: hsl(120, 100%, 40%);">+        pchan = gsm_pchan_parse(str);</span><br><span>        if (pchan < 0) {</span><br><span>          fprintf(stderr, "Invalid timeslot pchan type: %s\n", str);</span><br><span>                 exit(1);</span><br><span>@@ -185,7 +192,7 @@</span><br><span> }</span><br><span> </span><br><span> const char * const bts_default_ts[] = {</span><br><span style="color: hsl(0, 100%, 40%);">-      "CCCH+SDCCH4", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/H", "TCH/H", "NONE",</span><br><span style="color: hsl(120, 100%, 40%);">+  "c+s4", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/H", "TCH/H", "-",</span><br><span> };</span><br><span> </span><br><span> static struct gsm_bts *create_bts(int num_trx, const char * const *ts_args)</span><br><span>@@ -197,6 +204,13 @@</span><br><span>   int trx_i;</span><br><span>   struct gsm_bts_trx *trx;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  fprintf(stderr, "- Creating BTS %d, %d TRX\n", bsc_gsmnet->num_bts, num_trx);</span><br><span style="color: hsl(120, 100%, 40%);">+    for (trx_i = 0; trx_i < num_trx; trx_i++) {</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_args[8*trx_i + i]);</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%);">+</span><br><span>  bts = bsc_bts_alloc_register(bsc_gsmnet, GSM_BTS_TYPE_UNKNOWN, 0x3f);</span><br><span>        if (!bts) {</span><br><span>          printf("No resource for bts1\n");</span><br><span>@@ -235,10 +249,20 @@</span><br><span>                  trx->ts[i].mo.nm_state.administrative = NM_STATE_UNLOCKED;</span><br><span>                }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           for (i = 0; i < ARRAY_SIZE(bts->c0->ts); i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+              for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {</span><br><span>                    /* make sure ts->lchans[] get initialized */</span><br><span style="color: hsl(0, 100%, 40%);">-                 osmo_fsm_inst_dispatch(bts->c0->ts[i].fi, TS_EV_RSL_READY, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-                    osmo_fsm_inst_dispatch(bts->c0->ts[i].fi, TS_EV_OML_READY, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+                  osmo_fsm_inst_dispatch(trx->ts[i].fi, TS_EV_RSL_READY, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+                 osmo_fsm_inst_dispatch(trx->ts[i].fi, TS_EV_OML_READY, 0);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                       /* Unused dyn TS start out as used for PDCH */</span><br><span style="color: hsl(120, 100%, 40%);">+                        switch (trx->ts[i].pchan_on_init) {</span><br><span style="color: hsl(120, 100%, 40%);">+                        case GSM_PCHAN_TCH_F_TCH_H_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                      case GSM_PCHAN_TCH_F_PDCH:</span><br><span style="color: hsl(120, 100%, 40%);">+                            trx->ts[i].pchan_is = GSM_PCHAN_PDCH;</span><br><span style="color: hsl(120, 100%, 40%);">+                              break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        default:</span><br><span style="color: hsl(120, 100%, 40%);">+                              break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span>            }</span><br><span>    }</span><br><span> </span><br><span>@@ -1530,12 +1554,23 @@</span><br><span>      while (*test_case) {</span><br><span>                 if (!strcmp(*test_case, "create-n-bts")) {</span><br><span>                         int n = atoi(test_case[1]);</span><br><span style="color: hsl(0, 100%, 40%);">-                     fprintf(stderr, "- Creating %d BTS (one TRX each, "</span><br><span style="color: hsl(0, 100%, 40%);">-                           "TS(1-4) are TCH/F, TS(5-6) are TCH/H)\n", n);</span><br><span>                     for (i = 0; i < n; i++)</span><br><span>                           create_bts(1, bts_default_ts);</span><br><span>                       test_case += 2;</span><br><span>              } else</span><br><span style="color: hsl(120, 100%, 40%);">+                if (!strcmp(*test_case, "create-bts")) {</span><br><span style="color: hsl(120, 100%, 40%);">+                    /* new BTS with one TRX:</span><br><span style="color: hsl(120, 100%, 40%);">+                       * "create-bts", "1", "CCCH+SDCCH4", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/H", "TCH/H", "PDCH",</span><br><span style="color: hsl(120, 100%, 40%);">+                         *</span><br><span style="color: hsl(120, 100%, 40%);">+                     * new BTS with two TRX:</span><br><span style="color: hsl(120, 100%, 40%);">+                       * "create-bts", "2", "CCCH+SDCCH4", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/H", "TCH/H", "PDCH",</span><br><span style="color: hsl(120, 100%, 40%);">+                         *                    "SDCCH8", "TCH/F", "TCH/F", "TCH/F", "TCH/F", "TCH/H", "TCH/H", "PDCH",</span><br><span style="color: hsl(120, 100%, 40%);">+                  */</span><br><span style="color: hsl(120, 100%, 40%);">+                   int num_trx = atoi(test_case[1]);</span><br><span style="color: hsl(120, 100%, 40%);">+                     const char * const * ts_cfg = (void*)&test_case[2];</span><br><span style="color: hsl(120, 100%, 40%);">+                       create_bts(num_trx, ts_cfg);</span><br><span style="color: hsl(120, 100%, 40%);">+                  test_case += 2 + 8 * num_trx;</span><br><span style="color: hsl(120, 100%, 40%);">+         } else</span><br><span>               if (!strcmp(*test_case, "as-enable")) {</span><br><span>                    fprintf(stderr, "- Set assignment enable state at "</span><br><span>                                "BTS %s to %s\n", test_case[1], test_case[2]);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/21195">change 21195</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/+/21195"/><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: Ic645cea671aa4798804666b8886f11bab5351e11 </div>
<div style="display:none"> Gerrit-Change-Number: 21195 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>