[MERGED] osmo-bsc[master]: Fix tests after rate_ctr change

2017-12-18 Thread Harald Welte
Harald Welte has submitted this change and it was merged.

Change subject: Fix tests after rate_ctr change
..


Fix tests after rate_ctr change

Recent change lin libosmocore disallow registering rate_ctr with the
same name and indexing multiple times. To accommodate to this:

* allocate network struct once and use it for all tests
* deregister rate_ctr group after each test
* free bts struct after each test

Related: OS#2757
Change-Id: Ie1537a1ee9ee812eaaf9f58dc4bc86d4add8c31f
---
M tests/gsm0408/gsm0408_test.c
M tests/gsm0408/gsm0408_test.ok
2 files changed, 62 insertions(+), 48 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/tests/gsm0408/gsm0408_test.c b/tests/gsm0408/gsm0408_test.c
index 72a1772..d2085a9 100644
--- a/tests/gsm0408/gsm0408_test.c
+++ b/tests/gsm0408/gsm0408_test.c
@@ -144,30 +144,37 @@
}
 }
 
-static inline void test_si2q_segfault(void)
+static inline struct gsm_bts *bts_init(void *ctx, struct gsm_network *net, 
const char *msg)
 {
-   struct gsm_bts *bts;
-   struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, 
NULL);
-   printf("Test SI2quater UARFCN (same scrambling code and diversity):\n");
-
-   if (!network)
+   struct gsm_bts *bts = gsm_bts_alloc(net, 0);
+   if (!bts) {
+   printf("BTS allocation failure in %s()\n", msg);
exit(1);
-   bts = gsm_bts_alloc(network, 0);
+   }
+   printf("BTS allocation OK in %s()\n", msg);
+
+   bts->network = net;
+
+   return bts;
+}
+
+static inline void test_si2q_segfault(struct gsm_network *net)
+{
+   struct gsm_bts *bts = bts_init(tall_bsc_ctx, net, __func__);
+   printf("Test SI2quater UARFCN (same scrambling code and diversity):\n");
 
_bts_uarfcn_add(bts, 10564, 319, 0);
_bts_uarfcn_add(bts, 10612, 319, 0);
gen(bts, __func__);
+
+   rate_ctr_group_free(bts->bts_ctrs);
+   talloc_free(bts);
 }
 
-static inline void test_si2q_mu(void)
+static inline void test_si2q_mu(struct gsm_network *net)
 {
-   struct gsm_bts *bts;
-   struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, 
NULL);
+   struct gsm_bts *bts = bts_init(tall_bsc_ctx, net, __func__);
printf("Test SI2quater multiple UARFCNs:\n");
-
-   if (!network)
-   exit(1);
-   bts = gsm_bts_alloc(network, 0);
 
_bts_uarfcn_add(bts, 10564, 318, 0);
_bts_uarfcn_add(bts, 10612, 319, 0);
@@ -176,18 +183,15 @@
_bts_uarfcn_add(bts, 10613, 64, 0);
_bts_uarfcn_add(bts, 10613, 164, 0);
_bts_uarfcn_add(bts, 10613, 14, 0);
+
+   rate_ctr_group_free(bts->bts_ctrs);
+   talloc_free(bts);
 }
 
-static inline void test_si2q_u(void)
+static inline void test_si2q_u(struct gsm_network *net)
 {
-   struct gsm_bts *bts;
-   struct gsm_network *network = bsc_network_init(NULL, 1, 1, NULL);
+   struct gsm_bts *bts = bts_init(tall_bsc_ctx, net, __func__);
printf("Testing SYSINFO_TYPE_2quater UARFCN generation:\n");
-
-   if (!network)
-   exit(1);
-
-   bts = gsm_bts_alloc(network, 0);
 
/* first generate invalid SI as no UARFCN added */
gen(bts, __func__);
@@ -204,18 +208,15 @@
_bts_uarfcn_add(bts, 1982, 223, 1);
_bts_uarfcn_add(bts, 1982, 14, 0);
_bts_uarfcn_add(bts, 1982, 88, 0);
+
+   rate_ctr_group_free(bts->bts_ctrs);
+   talloc_free(bts);
 }
 
-static inline void test_si2q_e(void)
+static inline void test_si2q_e(struct gsm_network *net)
 {
-   struct gsm_bts *bts;
-   struct gsm_network *network = bsc_network_init(NULL, 1, 1, NULL);
+   struct gsm_bts *bts = bts_init(tall_bsc_ctx, net, __func__);
printf("Testing SYSINFO_TYPE_2quater EARFCN generation:\n");
-
-   if (!network)
-   exit(1);
-
-   bts = gsm_bts_alloc(network, 0);
 
bts->si_common.si2quater_neigh_list.arfcn = 
bts->si_common.data.earfcn_list;
bts->si_common.si2quater_neigh_list.meas_bw = 
bts->si_common.data.meas_bw_list;
@@ -237,18 +238,15 @@
add_earfcn_b(bts, 1965, OSMO_EARFCN_MEAS_INVALID);
add_earfcn_b(bts, 1967, 4);
add_earfcn_b(bts, 1982, 3);
+
+   rate_ctr_group_free(bts->bts_ctrs);
+   talloc_free(bts);
 }
 
-static inline void test_si2q_long(void)
+static inline void test_si2q_long(struct gsm_network *net)
 {
-   struct gsm_bts *bts;
-   struct gsm_network *network = bsc_network_init(tall_bsc_ctx, 1, 1, 
NULL);
+   struct gsm_bts *bts = bts_init(tall_bsc_ctx, net, __func__);
printf("Testing SYSINFO_TYPE_2quater combined EARFCN & UARFCN 
generation:\n");
-
-   if (!network)
-   exit(1);
-
-   bts = gsm_bts_alloc(network, 0);
 
bts->si_common.si2quater_neigh_list.arfcn = 
bts->si_common.data.earfcn_list;

osmo-bsc[master]: Fix tests after rate_ctr change

2017-12-18 Thread Harald Welte

Patch Set 1: Code-Review+2

-- 
To view, visit https://gerrit.osmocom.org/5486
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1537a1ee9ee812eaaf9f58dc4bc86d4add8c31f
Gerrit-PatchSet: 1
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Max 
Gerrit-Reviewer: Harald Welte 
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Neels Hofmeyr 
Gerrit-HasComments: No