aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorHolger Freyther <zecke@selfish.org>2009-01-01 18:02:05 +0000
committerHolger Freyther <zecke@selfish.org>2009-01-01 18:02:05 +0000
commit12aa50d5a26aefa739da4f1e95c0e2921e704842 (patch)
treeb58f6be9a0fd9c39517e9e3534b7a364becc39f8 /tests
parent67b4b9a017647b7d28343a352778920633ebf575 (diff)
Change the subscriber and database backend
gsm_subscriber is now refcounted, the db backend is leaking a lot less, db_get_subscriber will allocate the subscr record now, subscr_* will look up a subscriber in the list of currently active subscribers and add an ref to this one. The db test cases pass, more testing will be when next to the bts
Diffstat (limited to 'tests')
-rw-r--r--tests/db/Makefile.am4
-rw-r--r--tests/db/db_test.c59
2 files changed, 49 insertions, 14 deletions
diff --git a/tests/db/Makefile.am b/tests/db/Makefile.am
index 936263b7e..5c9c784c6 100644
--- a/tests/db/Makefile.am
+++ b/tests/db/Makefile.am
@@ -1,8 +1,8 @@
INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-Wall
+AM_CFLAGS=-Wall -ggdb3
noinst_PROGRAMS = db_test
-db_test_SOURCES = db_test.c $(top_srcdir)/src/db.c
+db_test_SOURCES = db_test.c $(top_srcdir)/src/db.c $(top_srcdir)/src/gsm_subscriber.c
db_test_LDADD = -ldl -ldbi
diff --git a/tests/db/db_test.c b/tests/db/db_test.c
index 760d7ab7a..a6632b7f9 100644
--- a/tests/db/db_test.c
+++ b/tests/db/db_test.c
@@ -1,4 +1,5 @@
/* (C) 2008 by Jan Luebbe <jluebbe@debian.org>
+ * (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
* All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
@@ -23,6 +24,30 @@
#include <string.h>
#include <malloc.h>
+#define COMPARE(original, copy) \
+ if (original->id != copy->id) \
+ fprintf(stderr, "Ids do not match in %s:%d %llu %llu\n", \
+ __FUNCTION__, __LINE__, original->id, copy->id); \
+ if (original->lac != copy->lac) \
+ fprintf(stderr, "LAC do not match in %s:%d %d %d\n", \
+ __FUNCTION__, __LINE__, original->lac, copy->lac); \
+ if (original->authorized != copy->authorized) \
+ fprintf(stderr, "Authorize do not match in %s:%d %d %d\n", \
+ __FUNCTION__, __LINE__, original->authorized, \
+ copy->authorized); \
+ if (strcmp(original->imsi, copy->imsi) != 0) \
+ fprintf(stderr, "IMSIs do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->imsi, copy->imsi); \
+ if (strcmp(original->tmsi, copy->tmsi) != 0) \
+ fprintf(stderr, "TMSIs do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->tmsi, copy->tmsi); \
+ if (strcmp(original->name, copy->name) != 0) \
+ fprintf(stderr, "names do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->name, copy->name); \
+ if (strcmp(original->extension, copy->extension) != 0) \
+ fprintf(stderr, "names do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->extension, copy->extension); \
+
int main() {
if (db_init("hlr.sqlite3")) {
@@ -38,28 +63,38 @@ int main() {
printf("DB: Database prepared.\n");
struct gsm_subscriber *alice = NULL;
+ struct gsm_subscriber *alice_db;
- alice = db_create_subscriber("3243245432345");
- db_set_subscriber(alice);
- db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice);
- free(alice);
+ char *alice_imsi = "3243245432345";
+ alice = db_create_subscriber(alice_imsi);
+ db_sync_subscriber(alice);
+ alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice->imsi);
+ COMPARE(alice, alice_db);
+ subscr_put(alice_db);
+ subscr_put(alice);
- alice = db_create_subscriber("3693245423445");
+ alice_imsi = "3693245423445";
+ alice = db_create_subscriber(alice_imsi);
db_subscriber_assoc_imei(alice, "1234567890");
db_subscriber_alloc_tmsi(alice);
alice->lac=42;
- db_set_subscriber(alice);
- db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice);
- free(alice);
+ db_sync_subscriber(alice);
+ alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice_imsi);
+ COMPARE(alice, alice_db);
+ subscr_put(alice);
+ subscr_put(alice_db);
- alice = db_create_subscriber("9993245423445");
+ alice_imsi = "9993245423445";
+ alice = db_create_subscriber(alice_imsi);
db_subscriber_alloc_tmsi(alice);
alice->lac=42;
- db_set_subscriber(alice);
+ db_sync_subscriber(alice);
db_subscriber_assoc_imei(alice, "1234567890");
db_subscriber_assoc_imei(alice, "6543560920");
- db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice);
- free(alice);
+ alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, alice_imsi);
+ COMPARE(alice, alice_db);
+ subscr_put(alice);
+ subscr_put(alice_db);
db_fini();