diff --git a/test_runner/regress/test_download_extensions.py b/test_runner/regress/test_download_extensions.py index b60c2aca12..04c3f4ea0c 100644 --- a/test_runner/regress/test_download_extensions.py +++ b/test_runner/regress/test_download_extensions.py @@ -1,3 +1,4 @@ +import json import os from contextlib import closing from io import BytesIO @@ -248,3 +249,47 @@ def test_remote_extensions( log.info(f"Deleted {file}") except FileNotFoundError: log.info(f"{file} does not exist, so cannot be deleted") + + +""" +This tests against the actual infra for real S3 +Note in particular that we don't need to set up a bucket (real or mock) +because we are testing the files already uploaded as part of CI/CD +""" + + +def test_remote_extensions_in_bucket(neon_env_builder: NeonEnvBuilder): + neon_env_builder.enable_remote_storage( + remote_storage_kind=RemoteStorageKind.REAL_S3, + test_name="test_remote_extensions_in_bucket", + enable_remote_extensions=False, # we don't enable remote extensions here; instead we use the real bucket + ) + neon_env_builder.num_safekeepers = 3 + env = neon_env_builder.init_start() + tenant_id, _ = env.neon_cli.create_tenant() + env.neon_cli.create_timeline("test_remote_extensions_in_bucket", tenant_id=tenant_id) + + # Start a compute node and check that it can download the extensions + # and use them to CREATE EXTENSION and LOAD 'library.so' + remote_ext_config = { + "bucket": "neon-dev-extensions-eu-central-1", + "region": "eu-central-1", + "endpoint": None, + "prefix": "5412197734", # build tag + } + endpoint = env.endpoints.create_start( + "test_remote_extensions_in_bucket", + tenant_id=tenant_id, + remote_ext_config=json.dumps(remote_ext_config), + ) + + with closing(endpoint.connect()) as conn: + with conn.cursor() as cur: + cur.execute("SELECT * FROM pg_available_extensions") + all_extensions = [x[0] for x in cur.fetchall()] + log.info("ALEK******\n\n" * 20) + log.info(all_extensions) + log.info("ALEK******\n\n" * 20) + + # TODO: test download anon + # TODO: test load library / create extension