Change in osmo-hlr[master]: add db_upgrade test

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

neels gerrit-no-reply at lists.osmocom.org
Tue Nov 5 01:04:51 UTC 2019


neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/15913 )

Change subject: add db_upgrade test
......................................................................

add db_upgrade test

We have a database schema upgrade path, but so far nothing that verifies that
we don't break it. It almost seems like the user data weren't important to us!?

Add a db upgrade test:
- Create a db with an .sql dump taken from a db created with an old osmo-hlr,
  producing DB schema version 0.
- Run osmo-hlr --db-upgrade --db-check
- Verify that the upgrade exited successfully.
- Verify that restarting with the upgraded DB works.

If python tests are enabled, also:
- create a new database using the new osmo-hlr (just built).
- replay a VTY transcript to create subscribers as in the old snapshot.
- replay some sql modifications as done in the old snapshot.
- Get a list of sorted table names,
- a list of their sorted columns with all their properties,
- and dump the table contents in a column- and value-sorted way.
- Compare the resulting dumps and error if there are any diffs.
(This is how I found the difference in the imei column that was fixed in
I68a00014a3d603fcba8781470bc5285f78b538d0)

Change-Id: I0961bab0e17cfde5b030576c5bc243c2b51d9dc4
---
M configure.ac
M tests/Makefile.am
A tests/db_upgrade/Makefile.am
A tests/db_upgrade/create_subscribers.vty
A tests/db_upgrade/create_subscribers_step2.sql
A tests/db_upgrade/db_upgrade_test.err
A tests/db_upgrade/db_upgrade_test.ok
A tests/db_upgrade/db_upgrade_test.sh
A tests/db_upgrade/hlr_db_v0.sql
A tests/db_upgrade/osmo-hlr.cfg
M tests/testsuite.at
11 files changed, 417 insertions(+), 0 deletions(-)

Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, but someone else must approve
  osmith: Looks good to me, approved



diff --git a/configure.ac b/configure.ac
index 993d4d5..ca78f38 100644
--- a/configure.ac
+++ b/configure.ac
@@ -186,4 +186,5 @@
 	tests/gsup_server/Makefile
 	tests/gsup/Makefile
 	tests/db/Makefile
+	tests/db_upgrade/Makefile
 	)
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4da8ab1..357fbac 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -3,6 +3,7 @@
 	gsup_server \
 	db \
 	gsup \
+	db_upgrade \
 	$(NULL)
 
 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
@@ -44,6 +45,7 @@
 # don't run vty and ctrl tests concurrently so that the ports don't conflict
 	$(MAKE) vty-test
 	$(MAKE) ctrl-test
+	$(MAKE) db-upgrade-equivalence-test
 else
 python-tests:
 	echo "Not running python-based external tests (determined at configure-time)"
@@ -81,6 +83,9 @@
 	-rm -f $(CTRL_TEST_DB)
 	-rm $(CTRL_TEST_DB)-*
 
