diff --git a/test_runner/fixtures/neon_fixtures.py b/test_runner/fixtures/neon_fixtures.py index 617d4806b2..9e0beeb4d1 100644 --- a/test_runner/fixtures/neon_fixtures.py +++ b/test_runner/fixtures/neon_fixtures.py @@ -56,6 +56,7 @@ from fixtures.remote_storage import ( RemoteStorageKind, RemoteStorageUser, S3Storage, + default_remote_storage, remote_storage_to_toml_inline_table, ) from fixtures.types import Lsn, TenantId, TimelineId @@ -468,7 +469,7 @@ class NeonEnvBuilder: # Cannot create more than one environment from one builder assert self.env is None, "environment already initialized" if default_remote_storage_if_missing and self.pageserver_remote_storage is None: - self.enable_pageserver_remote_storage(RemoteStorageKind.LOCAL_FS) + self.enable_pageserver_remote_storage(default_remote_storage()) self.env = NeonEnv(self) return self.env diff --git a/test_runner/fixtures/remote_storage.py b/test_runner/fixtures/remote_storage.py index d8361133d7..565e5fa7f8 100644 --- a/test_runner/fixtures/remote_storage.py +++ b/test_runner/fixtures/remote_storage.py @@ -372,6 +372,13 @@ def s3_storage() -> RemoteStorageKind: return RemoteStorageKind.MOCK_S3 +def default_remote_storage() -> RemoteStorageKind: + """ + The remote storage kind used in tests that do not specify a preference + """ + return RemoteStorageKind.LOCAL_FS + + # serialize as toml inline table def remote_storage_to_toml_inline_table(remote_storage: RemoteStorage) -> str: if not isinstance(remote_storage, (LocalFsStorage, S3Storage)): diff --git a/test_runner/regress/test_ondemand_download.py b/test_runner/regress/test_ondemand_download.py index 86a749eaf3..af2d7aae88 100644 --- a/test_runner/regress/test_ondemand_download.py +++ b/test_runner/regress/test_ondemand_download.py @@ -5,7 +5,6 @@ import time from collections import defaultdict from typing import Any, DefaultDict, Dict, Tuple -import pytest from fixtures.log_helper import log from fixtures.neon_fixtures import ( NeonEnvBuilder, @@ -19,7 +18,7 @@ from fixtures.pageserver.utils import ( wait_for_upload, wait_for_upload_queue_empty, ) -from fixtures.remote_storage import RemoteStorageKind, available_remote_storages +from fixtures.remote_storage import RemoteStorageKind from fixtures.types import Lsn from fixtures.utils import query_scalar, wait_until @@ -45,13 +44,7 @@ def get_num_downloaded_layers(client: PageserverHttpClient): # If you have a large relation, check that the pageserver downloads parts of it as # require by queries. # -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) -def test_ondemand_download_large_rel( - neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, -): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - +def test_ondemand_download_large_rel(neon_env_builder: NeonEnvBuilder): # thinking about using a shared environment? the test assumes that global # metrics are for single tenant. env = neon_env_builder.init_start( @@ -145,13 +138,7 @@ def test_ondemand_download_large_rel( # If you have a relation with a long history of updates, the pageserver downloads the layer # files containing the history as needed by timetravel queries. # -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) -def test_ondemand_download_timetravel( - neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, -): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - +def test_ondemand_download_timetravel(neon_env_builder: NeonEnvBuilder): # thinking about using a shared environment? the test assumes that global # metrics are for single tenant. @@ -229,8 +216,7 @@ def test_ondemand_download_timetravel( assert filled_current_physical == filled_size, "we don't yet do layer eviction" # Wait until generated image layers are uploaded to S3 - if remote_storage_kind is not None: - wait_for_upload_queue_empty(pageserver_http, env.initial_tenant, timeline_id) + wait_for_upload_queue_empty(pageserver_http, env.initial_tenant, timeline_id) env.pageserver.stop() diff --git a/test_runner/regress/test_tenant_delete.py b/test_runner/regress/test_tenant_delete.py index 3929f59e46..48f5682371 100644 --- a/test_runner/regress/test_tenant_delete.py +++ b/test_runner/regress/test_tenant_delete.py @@ -23,23 +23,18 @@ from fixtures.pageserver.utils import ( wait_until_tenant_active, wait_until_tenant_state, ) -from fixtures.remote_storage import ( - RemoteStorageKind, - available_remote_storages, - available_s3_storages, -) +from fixtures.remote_storage import RemoteStorageKind, available_s3_storages, s3_storage from fixtures.types import TenantId from fixtures.utils import run_pg_bench_small, wait_until -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_tenant_delete_smoke( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, pg_bin: PgBin, ): neon_env_builder.pageserver_config_override = "test_remote_failures=1" + remote_storage_kind = s3_storage() neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) env = neon_env_builder.init_start() @@ -78,16 +73,15 @@ def test_tenant_delete_smoke( run_pg_bench_small(pg_bin, endpoint.connstr()) wait_for_last_flush_lsn(env, endpoint, tenant=tenant_id, timeline=timeline_id) - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + ) parent = timeline @@ -100,16 +94,15 @@ def test_tenant_delete_smoke( tenant_path = env.pageserver.tenant_dir(tenant_id) assert not tenant_path.exists() - if remote_storage_kind in available_s3_storages(): - assert_prefix_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - ) + assert_prefix_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + ) # Deletion updates the tenant count: the one default tenant remains assert ps_http.get_metric_value("pageserver_tenant_manager_slots") == 1 @@ -149,9 +142,7 @@ FAILPOINTS_BEFORE_BACKGROUND = [ def combinations(): result = [] - remotes = [RemoteStorageKind.MOCK_S3] - if os.getenv("ENABLE_REAL_S3_REMOTE_STORAGE"): - remotes.append(RemoteStorageKind.REAL_S3) + remotes = available_s3_storages() for remote_storage_kind in remotes: for delete_failpoint in FAILPOINTS: @@ -165,8 +156,8 @@ def combinations(): return result -@pytest.mark.parametrize("remote_storage_kind, failpoint, simulate_failures", combinations()) @pytest.mark.parametrize("check", list(Check)) +@pytest.mark.parametrize("remote_storage_kind, failpoint, simulate_failures", combinations()) def test_delete_tenant_exercise_crash_safety_failpoints( neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind, @@ -214,16 +205,15 @@ def test_delete_tenant_exercise_crash_safety_failpoints( run_pg_bench_small(pg_bin, endpoint.connstr()) last_flush_lsn_upload(env, endpoint, tenant_id, timeline_id) - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + ) ps_http.configure_failpoints((failpoint, "return")) @@ -276,25 +266,23 @@ def test_delete_tenant_exercise_crash_safety_failpoints( assert not tenant_dir.exists() # Check remote is empty - if remote_storage_kind in available_s3_storages(): - assert_prefix_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - allowed_postfix="initdb.tar.zst", - ) + assert_prefix_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + allowed_postfix="initdb.tar.zst", + ) -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_tenant_delete_is_resumed_on_attach( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, pg_bin: PgBin, ): + remote_storage_kind = s3_storage() neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) env = neon_env_builder.init_start(initial_tenant_conf=MANY_SMALL_LAYERS_TENANT_CONFIG) @@ -314,16 +302,15 @@ def test_tenant_delete_is_resumed_on_attach( wait_for_last_flush_lsn(env, endpoint, tenant=tenant_id, timeline=timeline_id) # sanity check, data should be there - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + ) # failpoint before we remove index_part from s3 failpoint = "timeline-delete-before-index-delete" @@ -354,16 +341,15 @@ def test_tenant_delete_is_resumed_on_attach( iterations=iterations, ) - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + ) reason = tenant_info["state"]["data"]["reason"] # failpoint may not be the only error in the stack @@ -389,17 +375,16 @@ def test_tenant_delete_is_resumed_on_attach( tenant_path = env.pageserver.tenant_dir(tenant_id) assert not tenant_path.exists() - if remote_storage_kind in available_s3_storages(): - ps_http.deletion_queue_flush(execute=True) - assert_prefix_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - ) - ), - ) + ps_http.deletion_queue_flush(execute=True) + assert_prefix_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + ) + ), + ) def test_long_timeline_create_cancelled_by_tenant_delete(neon_env_builder: NeonEnvBuilder): diff --git a/test_runner/regress/test_tenant_detach.py b/test_runner/regress/test_tenant_detach.py index 4a40982d78..5b63bd6161 100644 --- a/test_runner/regress/test_tenant_detach.py +++ b/test_runner/regress/test_tenant_detach.py @@ -21,7 +21,6 @@ from fixtures.pageserver.utils import ( ) from fixtures.remote_storage import ( RemoteStorageKind, - available_remote_storages, ) from fixtures.types import Lsn, TenantId, TimelineId from fixtures.utils import query_scalar, wait_until @@ -59,16 +58,11 @@ class ReattachMode(str, enum.Enum): # Basic detach and re-attach test -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) @pytest.mark.parametrize( "mode", [ReattachMode.REATTACH_EXPLICIT, ReattachMode.REATTACH_RESET, ReattachMode.REATTACH_RESET_DROP], ) -def test_tenant_reattach( - neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind, mode: str -): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - +def test_tenant_reattach(neon_env_builder: NeonEnvBuilder, mode: str): # Exercise retry code path by making all uploads and downloads fail for the # first time. The retries print INFO-messages to the log; we will check # that they are present after the test. @@ -187,16 +181,13 @@ num_rows = 100000 # # I don't know what's causing that... @pytest.mark.skip(reason="fixme") -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_tenant_reattach_while_busy( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, ): updates_started = 0 updates_finished = 0 updates_to_perform = 0 - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) env = neon_env_builder.init_start() # Run random UPDATEs on test table. On failure, try again. @@ -439,13 +430,9 @@ def test_tenant_detach_regular_tenant(neon_simple_env: NeonEnv): should not be present in pageserver's memory" -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_detach_while_attaching( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, ): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - ##### First start, insert secret data and upload it to the remote storage env = neon_env_builder.init_start() pageserver_http = env.pageserver.http_client() diff --git a/test_runner/regress/test_tenant_relocation.py b/test_runner/regress/test_tenant_relocation.py index c7ff80d675..feacdcc802 100644 --- a/test_runner/regress/test_tenant_relocation.py +++ b/test_runner/regress/test_tenant_relocation.py @@ -20,7 +20,6 @@ from fixtures.port_distributor import PortDistributor from fixtures.remote_storage import ( LocalFsStorage, RemoteStorageKind, - available_remote_storages, ) from fixtures.types import Lsn, TenantId, TimelineId from fixtures.utils import ( @@ -449,13 +448,9 @@ def test_tenant_relocation( # last-record LSN. We had a bug where GetPage incorrectly followed the # timeline to the ancestor without waiting for the missing WAL to # arrive. -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_emergency_relocate_with_branches_slow_replay( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, ): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - env = neon_env_builder.init_start() env.pageserver.is_testing_enabled_or_skip() pageserver_http = env.pageserver.http_client() @@ -603,13 +598,9 @@ def test_emergency_relocate_with_branches_slow_replay( # exist. Update dbir" path (2), and inserts an entry in the # DbDirectory with 'false' to indicate there is no PG_VERSION file. # -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_emergency_relocate_with_branches_createdb( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, ): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - env = neon_env_builder.init_start() pageserver_http = env.pageserver.http_client() diff --git a/test_runner/regress/test_tenants.py b/test_runner/regress/test_tenants.py index c81be41530..22036884ee 100644 --- a/test_runner/regress/test_tenants.py +++ b/test_runner/regress/test_tenants.py @@ -18,7 +18,7 @@ from fixtures.neon_fixtures import ( NeonEnvBuilder, ) from fixtures.pageserver.utils import timeline_delete_wait_completed -from fixtures.remote_storage import RemoteStorageKind, available_remote_storages +from fixtures.remote_storage import RemoteStorageKind from fixtures.types import Lsn, TenantId from fixtures.utils import wait_until from prometheus_client.samples import Sample @@ -281,13 +281,7 @@ def test_pageserver_metrics_removed_after_detach(neon_env_builder: NeonEnvBuilde assert post_detach_samples == set() -# Check that empty tenants work with or without the remote storage -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) -def test_pageserver_with_empty_tenants( - neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind -): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - +def test_pageserver_with_empty_tenants(neon_env_builder: NeonEnvBuilder): env = neon_env_builder.init_start() env.pageserver.allowed_errors.extend( diff --git a/test_runner/regress/test_tenants_with_remote_storage.py b/test_runner/regress/test_tenants_with_remote_storage.py index f181e70696..b7b4e2be0b 100644 --- a/test_runner/regress/test_tenants_with_remote_storage.py +++ b/test_runner/regress/test_tenants_with_remote_storage.py @@ -11,7 +11,6 @@ import os from pathlib import Path from typing import List, Tuple -import pytest from fixtures.log_helper import log from fixtures.neon_fixtures import ( Endpoint, @@ -27,7 +26,6 @@ from fixtures.pageserver.utils import ( from fixtures.remote_storage import ( LocalFsStorage, RemoteStorageKind, - available_remote_storages, ) from fixtures.types import Lsn, TenantId, TimelineId from fixtures.utils import query_scalar, wait_until @@ -60,10 +58,7 @@ async def all_tenants_workload(env: NeonEnv, tenants_endpoints): await asyncio.gather(*workers) -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) -def test_tenants_many(neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - +def test_tenants_many(neon_env_builder: NeonEnvBuilder): env = neon_env_builder.init_start() # FIXME: Is this expected? @@ -218,11 +213,7 @@ def test_tenants_attached_after_download(neon_env_builder: NeonEnvBuilder): def test_tenant_redownloads_truncated_file_on_startup( neon_env_builder: NeonEnvBuilder, ): - remote_storage_kind = RemoteStorageKind.LOCAL_FS - - # since we now store the layer file length metadata, we notice on startup that a layer file is of wrong size, and proceed to redownload it. - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - + # we store the layer file length metadata, we notice on startup that a layer file is of wrong size, and proceed to redownload it. env = neon_env_builder.init_start() assert isinstance(env.pageserver_remote_storage, LocalFsStorage) diff --git a/test_runner/regress/test_timeline_delete.py b/test_runner/regress/test_timeline_delete.py index dab7b3879e..17113a6bc5 100644 --- a/test_runner/regress/test_timeline_delete.py +++ b/test_runner/regress/test_timeline_delete.py @@ -29,8 +29,7 @@ from fixtures.pageserver.utils import ( from fixtures.remote_storage import ( LocalFsStorage, RemoteStorageKind, - available_remote_storages, - available_s3_storages, + s3_storage, ) from fixtures.types import Lsn, TenantId, TimelineId from fixtures.utils import query_scalar, run_pg_bench_small, wait_until @@ -142,25 +141,11 @@ DELETE_FAILPOINTS = [ ] -def combinations(): - result = [] - - remotes = [RemoteStorageKind.MOCK_S3] - if os.getenv("ENABLE_REAL_S3_REMOTE_STORAGE"): - remotes.append(RemoteStorageKind.REAL_S3) - - for remote_storage_kind in remotes: - for delete_failpoint in DELETE_FAILPOINTS: - result.append((remote_storage_kind, delete_failpoint)) - return result - - # cover the two cases: remote storage configured vs not configured -@pytest.mark.parametrize("remote_storage_kind, failpoint", combinations()) +@pytest.mark.parametrize("failpoint", DELETE_FAILPOINTS) @pytest.mark.parametrize("check", list(Check)) def test_delete_timeline_exercise_crash_safety_failpoints( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, failpoint: str, check: Check, pg_bin: PgBin, @@ -180,7 +165,7 @@ def test_delete_timeline_exercise_crash_safety_failpoints( 7. Ensure failpoint is hit 8. Retry or restart without the failpoint and check the result. """ - + remote_storage_kind = s3_storage() neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) env = neon_env_builder.init_start( @@ -201,18 +186,17 @@ def test_delete_timeline_exercise_crash_safety_failpoints( last_flush_lsn_upload(env, endpoint, env.initial_tenant, timeline_id) - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(env.initial_tenant), - "timelines", - str(timeline_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(env.initial_tenant), + "timelines", + str(timeline_id), + ) + ), + ) env.pageserver.allowed_errors.append(f".*{timeline_id}.*failpoint: {failpoint}") # It appears when we stopped flush loop during deletion and then pageserver is stopped @@ -316,11 +300,9 @@ def test_delete_timeline_exercise_crash_safety_failpoints( assert not (timeline_dir.parent / f"{timeline_id}.___deleted").exists() -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) @pytest.mark.parametrize("fill_branch", [True, False]) def test_timeline_resurrection_on_attach( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, fill_branch: bool, ): """ @@ -329,8 +311,6 @@ def test_timeline_resurrection_on_attach( Original issue: https://github.com/neondatabase/neon/issues/3560 """ - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) - ##### First start, insert data and upload it to the remote storage env = neon_env_builder.init_start() @@ -658,20 +638,10 @@ def test_delete_timeline_client_hangup(neon_env_builder: NeonEnvBuilder): wait_timeline_detail_404(ps_http, env.initial_tenant, child_timeline_id, iterations=2) -@pytest.mark.parametrize( - "remote_storage_kind", - list( - filter( - lambda s: s in (RemoteStorageKind.MOCK_S3, RemoteStorageKind.REAL_S3), - available_remote_storages(), - ) - ), -) def test_timeline_delete_works_for_remote_smoke( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, ): - neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) + neon_env_builder.enable_pageserver_remote_storage(s3_storage()) env = neon_env_builder.init_start() @@ -804,12 +774,11 @@ def test_delete_orphaned_objects( assert env.pageserver_remote_storage.index_path(env.initial_tenant, timeline_id).exists() -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) def test_timeline_delete_resumed_on_attach( neon_env_builder: NeonEnvBuilder, - remote_storage_kind: RemoteStorageKind, pg_bin: PgBin, ): + remote_storage_kind = s3_storage() neon_env_builder.enable_pageserver_remote_storage(remote_storage_kind) env = neon_env_builder.init_start(initial_tenant_conf=MANY_SMALL_LAYERS_TENANT_CONFIG) @@ -824,18 +793,17 @@ def test_timeline_delete_resumed_on_attach( run_pg_bench_small(pg_bin, endpoint.connstr()) last_flush_lsn_upload(env, endpoint, env.initial_tenant, timeline_id) - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(env.initial_tenant), - "timelines", - str(timeline_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(env.initial_tenant), + "timelines", + str(timeline_id), + ) + ), + ) # failpoint before we remove index_part from s3 failpoint = "timeline-delete-during-rm" @@ -873,18 +841,17 @@ def test_timeline_delete_resumed_on_attach( # failpoint may not be the only error in the stack assert reason.endswith(f"failpoint: {failpoint}"), reason - if remote_storage_kind in available_s3_storages(): - assert_prefix_not_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(tenant_id), - "timelines", - str(timeline_id), - ) - ), - ) + assert_prefix_not_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(tenant_id), + "timelines", + str(timeline_id), + ) + ), + ) # now we stop pageserver and remove local tenant state env.endpoints.stop_all() @@ -905,15 +872,14 @@ def test_timeline_delete_resumed_on_attach( tenant_path = env.pageserver.timeline_dir(tenant_id, timeline_id) assert not tenant_path.exists() - if remote_storage_kind in available_s3_storages(): - assert_prefix_empty( - neon_env_builder, - prefix="/".join( - ( - "tenants", - str(timeline_id), - "timelines", - str(timeline_id), - ) - ), - ) + assert_prefix_empty( + neon_env_builder, + prefix="/".join( + ( + "tenants", + str(timeline_id), + "timelines", + str(timeline_id), + ) + ), + ) diff --git a/test_runner/regress/test_wal_acceptor.py b/test_runner/regress/test_wal_acceptor.py index b34d2de0ba..3c40a9cb3e 100644 --- a/test_runner/regress/test_wal_acceptor.py +++ b/test_runner/regress/test_wal_acceptor.py @@ -39,10 +39,7 @@ from fixtures.pageserver.utils import ( ) from fixtures.pg_version import PgVersion from fixtures.port_distributor import PortDistributor -from fixtures.remote_storage import ( - RemoteStorageKind, - available_remote_storages, -) +from fixtures.remote_storage import RemoteStorageKind, default_remote_storage from fixtures.types import Lsn, TenantId, TimelineId from fixtures.utils import get_dir_size, query_scalar, start_in_background @@ -457,10 +454,9 @@ def is_wal_trimmed(sk: Safekeeper, tenant_id: TenantId, timeline_id: TimelineId, return sk_wal_size_mb <= target_size_mb -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) -def test_wal_backup(neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind): +def test_wal_backup(neon_env_builder: NeonEnvBuilder): neon_env_builder.num_safekeepers = 3 - neon_env_builder.enable_safekeeper_remote_storage(remote_storage_kind) + neon_env_builder.enable_safekeeper_remote_storage(default_remote_storage()) env = neon_env_builder.init_start() @@ -503,11 +499,10 @@ def test_wal_backup(neon_env_builder: NeonEnvBuilder, remote_storage_kind: Remot ) -@pytest.mark.parametrize("remote_storage_kind", available_remote_storages()) -def test_s3_wal_replay(neon_env_builder: NeonEnvBuilder, remote_storage_kind: RemoteStorageKind): +def test_s3_wal_replay(neon_env_builder: NeonEnvBuilder): neon_env_builder.num_safekeepers = 3 - neon_env_builder.enable_safekeeper_remote_storage(remote_storage_kind) + neon_env_builder.enable_safekeeper_remote_storage(default_remote_storage()) env = neon_env_builder.init_start() tenant_id = env.initial_tenant