mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-15 09:22:55 +00:00
This PR replaces the following global variables in the test framework with fixtures to make tests more configurable. I mainly need this for the forward compatibility tests (draft in https://github.com/neondatabase/neon/pull/2766). ``` base_dir neon_binpath pg_distrib_dir top_output_dir default_pg_version (this one got replaced with a fixture named pg_version) ``` Also, this PR adds more `Path` type where the code implies it.
37 lines
1.3 KiB
Python
37 lines
1.3 KiB
Python
from pathlib import Path
|
|
|
|
from fixtures.neon_fixtures import NeonEnvBuilder, PgBin, PortDistributor, VanillaPostgres
|
|
from fixtures.types import TenantId
|
|
|
|
|
|
def test_wal_restore(
|
|
neon_env_builder: NeonEnvBuilder,
|
|
pg_bin: PgBin,
|
|
test_output_dir: Path,
|
|
port_distributor: PortDistributor,
|
|
base_dir: Path,
|
|
pg_distrib_dir: Path,
|
|
):
|
|
env = neon_env_builder.init_start()
|
|
env.neon_cli.create_branch("test_wal_restore")
|
|
pg = env.postgres.create_start("test_wal_restore")
|
|
pg.safe_psql("create table t as select generate_series(1,300000)")
|
|
tenant_id = TenantId(pg.safe_psql("show neon.tenant_id")[0][0])
|
|
env.neon_cli.pageserver_stop()
|
|
port = port_distributor.get_port()
|
|
data_dir = test_output_dir / "pgsql.restored"
|
|
with VanillaPostgres(
|
|
data_dir, PgBin(test_output_dir, env.pg_distrib_dir, env.pg_version), port
|
|
) as restored:
|
|
pg_bin.run_capture(
|
|
[
|
|
str(base_dir / "libs/utils/scripts/restore_from_wal.sh"),
|
|
str(pg_distrib_dir / f"v{env.pg_version}/bin"),
|
|
str(test_output_dir / "repo" / "safekeepers" / "sk1" / str(tenant_id) / "*"),
|
|
str(data_dir),
|
|
str(port),
|
|
]
|
|
)
|
|
restored.start()
|
|
assert restored.safe_psql("select count(*) from t", user="cloud_admin") == [(300000,)]
|