diff --git a/contrib/pyln-testing/pyln/testing/db.py b/contrib/pyln-testing/pyln/testing/db.py index 5ee90ce79..7110a8e52 100644 --- a/contrib/pyln-testing/pyln/testing/db.py +++ b/contrib/pyln-testing/pyln/testing/db.py @@ -17,6 +17,7 @@ from typing import Dict, List, Optional, Union class Sqlite3Db(object): def __init__(self, path: str) -> None: self.path = path + self.provider = None def get_dsn(self) -> None: """SQLite3 doesn't provide a DSN, resulting in no CLI-option. @@ -59,6 +60,7 @@ class PostgresDb(object): def __init__(self, dbname, port): self.dbname = dbname self.port = port + self.provider = None self.conn = psycopg2.connect("dbname={dbname} user=postgres host=localhost port={port}".format( dbname=dbname, port=port diff --git a/contrib/pyln-testing/pyln/testing/utils.py b/contrib/pyln-testing/pyln/testing/utils.py index dfff1eb74..749bfcde2 100644 --- a/contrib/pyln-testing/pyln/testing/utils.py +++ b/contrib/pyln-testing/pyln/testing/utils.py @@ -1447,6 +1447,7 @@ class NodeFactory(object): # Get the DB backend DSN we should be using for this test and this # node. db = self.db_provider.get_db(os.path.join(lightning_dir, TEST_NETWORK), self.testname, node_id) + db.provider = self.db_provider node = self.node_cls( node_id, lightning_dir, self.bitcoind, self.executor, self.valgrind, db=db, port=port, options=options, may_fail=may_fail or expect_fail, diff --git a/tests/db.py b/tests/db.py index 905b8d423..364beef44 100644 --- a/tests/db.py +++ b/tests/db.py @@ -16,6 +16,7 @@ import time class Sqlite3Db(object): def __init__(self, path): self.path = path + self.provider = None def get_dsn(self): """SQLite3 doesn't provide a DSN, resulting in no CLI-option. @@ -54,6 +55,7 @@ class PostgresDb(object): def __init__(self, dbname, port): self.dbname = dbname self.port = port + self.provider = None self.conn = psycopg2.connect("dbname={dbname} user=postgres host=localhost port={port}".format( dbname=dbname, port=port diff --git a/tests/fixtures.py b/tests/fixtures.py index 04f691d92..7667713b2 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -33,8 +33,8 @@ class LightningNode(utils.LightningNode): # If we opted into checking the DB statements we will attach the dblog # plugin before starting the node check_dblog = os.environ.get("TEST_CHECK_DBSTMTS", None) == "1" - db = os.environ.get("TEST_DB_PROVIDER", "sqlite3") - if db == 'sqlite3' and check_dblog: + db_type = os.environ.get("TEST_DB_PROVIDER", "sqlite3") + if db_type == 'sqlite3' and check_dblog: dblog = os.path.join(os.path.dirname(__file__), 'plugins', 'dblog.py') has_dblog = len([o for o in self.daemon.cmd_line if 'dblog.py' in o]) > 0 if not has_dblog: @@ -42,6 +42,11 @@ class LightningNode(utils.LightningNode): self.daemon.opts['plugin={}'.format(dblog)] = None self.daemon.opts['dblog-file'] = 'dblog.sqlite3' + # FIXME: make sure bookkeeper is not disabled + if db_type == 'postgres': + accts_db = self.db.provider.get_db('', 'accounts', 0) + self.daemon.opts['bookkeeper-db'] = accts_db.get_dsn() + # Yes, we really want to test the local development version, not # something in out path. self.daemon.executable = 'lightningd/lightningd' diff --git a/tests/test_misc.py b/tests/test_misc.py index ee8a2b57c..a29fc8778 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -2126,6 +2126,7 @@ def test_unix_socket_path_length(node_factory, bitcoind, directory, executor, db lightning_dir = os.path.join(directory, "anode" + "far" * 30 + "away") os.makedirs(lightning_dir) db = db_provider.get_db(lightning_dir, "test_unix_socket_path_length", 1) + db.provider = db_provider l1 = LightningNode(1, lightning_dir, bitcoind, executor, VALGRIND, db=db, port=reserve())