+db-upgrade-equivalence-test:
+	$(MAKE) -C db_upgrade upgrade-equivalence-test
+
 check-local: atconfig $(TESTSUITE)
 	$(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
 	$(MAKE) $(AM_MAKEFLAGS) python-tests
diff --git a/tests/db_upgrade/Makefile.am b/tests/db_upgrade/Makefile.am
new file mode 100644
index 0000000..79136c9
--- /dev/null
+++ b/tests/db_upgrade/Makefile.am
@@ -0,0 +1,14 @@
+EXTRA_DIST = \
+	db_upgrade_test.sh \
+	db_upgrade_test.err \
+	db_upgrade_test.ok \
+	hlr_db_v0.sql \
+	osmo-hlr.cfg \
+	create_subscribers.vty \
+	$(NULL)
+
+update_exp:
+	$(srcdir)/db_upgrade_test.sh $(srcdir) $(builddir) >"$(srcdir)/db_upgrade_test.ok" 2>"$(srcdir)/db_upgrade_test.err"
+
+upgrade-equivalence-test:
+	$(srcdir)/db_upgrade_test.sh $(srcdir) $(builddir) do-equivalence-test
diff --git a/tests/db_upgrade/create_subscribers.vty b/tests/db_upgrade/create_subscribers.vty
new file mode 100644
index 0000000..30eeba6
--- /dev/null
+++ b/tests/db_upgrade/create_subscribers.vty
@@ -0,0 +1,47 @@
+OsmoHLR> enable
+OsmoHLR# subscriber imsi 123456789012345 create
+% Created subscriber 123456789012345
+    ID: 1
+    IMSI: 123456789012345
+    MSISDN: none
+OsmoHLR# subscriber imsi 123456789012345 update msisdn 098765432109876
+% Updated subscriber IMSI='123456789012345' to MSISDN='098765432109876'
+OsmoHLR# subscriber imsi 123456789012345 update aud2g comp128v1 ki BeefedCafeFaceAcedAddedDecadeFee
+OsmoHLR# subscriber imsi 123456789012345 update aud3g milenage k C01ffedC1cadaeAc1d1f1edAcac1aB0a opc CededEffacedAceFacedBadFadedBeef
+OsmoHLR# subscriber imsi 111111111 create
+% Created subscriber 111111111
+    ID: 2
+    IMSI: 111111111
+    MSISDN: none
+OsmoHLR# subscriber imsi 222222222 create
+% Created subscriber 222222222
+    ID: 3
+    IMSI: 222222222
+    MSISDN: none
+OsmoHLR# subscriber imsi 222222222 update msisdn 22222
+% Updated subscriber IMSI='222222222' to MSISDN='22222'
+OsmoHLR# subscriber imsi 333333 create
+% Created subscriber 333333
+    ID: 4
+    IMSI: 333333
+    MSISDN: none
+OsmoHLR# subscriber imsi 333333 update msisdn 3
+% Updated subscriber IMSI='333333' to MSISDN='3'
+OsmoHLR# subscriber imsi 333333 update aud2g comp128v2 ki 33333333333333333333333333333333
+OsmoHLR# subscriber imsi 444444444444444 create
+% Created subscriber 444444444444444
+    ID: 5
+    IMSI: 444444444444444
+    MSISDN: none
+OsmoHLR# subscriber imsi 444444444444444 update msisdn 4444
+% Updated subscriber IMSI='444444444444444' to MSISDN='4444'
+OsmoHLR# subscriber imsi 444444444444444 update aud3g milenage k 44444444444444444444444444444444 op 44444444444444444444444444444444
+OsmoHLR# subscriber imsi 5555555 create
+% Created subscriber 5555555
+    ID: 6
+    IMSI: 5555555
+    MSISDN: none
+OsmoHLR# subscriber imsi 5555555 update msisdn 55555555555555
+% Updated subscriber IMSI='5555555' to MSISDN='55555555555555'
+OsmoHLR# subscriber imsi 5555555 update aud2g xor ki 55555555555555555555555555555555
+OsmoHLR# subscriber imsi 5555555 update aud3g milenage k 55555555555555555555555555555555 opc 55555555555555555555555555555555
diff --git a/tests/db_upgrade/create_subscribers_step2.sql b/tests/db_upgrade/create_subscribers_step2.sql
new file mode 100644
index 0000000..7933e25
--- /dev/null
+++ b/tests/db_upgrade/create_subscribers_step2.sql
@@ -0,0 +1,6 @@
+update subscriber set vlr_number = 'MSC-1' where id = 1;
+update subscriber set ms_purged_cs = 1 where id = 2;
+update subscriber set ms_purged_ps = 1 where id = 3;
+update subscriber set nam_cs = 0 where id = 4;
+update subscriber set nam_ps = 0 where id = 5;
+update subscriber set nam_cs = 0, nam_ps = 0 where id = 6;
diff --git a/tests/db_upgrade/db_upgrade_test.err b/tests/db_upgrade/db_upgrade_test.err
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/db_upgrade/db_upgrade_test.err
diff --git a/tests/db_upgrade/db_upgrade_test.ok b/tests/db_upgrade/db_upgrade_test.ok
new file mode 100644
index 0000000..bce3eb4
--- /dev/null
+++ b/tests/db_upgrade/db_upgrade_test.ok
@@ -0,0 +1,168 @@
+Creating db in schema version 0
+
+Version 0 db:
+
+Table: auc_2g
+name|type|notnull|dflt_value|pk
+algo_id_2g|INTEGER|1||0
+ki|VARCHAR(32)|1||0
+subscriber_id|INTEGER|0||1
+
+Table auc_2g contents:
+algo_id_2g|ki|subscriber_id
+1|BeefedCafeFaceAcedAddedDecadeFee|1
+2|33333333333333333333333333333333|4
+4|55555555555555555555555555555555|6
+
+Table: auc_3g
+name|type|notnull|dflt_value|pk
+algo_id_3g|INTEGER|1||0
+ind_bitlen|INTEGER|1|5|0
+k|VARCHAR(32)|1||0
+op|VARCHAR(32)|0||0
+opc|VARCHAR(32)|0||0
+sqn|INTEGER|1|0|0
+subscriber_id|INTEGER|0||1
+
+Table auc_3g contents:
+algo_id_3g|ind_bitlen|k|op|opc|sqn|subscriber_id
+5|5|C01ffedC1cadaeAc1d1f1edAcac1aB0a||CededEffacedAceFacedBadFadedBeef|0|1
+5|5|44444444444444444444444444444444|44444444444444444444444444444444||0|5
+5|5|55555555555555555555555555555555||55555555555555555555555555555555|0|6
+
+Table: subscriber
+name|type|notnull|dflt_value|pk
+ggsn_number|VARCHAR(15)|0||0
+gmlc_number|VARCHAR(15)|0||0
+hlr_number|VARCHAR(15)|0||0
+id|INTEGER|0||1
+imeisv|VARCHAR|0||0
+imsi|VARCHAR(15)|1||0
+lmsi|INTEGER|0||0
+ms_purged_cs|BOOLEAN|1|0|0
+ms_purged_ps|BOOLEAN|1|0|0
+msisdn|VARCHAR(15)|0||0
+nam_cs|BOOLEAN|1|1|0
+nam_ps|BOOLEAN|1|1|0
+periodic_lu_tmr|INTEGER|0||0
+periodic_rau_tau_tmr|INTEGER|0||0
+sgsn_address|VARCHAR|0||0
+sgsn_number|VARCHAR(15)|0||0
+smsc_number|VARCHAR(15)|0||0
+vlr_number|VARCHAR(15)|0||0
+
+Table subscriber contents:
+ggsn_number|gmlc_number|hlr_number|id|imeisv|imsi|lmsi|ms_purged_cs|ms_purged_ps|msisdn|nam_cs|nam_ps|periodic_lu_tmr|periodic_rau_tau_tmr|sgsn_address|sgsn_number|smsc_number|vlr_number
+|||1||123456789012345||0|0|098765432109876|1|1||||||MSC-1
+|||2||111111111||1|0||1|1||||||
+|||3||222222222||0|1|22222|1|1||||||
+|||4||333333||0|0|3|0|1||||||
+|||5||444444444444444||0|0|4444|1|0||||||
+|||6||5555555||0|0|55555555555555|0|0||||||
+
+Table: subscriber_apn
+name|type|notnull|dflt_value|pk
+apn|VARCHAR(256)|1||0
+subscriber_id|INTEGER|0||0
+
+Table subscriber_apn contents:
+
+Table: subscriber_multi_msisdn
+name|type|notnull|dflt_value|pk
+msisdn|VARCHAR(15)|1||0
+subscriber_id|INTEGER|0||0
+
+Table subscriber_multi_msisdn contents:
+
+Launching osmo-hlr to upgrade db:
+osmo-hlr --database $db --db-upgrade --db-check --config-file $srcdir/osmo-hlr.cfg
+rc = 0
+DMAIN hlr starting
+DDB using database: <PATH>test.db
+DDB Database <PATH>test.db' has HLR DB schema version 0
+DDB Database <PATH>test.db' has been upgraded to HLR DB schema version 2
+DMAIN Cmdline option --db-check: Database was opened successfully, quitting.
+
+Resulting db:
+
+Table: auc_2g
+name|type|notnull|dflt_value|pk
+algo_id_2g|INTEGER|1||0
+ki|VARCHAR(32)|1||0
+subscriber_id|INTEGER|0||1
+
+Table auc_2g contents:
+algo_id_2g|ki|subscriber_id
+1|BeefedCafeFaceAcedAddedDecadeFee|1
+2|33333333333333333333333333333333|4
+4|55555555555555555555555555555555|6
+
+Table: auc_3g
+name|type|notnull|dflt_value|pk
+algo_id_3g|INTEGER|1||0
+ind_bitlen|INTEGER|1|5|0
+k|VARCHAR(32)|1||0
+op|VARCHAR(32)|0||0
+opc|VARCHAR(32)|0||0
+sqn|INTEGER|1|0|0
+subscriber_id|INTEGER|0||1
+
+Table auc_3g contents:
+algo_id_3g|ind_bitlen|k|op|opc|sqn|subscriber_id
+5|5|C01ffedC1cadaeAc1d1f1edAcac1aB0a||CededEffacedAceFacedBadFadedBeef|0|1
+5|5|44444444444444444444444444444444|44444444444444444444444444444444||0|5
+5|5|55555555555555555555555555555555||55555555555555555555555555555555|0|6
+
+Table: subscriber
+name|type|notnull|dflt_value|pk
+ggsn_number|VARCHAR(15)|0||0
+gmlc_number|VARCHAR(15)|0||0
+hlr_number|VARCHAR(15)|0||0
+id|INTEGER|0||1
+imei|VARCHAR(14)|0||0
+imeisv|VARCHAR|0||0
+imsi|VARCHAR(15)|1||0
+last_lu_seen|TIMESTAMP|0|NULL|0
+lmsi|INTEGER|0||0
+ms_purged_cs|BOOLEAN|1|0|0
+ms_purged_ps|BOOLEAN|1|0|0
+msisdn|VARCHAR(15)|0||0
+nam_cs|BOOLEAN|1|1|0
+nam_ps|BOOLEAN|1|1|0
+periodic_lu_tmr|INTEGER|0||0
+periodic_rau_tau_tmr|INTEGER|0||0
+sgsn_address|VARCHAR|0||0
+sgsn_number|VARCHAR(15)|0||0
+smsc_number|VARCHAR(15)|0||0
+vlr_number|VARCHAR(15)|0||0
+
+Table subscriber contents:
+ggsn_number|gmlc_number|hlr_number|id|imei|imeisv|imsi|last_lu_seen|lmsi|ms_purged_cs|ms_purged_ps|msisdn|nam_cs|nam_ps|periodic_lu_tmr|periodic_rau_tau_tmr|sgsn_address|sgsn_number|smsc_number|vlr_number
+|||1|||123456789012345|||0|0|098765432109876|1|1||||||MSC-1
+|||2|||111111111|||1|0||1|1||||||
+|||3|||222222222|||0|1|22222|1|1||||||
+|||4|||333333|||0|0|3|0|1||||||
+|||5|||444444444444444|||0|0|4444|1|0||||||
+|||6|||5555555|||0|0|55555555555555|0|0||||||
+
+Table: subscriber_apn
+name|type|notnull|dflt_value|pk
+apn|VARCHAR(256)|1||0
+subscriber_id|INTEGER|0||0
+
+Table subscriber_apn contents:
+
+Table: subscriber_multi_msisdn
+name|type|notnull|dflt_value|pk
+msisdn|VARCHAR(15)|1||0
+subscriber_id|INTEGER|0||0
+
+Table subscriber_multi_msisdn contents:
+
+Verify that osmo-hlr can open it:
+osmo-hlr --database $db --db-check --config-file $srcdir/osmo-hlr.cfg
+rc = 0
+DMAIN hlr starting
+DDB using database: <PATH>test.db
+DDB Database <PATH>test.db' has HLR DB schema version 2
+DMAIN Cmdline option --db-check: Database was opened successfully, quitting.
diff --git a/tests/db_upgrade/db_upgrade_test.sh b/tests/db_upgrade/db_upgrade_test.sh
new file mode 100755
index 0000000..bf56c56
--- /dev/null
+++ b/tests/db_upgrade/db_upgrade_test.sh
@@ -0,0 +1,83 @@
+#!/bin/sh
+srcdir="${1:-.}"
+builddir="${2:-.}"
+do_equivalence_test="$3"
+
+set -e
+
+db="$builddir/test.db"
+osmo_hlr="$builddir/../../src/osmo-hlr"
+cfg="$srcdir/osmo-hlr.cfg"
+
+dump_sorted_schema(){
+	db_file="$1"
+	tables="$(sqlite3 "$db_file" "SELECT name FROM sqlite_master WHERE type = 'table' order by name")"
+	for table in $tables; do
+		echo
+		echo "Table: $table"
+		sqlite3 -header "$db_file" "SELECT name,type,\"notnull\",dflt_value,pk FROM PRAGMA_TABLE_INFO('$table') order by name;"
+		echo
+		echo "Table $table contents:"
+		columns="$(sqlite3 "$db_file" "SELECT name FROM PRAGMA_TABLE_INFO('$table') order by name;")"
+		sqlite3 -header "$db_file" "SELECT $(echo $columns | sed 's/ /,/g') from $table;"
+	done
+}
+
+rm -f "$db"
+echo "Creating db in schema version 0"
+sqlite3 "$db" < "$srcdir/hlr_db_v0.sql"
+
+echo
+echo "Version 0 db:"
+dump_sorted_schema "$db"
+
+set +e
+
+echo
+echo "Launching osmo-hlr to upgrade db:"
+echo osmo-hlr --database '$db' --db-upgrade --db-check --config-file '$srcdir/osmo-hlr.cfg'
+"$osmo_hlr" --database "$db" --db-upgrade --db-check --config-file "$cfg" >log 2>&1
+echo "rc = $?"
+cat log | sed 's@[^ "]*/@<PATH>@g'
+
+echo
+echo "Resulting db:"
+dump_sorted_schema "$db"
+
+echo
+echo "Verify that osmo-hlr can open it:"
+echo osmo-hlr --database '$db' --db-check --config-file '$srcdir/osmo-hlr.cfg'
+"$osmo_hlr" --database "$db" --db-check --config-file "$cfg" >log 2>&1
+echo "rc = $?"
+cat log | sed 's@[^ "]*/@<PATH>@g'
+
+if [ -n "$do_equivalence_test" ]; then
+	# this part requires osmo_interact_vty.py, so this test is not part of the normal run
+	set -e -x
+	mint_db="$builddir/mint.db"
+	rm -f "$mint_db"
+
+	osmo_verify_transcript_vty.py -v \
+		-n OsmoHLR -p 4258 \
+		-r "$osmo_hlr -c $cfg -l $mint_db" \
+		"$srcdir/create_subscribers.vty"
+	sqlite3 "$mint_db" < "$srcdir/create_subscribers_step2.sql"
+
+	set +x
+	test_dump="$builddir/test.dump"
+	mint_dump="$builddir/mint.dump"
+
+	dump_sorted_schema "$db" > "$test_dump"
+	dump_sorted_schema "$mint_db" > "$mint_dump"
+
+	echo
+	echo "Newly created sorted schema is:"
+	cat "$mint_dump"
+	echo
+	echo "Diff to upgraded schema:"
+	diff -u "$mint_dump" "$test_dump"
+	echo "rc=$?"
+fi
+
+rm -f log
+rm -f "$db"
diff --git a/tests/db_upgrade/hlr_db_v0.sql b/tests/db_upgrade/hlr_db_v0.sql
new file mode 100644
index 0000000..46c985d
--- /dev/null
+++ b/tests/db_upgrade/hlr_db_v0.sql
@@ -0,0 +1,80 @@
+PRAGMA foreign_keys=OFF;
+BEGIN TRANSACTION;
+CREATE TABLE subscriber (
+-- OsmoHLR's DB scheme is modelled roughly after TS 23.008 version 13.3.0
+	id		INTEGER PRIMARY KEY,
+	-- Chapter 2.1.1.1
+	imsi		VARCHAR(15) UNIQUE NOT NULL,
+	-- Chapter 2.1.2
+	msisdn		VARCHAR(15) UNIQUE,
+	-- Chapter 2.2.3: Most recent / current IMEI
+	imeisv		VARCHAR,
+	-- Chapter 2.4.5
+	vlr_number	VARCHAR(15),
+	-- Chapter 2.4.6
+	hlr_number	VARCHAR(15),
+	-- Chapter 2.4.8.1
+	sgsn_number	VARCHAR(15),
+	-- Chapter 2.13.10
+	sgsn_address	VARCHAR,
+	-- Chapter 2.4.8.2
+	ggsn_number	VARCHAR(15),
+	-- Chapter 2.4.9.2
+	gmlc_number	VARCHAR(15),
+	-- Chapter 2.4.23
+	smsc_number	VARCHAR(15),
+	-- Chapter 2.4.24
+	periodic_lu_tmr	INTEGER,
+	-- Chapter 2.13.115
+	periodic_rau_tau_tmr INTEGER,
+	-- Chapter 2.1.1.2: network access mode
+	nam_cs		BOOLEAN NOT NULL DEFAULT 1,
+	nam_ps		BOOLEAN NOT NULL DEFAULT 1,
+	-- Chapter 2.1.8
+	lmsi		INTEGER,
+	-- The below purged flags might not even be stored non-volatile,
+	-- refer to TS 23.012 Chapter 3.6.1.4
+	-- Chapter 2.7.5
+	ms_purged_cs	BOOLEAN NOT NULL DEFAULT 0,
+	-- Chapter 2.7.6
+	ms_purged_ps	BOOLEAN NOT NULL DEFAULT 0
+);
+INSERT INTO subscriber VALUES(1,'123456789012345','098765432109876',NULL,'MSC-1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,NULL,0,0);
+INSERT INTO subscriber VALUES(2,'111111111',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,NULL,1,0);
+INSERT INTO subscriber VALUES(3,'222222222','22222',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,1,NULL,0,1);
+INSERT INTO subscriber VALUES(4,'333333','3',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,1,NULL,0,0);
+INSERT INTO subscriber VALUES(5,'444444444444444','4444',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,NULL,0,0);
+INSERT INTO subscriber VALUES(6,'5555555','55555555555555',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,NULL,0,0);
+CREATE TABLE subscriber_apn (
+	subscriber_id	INTEGER,		-- subscriber.id
+	apn		VARCHAR(256) NOT NULL
+);
+CREATE TABLE subscriber_multi_msisdn (
+-- Chapter 2.1.3
+	subscriber_id	INTEGER,		-- subscriber.id
+	msisdn		VARCHAR(15) NOT NULL
+);
+CREATE TABLE auc_2g (
+	subscriber_id	INTEGER PRIMARY KEY,	-- subscriber.id
+	algo_id_2g	INTEGER NOT NULL,	-- enum osmo_auth_algo value
+	ki		VARCHAR(32) NOT NULL	-- hex string: subscriber's secret key (128bit)
+);
+INSERT INTO auc_2g VALUES(1,1,'BeefedCafeFaceAcedAddedDecadeFee');
+INSERT INTO auc_2g VALUES(4,2,'33333333333333333333333333333333');
+INSERT INTO auc_2g VALUES(6,4,'55555555555555555555555555555555');
+CREATE TABLE auc_3g (
+	subscriber_id	INTEGER PRIMARY KEY,	-- subscriber.id
+	algo_id_3g	INTEGER NOT NULL,	-- enum osmo_auth_algo value
+	k		VARCHAR(32) NOT NULL,	-- hex string: subscriber's secret key (128bit)
+	op		VARCHAR(32),		-- hex string: operator's secret key (128bit)
+	opc		VARCHAR(32),		-- hex string: derived from OP and K (128bit)
+	sqn		INTEGER NOT NULL DEFAULT 0,	-- sequence number of key usage
+	-- nr of index bits at lower SQN end
+	ind_bitlen	INTEGER NOT NULL DEFAULT 5
+);
+INSERT INTO auc_3g VALUES(1,5,'C01ffedC1cadaeAc1d1f1edAcac1aB0a',NULL,'CededEffacedAceFacedBadFadedBeef',0,5);
+INSERT INTO auc_3g VALUES(5,5,'44444444444444444444444444444444','44444444444444444444444444444444',NULL,0,5);
+INSERT INTO auc_3g VALUES(6,5,'55555555555555555555555555555555',NULL,'55555555555555555555555555555555',0,5);
+CREATE UNIQUE INDEX idx_subscr_imsi ON subscriber (imsi)
+;
+COMMIT;
diff --git a/tests/db_upgrade/osmo-hlr.cfg b/tests/db_upgrade/osmo-hlr.cfg
new file mode 100644
index 0000000..7fb12c1
--- /dev/null
+++ b/tests/db_upgrade/osmo-hlr.cfg
@@ -0,0 +1,6 @@
+log stderr
+ logging level db notice
+ logging print category-hex 0
+ logging print file 0
+ logging print category 1
+ logging color 0
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 70ae7ae..a8efe42 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -36,3 +36,10 @@
 sqlite3 db_test.db < $abs_top_srcdir/sql/hlr.sql
 AT_CHECK([$abs_top_builddir/tests/db/db_test], [], [expout], [experr])
 AT_CLEANUP
+
+AT_SETUP([db_upgrade])
+AT_KEYWORDS([db_upgrade])
+cat $abs_srcdir/db_upgrade/db_upgrade_test.ok > expout
+cat $abs_srcdir/db_upgrade/db_upgrade_test.err > experr
+AT_CHECK([$abs_srcdir/db_upgrade/db_upgrade_test.sh $abs_srcdir/db_upgrade $abs_builddir/db_upgrade], [], [expout], [experr])
+AT_CLEANUP

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/15913
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: I0961bab0e17cfde5b030576c5bc243c2b51d9dc4
Gerrit-Change-Number: 15913
Gerrit-PatchSet: 5
Gerrit-Owner: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-CC: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191105/b58cf289/attachment.htm>


More information about the gerrit-log mailing list