From 0acc0018d9a395ded0408f5c95061562d0c528b3 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Wed, 3 Dec 2014 13:05:16 +0100 Subject: bsc/test: Add tests for gsm_subscriber base This commit adds test for the generic part of gsm_subscriber like reference counting and flag usage. Sponsored-by: On-Waves ehf --- openbsc/tests/subscr/Makefile.am | 18 +++++++ openbsc/tests/subscr/subscr_test.c | 104 ++++++++++++++++++++++++++++++++++++ openbsc/tests/subscr/subscr_test.ok | 3 ++ 3 files changed, 125 insertions(+) create mode 100644 openbsc/tests/subscr/Makefile.am create mode 100644 openbsc/tests/subscr/subscr_test.c create mode 100644 openbsc/tests/subscr/subscr_test.ok (limited to 'openbsc/tests/subscr') diff --git a/openbsc/tests/subscr/Makefile.am b/openbsc/tests/subscr/Makefile.am new file mode 100644 index 000000000..4f96dc9d0 --- /dev/null +++ b/openbsc/tests/subscr/Makefile.am @@ -0,0 +1,18 @@ +AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include +AM_CFLAGS=-Wall -ggdb3 $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOABIS_CFLAGS) $(LIBSMPP34_CFLAGS) $(COVERAGE_CFLAGS) +AM_LDFLAGS = $(COVERAGE_LDFLAGS) + +EXTRA_DIST = subscr_test.ok + +noinst_PROGRAMS = subscr_test + +subscr_test_SOURCES = subscr_test.c +subscr_test_LDADD = $(top_builddir)/src/libbsc/libbsc.a \ + $(top_builddir)/src/libmsc/libmsc.a \ + $(top_builddir)/src/libbsc/libbsc.a \ + $(top_builddir)/src/libtrau/libtrau.a \ + $(top_builddir)/src/libcommon/libcommon.a \ + $(LIBOSMOCORE_LIBS) $(LIBOSMOABIS_LIBS) \ + $(LIBOSMOGSM_LIBS) $(LIBSMPP34_LIBS) $(LIBOSMOVTY_LIBS) +# -ldbi + diff --git a/openbsc/tests/subscr/subscr_test.c b/openbsc/tests/subscr/subscr_test.c new file mode 100644 index 000000000..fdd5cd848 --- /dev/null +++ b/openbsc/tests/subscr/subscr_test.c @@ -0,0 +1,104 @@ +/* (C) 2008 by Jan Luebbe + * (C) 2009 by Holger Hans Peter Freyther + * (C) 2014 by Alexander Chemeris + * All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +static struct gsm_network dummy_net; +static struct gsm_subscriber_group dummy_sgrp; + +static void test_subscr(void) +{ + int rc; + struct gsm_subscriber *subscr; + const char *imsi = "1234567890"; + + printf("Test subscriber allocation and deletion\n"); + + /* Don't keep subscr */ + + dummy_sgrp.keep_subscr = 0; + + OSMO_ASSERT(llist_empty(&active_subscribers)); + + subscr = subscr_get_or_create(&dummy_sgrp, imsi); + + OSMO_ASSERT(!llist_empty(&active_subscribers)); + OSMO_ASSERT(subscr->use_count == 1); + + subscr_put(subscr); + + OSMO_ASSERT(llist_empty(&active_subscribers)); + + /* Keep subscr */ + + dummy_sgrp.keep_subscr = 1; + + subscr = subscr_get_or_create(&dummy_sgrp, imsi); + + OSMO_ASSERT(!llist_empty(&active_subscribers)); + OSMO_ASSERT(subscr->use_count == 1); + + subscr_put(subscr); + OSMO_ASSERT(!llist_empty(&active_subscribers)); + OSMO_ASSERT(subscr->use_count == 0); + + subscr_get(subscr); + OSMO_ASSERT(subscr->use_count == 1); + + subscr_purge_inactive(&dummy_sgrp); + + OSMO_ASSERT(!llist_empty(&active_subscribers)); + OSMO_ASSERT(subscr->use_count == 1); + + subscr_put(subscr); + OSMO_ASSERT(!llist_empty(&active_subscribers)); + OSMO_ASSERT(subscr->use_count == 0); + + subscr_purge_inactive(&dummy_sgrp); + + OSMO_ASSERT(llist_empty(&active_subscribers)); +} + +int main() +{ + char scratch_str[256]; + + printf("Testing subscriber core code.\n"); + osmo_init_logging(&log_info); + log_set_print_filename(osmo_stderr_target, 0); + + dummy_net.subscr_group = &dummy_sgrp; + dummy_sgrp.net = &dummy_net; + + test_subscr(); + + printf("Done\n"); + return 0; +} diff --git a/openbsc/tests/subscr/subscr_test.ok b/openbsc/tests/subscr/subscr_test.ok new file mode 100644 index 000000000..72a376944 --- /dev/null +++ b/openbsc/tests/subscr/subscr_test.ok @@ -0,0 +1,3 @@ +Testing subscriber core code. +Test subscriber allocation and deletion +Done -- cgit v1.2.3