diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2014-12-03 13:05:16 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2014-12-05 15:16:59 +0100 |
commit | 0acc0018d9a395ded0408f5c95061562d0c528b3 (patch) | |
tree | 893bc3fd31aed48d0a637879a33cd6fb0289182b /openbsc/tests/subscr | |
parent | 1e30a28e51b5e8a14b977233858f267f839197d5 (diff) |
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
Diffstat (limited to 'openbsc/tests/subscr')
-rw-r--r-- | openbsc/tests/subscr/Makefile.am | 18 | ||||
-rw-r--r-- | openbsc/tests/subscr/subscr_test.c | 104 | ||||
-rw-r--r-- | openbsc/tests/subscr/subscr_test.ok | 3 |
3 files changed, 125 insertions, 0 deletions
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 <jluebbe@debian.org> + * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org> + * (C) 2014 by Alexander Chemeris <Alexander.Chemeris@fairwaves.co> + * 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 <http://www.gnu.org/licenses/>. + * + */ + +#include <openbsc/debug.h> +#include <openbsc/db.h> +#include <openbsc/gsm_subscriber.h> +#include <openbsc/gsm_04_11.h> + +#include <osmocom/core/application.h> + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <inttypes.h> + +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 |