---
openbsc/tests/db/db_test.c | 95 ++++++++++++++++++++++++++++++++------------
1 file changed, 69 insertions(+), 26 deletions(-)
diff --git a/openbsc/tests/db/db_test.c b/openbsc/tests/db/db_test.c
index c3beee2..a4259ab 100644
--- a/openbsc/tests/db/db_test.c
+++ b/openbsc/tests/db/db_test.c
@@ -26,39 +26,52 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <inttypes.h>
static struct gsm_network dummy_net;
#define SUBSCR_PUT(sub) \
- sub->net = &dummy_net; \
- subscr_put(sub);
+ if (sub) { \
+ sub->net = &dummy_net; \
+ subscr_put(sub); \
+ }
#define COMPARE(original, copy) \
- if (original->id != copy->id) \
- printf("Ids do not match in %s:%d %llu %llu\n", \
- __FUNCTION__, __LINE__, original->id, copy->id); \
- if (original->lac != copy->lac) \
- printf("LAC do not match in %s:%d %d %d\n", \
- __FUNCTION__, __LINE__, original->lac, copy->lac); \
- if (original->authorized != copy->authorized) \
- printf("Authorize do not match in %s:%d %d %d\n", \
- __FUNCTION__, __LINE__, original->authorized, \
- copy->authorized); \
- if (strcmp(original->imsi, copy->imsi) != 0) \
- printf("IMSIs do not match in %s:%d '%s' '%s'\n", \
- __FUNCTION__, __LINE__, original->imsi, copy->imsi); \
- if (original->tmsi != copy->tmsi) \
- printf("TMSIs do not match in %s:%d '%u' '%u'\n", \
- __FUNCTION__, __LINE__, original->tmsi, copy->tmsi); \
- if (strcmp(original->name, copy->name) != 0) \
- printf("names do not match in %s:%d '%s' '%s'\n", \
- __FUNCTION__, __LINE__, original->name, copy->name); \
- if (strcmp(original->extension, copy->extension) != 0) \
- printf("Extensions do not match in %s:%d '%s' '%s'\n", \
- __FUNCTION__, __LINE__, original->extension, copy->extension); \
+ if (!original) \
+ printf("NULL original in %s:%d\n", \
+ __FUNCTION__, __LINE__); \
+ if (!copy) \
+ printf("NULL copy in %s:%d\n", \
+ __FUNCTION__, __LINE__); \
+ if (original && copy) { \
+ if (original->id != copy->id) \
+ printf("Ids do not match in %s:%d %llu %llu\n", \
+ __FUNCTION__, __LINE__, original->id, copy->id); \
+ if (original->lac != copy->lac) \
+ printf("LAC do not match in %s:%d %d %d\n", \
+ __FUNCTION__, __LINE__, original->lac, copy->lac); \
+ if (original->authorized != copy->authorized) \
+ printf("Authorize do not match in %s:%d %d %d\n", \
+ __FUNCTION__, __LINE__, original->authorized, \
+ copy->authorized); \
+ if (strcmp(original->imsi, copy->imsi) != 0) \
+ printf("IMSIs do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->imsi, copy->imsi); \
+ if (original->tmsi != copy->tmsi) \
+ printf("TMSIs do not match in %s:%d '%u' '%u'\n", \
+ __FUNCTION__, __LINE__, original->tmsi, copy->tmsi); \
+ if (strcmp(original->name, copy->name) != 0) \
+ printf("names do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->name, copy->name); \
+ if (strcmp(original->extension, copy->extension) != 0) \
+ printf("Extensions do not match in %s:%d '%s' '%s'\n", \
+ __FUNCTION__, __LINE__, original->extension, copy->extension); \
+ }
int main()
{
+ char scratch_str[256];
+
printf("Testing subscriber database code.\n");
osmo_init_logging(&log_info);
@@ -91,10 +104,25 @@ int main()
db_subscriber_alloc_tmsi(alice);
alice->lac=42;
db_sync_subscriber(alice);
+ /* Get by TMSI */
+ snprintf(scratch_str, sizeof(scratch_str), "%"PRIu32, alice->tmsi);
+ alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_TMSI, scratch_str);
+ COMPARE(alice, alice_db);
+ SUBSCR_PUT(alice_db);
+ /* Get by IMSI */
alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice_imsi);
COMPARE(alice, alice_db);
- SUBSCR_PUT(alice);
SUBSCR_PUT(alice_db);
+ /* Get by id */
+ snprintf(scratch_str, sizeof(scratch_str), "%llu", alice->id);
+ alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_ID, scratch_str);
+ COMPARE(alice, alice_db);
+ SUBSCR_PUT(alice_db);
+ /* Get by extension */
+ alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_EXTENSION, alice->extension);
+ COMPARE(alice, alice_db);
+ SUBSCR_PUT(alice_db);
+ SUBSCR_PUT(alice);
alice_imsi = "9993245423445";
alice = db_create_subscriber(NULL, alice_imsi);
@@ -103,10 +131,25 @@ int main()
db_sync_subscriber(alice);
db_subscriber_assoc_imei(alice, "1234567890");
db_subscriber_assoc_imei(alice, "6543560920");
+ /* Get by TMSI */
+ snprintf(scratch_str, sizeof(scratch_str), "%"PRIu32, alice->tmsi);
+ alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_TMSI, scratch_str);
+ COMPARE(alice, alice_db);
+ SUBSCR_PUT(alice_db);
+ /* Get by IMSI */
alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice_imsi);
COMPARE(alice, alice_db);
- SUBSCR_PUT(alice);
SUBSCR_PUT(alice_db);
+ /* Get by id */
+ snprintf(scratch_str, sizeof(scratch_str), "%llu", alice->id);
+ alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_ID, scratch_str);
+ COMPARE(alice, alice_db);
+ SUBSCR_PUT(alice_db);
+ /* Get by extension */
+ alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_EXTENSION, alice->extension);
+ COMPARE(alice, alice_db);
+ SUBSCR_PUT(alice_db);
+ SUBSCR_PUT(alice);
db_fini();
--
1.7.9.5