Use an explicit dbname for postgres connections in the tests. (#4928)
I don't have a database with the same name as my user, so leaving the database name unset fails. While we're at it, clear out some unused stuff in the test setup.pull/4935/head
parent
7105057cf2
commit
a54a44734f
|
@ -0,0 +1 @@
|
||||||
|
Use an explicit dbname for postgres connections in the tests.
|
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
# Copyright 2014-2016 OpenMarket Ltd
|
||||||
|
# Copyright 2018-2019 New Vector Ltd
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
|
@ -43,6 +44,10 @@ from synapse.util.logcontext import LoggingContext
|
||||||
from synapse.util.ratelimitutils import FederationRateLimiter
|
from synapse.util.ratelimitutils import FederationRateLimiter
|
||||||
|
|
||||||
# set this to True to run the tests against postgres instead of sqlite.
|
# set this to True to run the tests against postgres instead of sqlite.
|
||||||
|
#
|
||||||
|
# When running under postgres, we first create a base database with the name
|
||||||
|
# POSTGRES_BASE_DB and update it to the current schema. Then, for each test case, we
|
||||||
|
# create another unique database, using the base database as a template.
|
||||||
USE_POSTGRES_FOR_TESTS = os.environ.get("SYNAPSE_POSTGRES", False)
|
USE_POSTGRES_FOR_TESTS = os.environ.get("SYNAPSE_POSTGRES", False)
|
||||||
LEAVE_DB = os.environ.get("SYNAPSE_LEAVE_DB", False)
|
LEAVE_DB = os.environ.get("SYNAPSE_LEAVE_DB", False)
|
||||||
POSTGRES_USER = os.environ.get("SYNAPSE_POSTGRES_USER", None)
|
POSTGRES_USER = os.environ.get("SYNAPSE_POSTGRES_USER", None)
|
||||||
|
@ -50,28 +55,20 @@ POSTGRES_HOST = os.environ.get("SYNAPSE_POSTGRES_HOST", None)
|
||||||
POSTGRES_PASSWORD = os.environ.get("SYNAPSE_POSTGRES_PASSWORD", None)
|
POSTGRES_PASSWORD = os.environ.get("SYNAPSE_POSTGRES_PASSWORD", None)
|
||||||
POSTGRES_BASE_DB = "_synapse_unit_tests_base_%s" % (os.getpid(),)
|
POSTGRES_BASE_DB = "_synapse_unit_tests_base_%s" % (os.getpid(),)
|
||||||
|
|
||||||
|
# the dbname we will connect to in order to create the base database.
|
||||||
|
POSTGRES_DBNAME_FOR_INITIAL_CREATE = "postgres"
|
||||||
|
|
||||||
|
|
||||||
def setupdb():
|
def setupdb():
|
||||||
|
|
||||||
# If we're using PostgreSQL, set up the db once
|
# If we're using PostgreSQL, set up the db once
|
||||||
if USE_POSTGRES_FOR_TESTS:
|
if USE_POSTGRES_FOR_TESTS:
|
||||||
pgconfig = {
|
# create a PostgresEngine
|
||||||
"name": "psycopg2",
|
db_engine = create_engine({"name": "psycopg2", "args": {}})
|
||||||
"args": {
|
|
||||||
"database": POSTGRES_BASE_DB,
|
# connect to postgres to create the base database.
|
||||||
"user": POSTGRES_USER,
|
|
||||||
"host": POSTGRES_HOST,
|
|
||||||
"password": POSTGRES_PASSWORD,
|
|
||||||
"cp_min": 1,
|
|
||||||
"cp_max": 5,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
config = Mock()
|
|
||||||
config.password_providers = []
|
|
||||||
config.database_config = pgconfig
|
|
||||||
db_engine = create_engine(pgconfig)
|
|
||||||
db_conn = db_engine.module.connect(
|
db_conn = db_engine.module.connect(
|
||||||
user=POSTGRES_USER, host=POSTGRES_HOST, password=POSTGRES_PASSWORD
|
user=POSTGRES_USER, host=POSTGRES_HOST, password=POSTGRES_PASSWORD,
|
||||||
|
dbname=POSTGRES_DBNAME_FOR_INITIAL_CREATE,
|
||||||
)
|
)
|
||||||
db_conn.autocommit = True
|
db_conn.autocommit = True
|
||||||
cur = db_conn.cursor()
|
cur = db_conn.cursor()
|
||||||
|
@ -96,7 +93,8 @@ def setupdb():
|
||||||
|
|
||||||
def _cleanup():
|
def _cleanup():
|
||||||
db_conn = db_engine.module.connect(
|
db_conn = db_engine.module.connect(
|
||||||
user=POSTGRES_USER, host=POSTGRES_HOST, password=POSTGRES_PASSWORD
|
user=POSTGRES_USER, host=POSTGRES_HOST, password=POSTGRES_PASSWORD,
|
||||||
|
dbname=POSTGRES_DBNAME_FOR_INITIAL_CREATE,
|
||||||
)
|
)
|
||||||
db_conn.autocommit = True
|
db_conn.autocommit = True
|
||||||
cur = db_conn.cursor()
|
cur = db_conn.cursor()
|
||||||
|
|
Loading…
Reference in New Issue