blob: 8e2b498ce768d031bdce8acd2255c23f3c82b655 [file] [log] [blame]
Neels Hofmeyr5b654612019-10-31 02:03:48 +01001#!/bin/sh
2srcdir="${1:-.}"
3builddir="${2:-.}"
4do_equivalence_test="$3"
5
6set -e
7
8db="$builddir/test.db"
9osmo_hlr="$builddir/../../src/osmo-hlr"
10cfg="$srcdir/osmo-hlr.cfg"
11
12dump_sorted_schema(){
13 db_file="$1"
Neels Hofmeyr7143f3a2019-11-11 00:09:16 +010014 tables="$(sqlite3 -batch -noheader "$db_file" "SELECT name FROM sqlite_master WHERE type = 'table' order by name")"
Neels Hofmeyr5b654612019-10-31 02:03:48 +010015 for table in $tables; do
16 echo
17 echo "Table: $table"
Neels Hofmeyr7143f3a2019-11-11 00:09:16 +010018 sqlite3 -batch -header "$db_file" "SELECT name,type,\"notnull\",dflt_value,pk FROM PRAGMA_TABLE_INFO('$table') order by name;"
Neels Hofmeyr5b654612019-10-31 02:03:48 +010019 echo
20 echo "Table $table contents:"
Neels Hofmeyr7143f3a2019-11-11 00:09:16 +010021 columns="$(sqlite3 -batch -noheader "$db_file" "SELECT name FROM PRAGMA_TABLE_INFO('$table') order by name;")"
22 sqlite3 -batch -header "$db_file" "SELECT $(echo $columns | sed 's/ /,/g') from $table;"
Neels Hofmeyr5b654612019-10-31 02:03:48 +010023 done
24}
25
26rm -f "$db"
27echo "Creating db in schema version 0"
Neels Hofmeyr7143f3a2019-11-11 00:09:16 +010028sqlite3 -batch "$db" < "$srcdir/hlr_db_v0.sql"
Neels Hofmeyr5b654612019-10-31 02:03:48 +010029
30echo
31echo "Version 0 db:"
32dump_sorted_schema "$db"
33
34set +e
35
36echo
37echo "Launching osmo-hlr to upgrade db:"
38echo osmo-hlr --database '$db' --db-upgrade --db-check --config-file '$srcdir/osmo-hlr.cfg'
39"$osmo_hlr" --database "$db" --db-upgrade --db-check --config-file "$cfg" >log 2>&1
40echo "rc = $?"
41cat log | sed 's@[^ "]*/@<PATH>@g'
42
43echo
44echo "Resulting db:"
45dump_sorted_schema "$db"
46
47echo
48echo "Verify that osmo-hlr can open it:"
49echo osmo-hlr --database '$db' --db-check --config-file '$srcdir/osmo-hlr.cfg'
50"$osmo_hlr" --database "$db" --db-check --config-file "$cfg" >log 2>&1
51echo "rc = $?"
52cat log | sed 's@[^ "]*/@<PATH>@g'
53
54if [ -n "$do_equivalence_test" ]; then
55 # this part requires osmo_interact_vty.py, so this test is not part of the normal run
56 set -e -x
57 mint_db="$builddir/mint.db"
58 rm -f "$mint_db"
59
60 osmo_verify_transcript_vty.py -v \
61 -n OsmoHLR -p 4258 \
62 -r "$osmo_hlr -c $cfg -l $mint_db" \
63 "$srcdir/create_subscribers.vty"
Neels Hofmeyr7143f3a2019-11-11 00:09:16 +010064 sqlite3 -batch "$mint_db" < "$srcdir/create_subscribers_step2.sql"
Neels Hofmeyr5b654612019-10-31 02:03:48 +010065
66 set +x
67 test_dump="$builddir/test.dump"
68 mint_dump="$builddir/mint.dump"
69
70 dump_sorted_schema "$db" > "$test_dump"
71 dump_sorted_schema "$mint_db" > "$mint_dump"
72
73 echo
74 echo "Newly created sorted schema is:"
75 cat "$mint_dump"
76 echo
77 echo "Diff to upgraded schema:"
78 diff -u "$mint_dump" "$test_dump"
79 echo "rc=$?"
80fi
81
82rm -f log
83rm -f "$db"