From 714e7fb670063588a5ee82c99dc1405e8bffb913 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Fri, 6 Sep 2019 16:10:28 +0930 Subject: [PATCH] pytest: test db upgrade. Signed-off-by: Rusty Russell --- tests/data/oldstyle-scids.sqlite3.xz | Bin 0 -> 6072 bytes tests/test_db.py | 14 +++++++++++++- tests/utils.py | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 tests/data/oldstyle-scids.sqlite3.xz diff --git a/tests/data/oldstyle-scids.sqlite3.xz b/tests/data/oldstyle-scids.sqlite3.xz new file mode 100644 index 0000000000000000000000000000000000000000..c6dd8c65a107ecd476d13cfabefa34c101249292 GIT binary patch literal 6072 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 literal 0 HcmV?d00001 diff --git a/tests/test_db.py b/tests/test_db.py index 92b6c3634..9358519c0 100644 --- a/tests/test_db.py +++ b/tests/test_db.py @@ -1,5 +1,7 @@ from fixtures import * # noqa: F401,F403 -from utils import wait_for, sync_blockheight +from utils import wait_for, sync_blockheight, COMPAT + +import unittest def test_db_dangling_peer_fix(node_factory): @@ -111,3 +113,13 @@ def test_max_channel_id(node_factory, bitcoind): # Fundchannel again, should succeed. l1.rpc.fundchannel(l2.info['id'], 10**5) + + +@unittest.skipIf(not COMPAT, "needs COMPAT to convert obsolete db") +def test_scid_upgrade(node_factory): + + # Created through the power of sed "s/X'\([0-9]*\)78\([0-9]*\)78\([0-9]*\)'/X'\13A\23A\3'/" + l1 = node_factory.get_node(dbfile='oldstyle-scids.sqlite3.xz') + + assert l1.db_query('SELECT short_channel_id from channels;') == [{'short_channel_id': '103x1x1'}] + assert l1.db_query('SELECT failchannel from payments;') == [{'failchannel': '103x1x1'}] diff --git a/tests/utils.py b/tests/utils.py index dfe56ace2..017b1d623 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -42,6 +42,7 @@ EXPERIMENTAL_FEATURES = os.getenv("EXPERIMENTAL_FEATURES", config['EXPERIMENTAL_ TIMEOUT = int(os.getenv("TIMEOUT", "60")) VALGRIND = os.getenv("VALGRIND", config['VALGRIND']) == "1" SLOW_MACHINE = os.getenv("SLOW_MACHINE", "0") == "1" +COMPAT = os.getenv("COMPAT", config['COMPAT']) == "1" def wait_for(success, timeout=TIMEOUT):