mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-27 08:09:58 +00:00
Instead of having a lot of separate fixtures for setting up the page server, the compute nodes, the safekeepers etc., have one big ZenithEnv object that encapsulates the whole environment. Every test either uses a shared "zenith_simple_env" fixture, which contains the default setup of a pageserver with no authentication, and no safekeepers. Tests that want to use safekeepers or authentication set up a custom test-specific ZenithEnv fixture. Gathering information about the whole environment into one object makes some things simpler. For example, when a new compute node is created, you no longer need to pass the 'wal_acceptors' connection string as argument to the 'postgres.create_start' function. The 'create_start' function fetches that information directly from the ZenithEnv object.
34 lines
987 B
Python
34 lines
987 B
Python
from contextlib import closing
|
|
|
|
from fixtures.zenith_fixtures import ZenithEnv
|
|
from fixtures.log_helper import log
|
|
|
|
pytest_plugins = ("fixtures.zenith_fixtures")
|
|
|
|
|
|
#
|
|
# Test starting Postgres with custom options
|
|
#
|
|
def test_config(zenith_simple_env: ZenithEnv):
|
|
env = zenith_simple_env
|
|
# Create a branch for us
|
|
env.zenith_cli(["branch", "test_config", "empty"])
|
|
|
|
# change config
|
|
pg = env.postgres.create_start('test_config', config_lines=['log_min_messages=debug1'])
|
|
log.info('postgres is running on test_config branch')
|
|
|
|
with closing(pg.connect()) as conn:
|
|
with conn.cursor() as cur:
|
|
cur.execute('''
|
|
SELECT setting
|
|
FROM pg_settings
|
|
WHERE
|
|
source != 'default'
|
|
AND source != 'override'
|
|
AND name = 'log_min_messages'
|
|
''')
|
|
|
|
# check that config change was applied
|
|
assert cur.fetchone() == ('debug1', )
|