From patchwork Fri Apr 25 10:57:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Holger Freyther X-Patchwork-Id: 342773 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ganesha.gnumonks.org (ganesha.gnumonks.org [213.95.27.120]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 86BA314016F for ; Fri, 25 Apr 2014 21:06:11 +1000 (EST) Received: from localhost ([127.0.0.1] helo=ganesha.gnumonks.org) by ganesha.gnumonks.org with esmtp (Exim 4.72) (envelope-from ) id 1Wddx9-00064u-8x; Fri, 25 Apr 2014 13:06:01 +0200 Received: from mail.sysmocom.de ([2a01:4f8:191:444c::2:4]) by ganesha.gnumonks.org with esmtp (Exim 4.72) (envelope-from ) id 1WddpD-000531-Bx for openbsc@lists.osmocom.org; Fri, 25 Apr 2014 12:57:54 +0200 Received: from sangmingze-mail.local (24-134-58-61-dynip.superkabel.de [24.134.58.61]) by mail.sysmocom.de (Postfix) with ESMTPSA id 3C67F54753 for ; Fri, 25 Apr 2014 10:57:47 +0000 (UTC) Received: from localhost.home ([127.0.0.1] helo=xiaoyu.home) by sangmingze-mail.local with esmtp (Exim 4.82) (envelope-from ) id 1WddpB-00064e-3f for openbsc@lists.osmocom.org; Fri, 25 Apr 2014 12:57:45 +0200 From: Holger Freyther To: openbsc@lists.osmocom.org Subject: [PATCH 5/5] db: Add testcase for the db migration. Date: Fri, 25 Apr 2014 12:57:30 +0200 Message-Id: <1398423450-23319-5-git-send-email-holger@freyther.de> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1398423450-23319-1-git-send-email-holger@freyther.de> References: <1398423450-23319-1-git-send-email-holger@freyther.de> X-Spam-Score: 0.1 (/) X-Spam-Report: SpamASsassin versoin 3.3.1 on ganesha.gnumonks.org summary: Content analysis details: (0.1 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.1 TW_XM BODY: Odd Letter Triples with XM 0.0 NORMAL_HTTP_TO_IP URI: Uses a dotted-decimal IP address in URL X-BeenThere: openbsc@lists.osmocom.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development of the OpenBSC GSM base station controller List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: openbsc-bounces@lists.osmocom.org Errors-To: openbsc-bounces@lists.osmocom.org From: Holger Hans Peter Freyther --- 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 7746e44..1580acd 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 26ea703..647b519 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 ee2fee7..1494e77 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 0000000..0a0f2f3 --- /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 b2c5518..4465b25 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])