int main() { printf("Testing subscriber database code.\n"); osmo_init_logging(&log_info); if (db_init("hlr.sqlite3")) { printf("DB: Failed to init database. Please check the option settings.\n"); return 1; } printf("DB: Database initialized.\n"); if (db_prepare()) { printf("DB: Failed to prepare database.\n"); return 1; } printf("DB: Database prepared.\n"); struct gsm_subscriber *alice = NULL; struct gsm_subscriber *alice_db; char *alice_imsi = "3243245432345"; alice = db_create_subscriber(NULL, alice_imsi); db_sync_subscriber(alice); alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice->imsi); COMPARE(alice, alice_db); SUBSCR_PUT(alice_db); SUBSCR_PUT(alice); alice_imsi = "3693245423445"; alice = db_create_subscriber(NULL, alice_imsi); db_subscriber_assoc_imei(alice, "1234567890"); db_subscriber_alloc_tmsi(alice); alice->lac=42; db_sync_subscriber(alice); alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice_imsi); COMPARE(alice, alice_db); SUBSCR_PUT(alice); SUBSCR_PUT(alice_db); alice_imsi = "9993245423445"; alice = db_create_subscriber(NULL, alice_imsi); db_subscriber_alloc_tmsi(alice); alice->lac=42; db_sync_subscriber(alice); db_subscriber_assoc_imei(alice, "1234567890"); db_subscriber_assoc_imei(alice, "6543560920"); alice_db = db_get_subscriber(NULL, GSM_SUBSCRIBER_IMSI, alice_imsi); COMPARE(alice, alice_db); SUBSCR_PUT(alice); SUBSCR_PUT(alice_db); db_fini(); printf("Done\n"); return 0; }
static void test_subs(const char *imsi, char *imei1, char *imei2, bool make_ext) { struct gsm_subscriber *alice = NULL, *alice_db; char scratch_str[256]; alice = db_create_subscriber(imsi, GSM_MIN_EXTEN, GSM_MAX_EXTEN, make_ext); db_subscriber_assoc_imei(alice, imei1); if (imei2) db_subscriber_assoc_imei(alice, imei2); 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(GSM_SUBSCRIBER_TMSI, scratch_str); COMPARE(alice, alice_db); SUBSCR_PUT(alice_db); /* Get by IMSI */ alice_db = db_get_subscriber(GSM_SUBSCRIBER_IMSI, imsi); COMPARE(alice, alice_db); SUBSCR_PUT(alice_db); /* Get by id */ snprintf(scratch_str, sizeof(scratch_str), "%llu", alice->id); alice_db = db_get_subscriber(GSM_SUBSCRIBER_ID, scratch_str); COMPARE(alice, alice_db); SUBSCR_PUT(alice_db); /* Get by extension */ alice_db = db_get_subscriber(GSM_SUBSCRIBER_EXTENSION, alice->extension); if (alice_db) { if (!make_ext) printf("FAIL: bogus extension created for IMSI %s\n", imsi); COMPARE(alice, alice_db); SUBSCR_PUT(alice_db); } else if (make_ext) printf("FAIL: no subscriber extension for IMSI %s\n", imsi); SUBSCR_PUT(alice); }