aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/tests
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2015-11-20 00:08:28 +0100
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2015-12-03 11:39:36 +0100
commit20bd6bfef5417f540e7fdd624832d1f31e38fe42 (patch)
tree7eb7429f10e020c6ebf04bfab0ad48e683edd7a3 /openbsc/tests
parent1ed9a8673d67f4224a0bdbebae012c855c5d7bdc (diff)
gtphub: add explicit cleanup handles.
Clean up functionality is added for the test suite only, to be able to clean out all allocations and test against memory leaks. So far, it was sufficient to expire everything to free a gtphub. In preparation for the upcoming rate counters, which will need to be freed explicitly, add gtphub functions to clean up everything. As added bonus, also close the sockets explicitly -- not really needed upon program exit, neither by the test suite, but *if* we have a cleanup function, it should clean up everything properly. Closing the sockets is however kept separate, for the test suite. gtphub_start() and gtphub_stop() are for normal use (published in gtphub.h), and gtphub_init() and gtphub_free() are for the test suite, without sockets. (gtphub_stop() will probably never be called by anyone, but its existence completes the picture.) In gtphub_test.c, have a function to clean up the testing gtphub struct. First, expire everything by timeout, assert emptiness, then call the cleanup function. Call from each test in the end. Sponsored-by: On-Waves ehi
Diffstat (limited to 'openbsc/tests')
-rw-r--r--openbsc/tests/gtphub/gtphub_test.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/openbsc/tests/gtphub/gtphub_test.c b/openbsc/tests/gtphub/gtphub_test.c
index f983f0615..2dc61eb8e 100644
--- a/openbsc/tests/gtphub/gtphub_test.c
+++ b/openbsc/tests/gtphub/gtphub_test.c
@@ -35,8 +35,6 @@
#include <gtp.h>
#include <gtpie.h>
-#define EXPIRE_ALL ((60 * GTPH_TEI_MAPPING_EXPIRY_MINUTES) + 1)
-
#define ZERO_STRUCT(struct_pointer) memset(struct_pointer, '\0', \
sizeof(*(struct_pointer)))
@@ -55,6 +53,7 @@
printf(label "\n"); }
void gtphub_init(struct gtphub *hub);
+void gtphub_free(struct gtphub *hub);
void *osmo_gtphub_ctx;
@@ -613,6 +612,23 @@ static int setup_test_hub()
return 1;
}
+static int clear_test_hub()
+{
+ /* expire all */
+ gtphub_gc(hub, now + (60 * GTPH_TEI_MAPPING_EXPIRY_MINUTES) + 1);
+
+ int plane_idx;
+ plane_idx = GTPH_PLANE_CTRL;
+ LVL2_ASSERT(llist_empty(&hub->to_ggsns[plane_idx].peers));
+ LVL2_ASSERT(llist_empty(&hub->to_sgsns[plane_idx].peers));
+ plane_idx = GTPH_PLANE_USER;
+ LVL2_ASSERT(llist_empty(&hub->to_ggsns[plane_idx].peers));
+ LVL2_ASSERT(llist_empty(&hub->to_sgsns[plane_idx].peers));
+
+ gtphub_free(hub);
+ return 1;
+}
+
static void test_echo(void)
{
@@ -727,8 +743,7 @@ static void test_echo(void)
OSMO_ASSERT(!pp);
- now += EXPIRE_ALL;
- gtphub_gc(hub, now);
+ OSMO_ASSERT(clear_test_hub());
}
@@ -937,7 +952,7 @@ static void test_create_pdp_ctx(void)
OSMO_ASSERT(nr_map_is(&hub->tei_map[GTPH_PLANE_USER],
"(291->1@21945), (1383->2@21945), "));
- gtphub_gc(hub, now + EXPIRE_ALL);
+ OSMO_ASSERT(clear_test_hub());
}
static void test_user_data(void)
@@ -1013,7 +1028,7 @@ static void test_user_data(void)
u_from_sgsn,
u_to_ggsn));
- gtphub_gc(hub, now + EXPIRE_ALL);
+ OSMO_ASSERT(clear_test_hub());
}