diff --git a/src/test/java/io/cryostat/resources/LocalStackResource.java b/src/test/java/io/cryostat/resources/S3StorageResource.java similarity index 75% rename from src/test/java/io/cryostat/resources/LocalStackResource.java rename to src/test/java/io/cryostat/resources/S3StorageResource.java index 620146e39..c07e97654 100644 --- a/src/test/java/io/cryostat/resources/LocalStackResource.java +++ b/src/test/java/io/cryostat/resources/S3StorageResource.java @@ -26,19 +26,21 @@ import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.utility.DockerImageName; -public class LocalStackResource +public class S3StorageResource implements QuarkusTestResourceLifecycleManager, DevServicesContext.ContextAware { - private static int S3_PORT = 4566; - private static final String IMAGE_NAME = "docker.io/localstack/localstack:stable"; + private static int S3_PORT = 8333; + private static final String IMAGE_NAME = "quay.io/cryostat/cryostat-storage:latest"; private static final Map envMap = Map.of( - "START_WEB", "0", - "SERVICES", "s3", - "EAGER_SERVICE_LOADING", "1", - "SKIP_SSL_CERT_DOWNLOAD", "1", - "DISABLE_EVENTS", "1"); - private static final Logger logger = Logger.getLogger(LocalStackResource.class); + "DATA_DIR", "/data", + "IP_BIND", "0.0.0.0", + "WEED_V", "4", + "REST_ENCRYPTION_ENABLE", "1", + "CRYOSTAT_ACCESS_KEY", "access_key", + "CRYOSTAT_SECRET_KEY", "secret_key", + "CRYOSTAT_BUCKETS", "archivedrecordings,archivedreports,eventtemplates,probes"); + private static final Logger logger = Logger.getLogger(S3StorageResource.class); private Optional containerNetworkId; private GenericContainer container; @@ -48,7 +50,8 @@ public Map start() { new GenericContainer<>(DockerImageName.parse(IMAGE_NAME)) .withExposedPorts(S3_PORT) .withEnv(envMap) - .waitingFor(Wait.forHealthcheck()); + .withTmpFs(Map.of("/data", "rw")) + .waitingFor(Wait.forListeningPort()); containerNetworkId.ifPresent(container::withNetworkMode); container.start(); @@ -62,8 +65,9 @@ public Map start() { properties.put("quarkus.s3.endpoint-override", properties.get("s3.url.override")); properties.put("quarkus.s3.path-style-access", "true"); properties.put("quarkus.s3.aws.credentials.type", "static"); - properties.put("quarkus.s3.aws.credentials.static-provider.access-key-id", "unused"); - properties.put("quarkus.s3.aws.credentials.static-provider.secret-access-key", "unused"); + properties.put("quarkus.s3.aws.credentials.static-provider.access-key-id", "access_key"); + properties.put( + "quarkus.s3.aws.credentials.static-provider.secret-access-key", "secret_key"); properties.put( "aws.access-key-id", properties.get("quarkus.s3.aws.credentials.static-provider.access-key-id")); @@ -72,18 +76,18 @@ public Map start() { "aws.secret-access-key", properties.get("quarkus.s3.aws.credentials.static-provider.secret-access-key")); properties.put("aws.secretAccessKey", properties.get("aws.secret-access-key")); - properties.entrySet().forEach(e -> System.setProperty(e.getKey(), e.getValue())); - logger.debugv("Configured properties: {0}", properties); return properties; } @Override public void stop() { + logger.info("stopping"); if (container != null) { container.stop(); container.close(); } + logger.info("stopped"); } @Override diff --git a/src/test/java/itest/CustomEventTemplateTest.java b/src/test/java/itest/CustomEventTemplateTest.java index 67208b32e..dc6d0bf50 100644 --- a/src/test/java/itest/CustomEventTemplateTest.java +++ b/src/test/java/itest/CustomEventTemplateTest.java @@ -15,6 +15,9 @@ */ package itest; +import io.cryostat.resources.S3StorageResource; + +import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.DisabledOnIntegrationTest; import io.quarkus.test.junit.QuarkusTest; import io.vertx.core.buffer.Buffer; @@ -29,6 +32,7 @@ import org.junit.jupiter.api.Test; @QuarkusTest +@QuarkusTestResource(S3StorageResource.class) @DisabledOnIntegrationTest("classpath resources are not loadable in integration test") public class CustomEventTemplateTest extends StandardSelfTest { diff --git a/src/test/java/itest/GraphQLTest.java b/src/test/java/itest/GraphQLTest.java index f22dcf724..359bf643e 100644 --- a/src/test/java/itest/GraphQLTest.java +++ b/src/test/java/itest/GraphQLTest.java @@ -41,10 +41,12 @@ import io.cryostat.discovery.DiscoveryNode; import io.cryostat.graphql.RootNode; +import io.cryostat.resources.S3StorageResource; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.core.type.TypeReference; +import io.quarkus.test.common.QuarkusTestResource; import io.quarkus.test.junit.QuarkusTest; import io.vertx.core.buffer.Buffer; import io.vertx.core.json.JsonArray; @@ -65,6 +67,7 @@ import org.junit.jupiter.params.provider.ValueSource; @QuarkusTest +@QuarkusTestResource(S3StorageResource.class) @TestMethodOrder(OrderAnnotation.class) class GraphQLTest extends StandardSelfTest { diff --git a/src/test/java/itest/RecordingWorkflowTest.java b/src/test/java/itest/RecordingWorkflowTest.java index 27d8ff510..3e6abc9a6 100644 --- a/src/test/java/itest/RecordingWorkflowTest.java +++ b/src/test/java/itest/RecordingWorkflowTest.java @@ -27,7 +27,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import io.cryostat.resources.LocalStackResource; +import io.cryostat.resources.S3StorageResource; import io.cryostat.util.HttpMimeType; import io.quarkus.test.common.QuarkusTestResource; @@ -48,7 +48,7 @@ import org.junit.jupiter.api.Test; @QuarkusTest -@QuarkusTestResource(LocalStackResource.class) +@QuarkusTestResource(S3StorageResource.class) public class RecordingWorkflowTest extends StandardSelfTest { private final ExecutorService worker = ForkJoinPool.commonPool(); diff --git a/src/test/java/itest/ReportGenerationTest.java b/src/test/java/itest/ReportGenerationTest.java index 5354e8e57..efa1c4355 100644 --- a/src/test/java/itest/ReportGenerationTest.java +++ b/src/test/java/itest/ReportGenerationTest.java @@ -23,7 +23,7 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import io.cryostat.resources.LocalStackResource; +import io.cryostat.resources.S3StorageResource; import io.cryostat.util.HttpMimeType; import io.quarkus.test.common.QuarkusTestResource; @@ -43,7 +43,7 @@ import org.junit.jupiter.api.Test; @QuarkusTest -@QuarkusTestResource(LocalStackResource.class) +@QuarkusTestResource(S3StorageResource.class) public class ReportGenerationTest extends StandardSelfTest { private final ExecutorService worker = ForkJoinPool.commonPool();