From 6114401b9bce9322fb2826fe41393d03d0981ab2 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Sat, 8 Mar 2014 16:41:37 +0100 Subject: [PATCH] db: Add testcase for the db migration. --- openbsc/src/libmsc/db.c | 2 ++ openbsc/tests/db/Makefile.am | 2 +- openbsc/tests/db/db_test.c | 34 ++++++++++++++++++++++++++++++++++ openbsc/tests/db/db_test.err | 2 ++ openbsc/tests/db/hlr.sqlite3 | Bin 0 -> 29696 bytes openbsc/tests/testsuite.at | 4 +++- 6 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 openbsc/tests/db/db_test.err create mode 100644 openbsc/tests/db/hlr.sqlite3 diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c index 7746e4471..1580acd91 100644 --- a/openbsc/src/libmsc/db.c +++ b/openbsc/src/libmsc/db.c @@ -271,6 +271,8 @@ static int update_db_revision_3(void) dbi_result result; struct gsm_sms *sms; + LOGP(DDB, LOGL_NOTICE, "Going to migrate from revision 3\n"); + result = dbi_conn_query(conn, "BEGIN EXCLUSIVE TRANSACTION"); if (!result) { LOGP(DDB, LOGL_ERROR, diff --git a/openbsc/tests/db/Makefile.am b/openbsc/tests/db/Makefile.am index 26ea70345..647b51991 100644 --- a/openbsc/tests/db/Makefile.am +++ b/openbsc/tests/db/Makefile.am @@ -2,7 +2,7 @@ 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 = db_test.ok +EXTRA_DIST = db_test.ok db_test.err hlr.sqlite3 noinst_PROGRAMS = db_test diff --git a/openbsc/tests/db/db_test.c b/openbsc/tests/db/db_test.c index ee2fee7b2..1494e77f7 100644 --- a/openbsc/tests/db/db_test.c +++ b/openbsc/tests/db/db_test.c @@ -118,6 +118,39 @@ static void test_sms(void) subscr_put(subscr); } +static void test_sms_migrate(void) +{ + struct gsm_subscriber *rcv_subscr; + struct gsm_sms *sms; + static const uint8_t user_data_1[] = { + 0x41, 0xf1, 0xd8, 0x05, 0x22, 0x96, 0xcd, 0x2e, + 0x90, 0xf1, 0xfd, 0x06, 0x00 }; + static const uint8_t user_data_2[] = { + 0x41, 0xf1, 0xd8, 0x05, 0x22, 0x96, 0xcd, 0x2e, + 0xd0, 0xf1, 0xfd, 0x06, 0x00 }; + + rcv_subscr = db_get_subscriber(GSM_SUBSCRIBER_IMSI, "901010000001111"); + rcv_subscr->net = &dummy_net; + + sms = db_sms_get(&dummy_net, 1); + OSMO_ASSERT(sms->id == 1); + OSMO_ASSERT(sms->receiver == rcv_subscr); + OSMO_ASSERT(strcmp(sms->text, "Abc. Def. Foo") == 0); + OSMO_ASSERT(sms->user_data_len == ARRAY_SIZE(user_data_1)); + OSMO_ASSERT(memcmp(sms->user_data, user_data_1, ARRAY_SIZE(user_data_1)) == 0); + sms_free(sms); + + sms = db_sms_get(&dummy_net, 2); + OSMO_ASSERT(sms->id == 2); + OSMO_ASSERT(sms->receiver == rcv_subscr); + OSMO_ASSERT(strcmp(sms->text, "Abc. Def. Goo") == 0); + OSMO_ASSERT(sms->user_data_len == ARRAY_SIZE(user_data_2)); + OSMO_ASSERT(memcmp(sms->user_data, user_data_2, ARRAY_SIZE(user_data_2)) == 0); + sms_free(sms); + + subscr_put(rcv_subscr); +} + int main() { char scratch_str[256]; @@ -202,6 +235,7 @@ int main() SUBSCR_PUT(alice); test_sms(); + test_sms_migrate(); db_fini(); diff --git a/openbsc/tests/db/db_test.err b/openbsc/tests/db/db_test.err new file mode 100644 index 000000000..0a0f2f38c --- /dev/null +++ b/openbsc/tests/db/db_test.err @@ -0,0 +1,2 @@ +<000d> db.c:274 Going to migrate from revision 3 + \ No newline at end of file diff --git a/openbsc/tests/db/hlr.sqlite3 b/openbsc/tests/db/hlr.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..e59dcdca361bb0bdeb097662dbf3e4e3515d6e82 GIT binary patch literal 29696 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 GiTOV&I7qty literal 0 HcmV?d00001 diff --git a/openbsc/tests/testsuite.at b/openbsc/tests/testsuite.at index b2c551859..4465b2528 100644 --- a/openbsc/tests/testsuite.at +++ b/openbsc/tests/testsuite.at @@ -10,7 +10,9 @@ AT_CLEANUP AT_SETUP([db]) AT_KEYWORDS([db]) cat $abs_srcdir/db/db_test.ok > expout -AT_CHECK([$abs_top_builddir/tests/db/db_test], [], [expout], [ignore]) +cat $abs_srcdir/db/db_test.err > experr +cat $abs_srcdir/db/hlr.sqlite3 > hlr.sqlite3 +AT_CHECK([$abs_top_builddir/tests/db/db_test], [], [expout], [experr]) AT_CLEANUP AT_SETUP([channel])