io.etcd
diff --git a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/DockerScenarioBasedIT.java b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/DockerScenarioBasedIT.java
new file mode 100644
index 00000000..f3fc0889
--- /dev/null
+++ b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/DockerScenarioBasedIT.java
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2025 Altinity Inc and/or its affiliates. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+package com.altinity.ice.rest.catalog;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
+import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.utility.MountableFile;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
+import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
+import software.amazon.awssdk.regions.Region;
+import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.model.CreateBucketRequest;
+
+/**
+ * Docker-based integration tests for ICE REST Catalog.
+ *
+ * Runs the ice-rest-catalog Docker image (specified via system property {@code docker.image})
+ * alongside a MinIO container, then executes scenario-based tests against it.
+ */
+public class DockerScenarioBasedIT extends RESTCatalogTestBase {
+
+ private Network network;
+
+ private GenericContainer> minio;
+
+ private GenericContainer> catalog;
+
+ @Override
+ @BeforeClass
+ @SuppressWarnings("resource")
+ public void setUp() throws Exception {
+ String dockerImage =
+ System.getProperty("docker.image", "altinity/ice-rest-catalog:debug-with-ice-0.12.0");
+ logger.info("Using Docker image: {}", dockerImage);
+
+ network = Network.newNetwork();
+
+ // Start MinIO
+ minio =
+ new GenericContainer<>("minio/minio:latest")
+ .withNetwork(network)
+ .withNetworkAliases("minio")
+ .withExposedPorts(9000)
+ .withEnv("MINIO_ACCESS_KEY", "minioadmin")
+ .withEnv("MINIO_SECRET_KEY", "minioadmin")
+ .withCommand("server", "/data")
+ .waitingFor(Wait.forHttp("/minio/health/live").forPort(9000));
+ minio.start();
+
+ // Create test bucket via MinIO's host-mapped port
+ String minioHostEndpoint = "http://" + minio.getHost() + ":" + minio.getMappedPort(9000);
+ try (var s3Client =
+ S3Client.builder()
+ .endpointOverride(URI.create(minioHostEndpoint))
+ .region(Region.US_EAST_1)
+ .credentialsProvider(
+ StaticCredentialsProvider.create(
+ AwsBasicCredentials.create("minioadmin", "minioadmin")))
+ .forcePathStyle(true)
+ .build()) {
+ s3Client.createBucket(CreateBucketRequest.builder().bucket("test-bucket").build());
+ logger.info("Created test-bucket in MinIO");
+ }
+
+ // Load YAML config for the catalog container (MinIO via Docker network alias "minio")
+ URL configResource = getClass().getClassLoader().getResource("docker-catalog-config.yaml");
+ if (configResource == null) {
+ throw new IllegalStateException("docker-catalog-config.yaml not found on classpath");
+ }
+ String catalogConfig = Files.readString(Paths.get(configResource.toURI()));
+
+ Path scenariosDir = getScenariosDirectory().toAbsolutePath();
+ if (!Files.exists(scenariosDir) || !Files.isDirectory(scenariosDir)) {
+ throw new IllegalStateException(
+ "Scenarios directory must exist at "
+ + scenariosDir
+ + ". Run 'mvn test-compile' or run the test from Maven (e.g. mvn failsafe:integration-test).");
+ }
+ Path insertScanInput = scenariosDir.resolve("insert-scan").resolve("input.parquet");
+ if (!Files.exists(insertScanInput)) {
+ throw new IllegalStateException(
+ "Scenario input not found at "
+ + insertScanInput
+ + ". Ensure test resources are on the classpath and scenarios/insert-scan/input.parquet exists.");
+ }
+
+ // Start the ice-rest-catalog container (debug-with-ice has ice CLI at /usr/local/bin/ice)
+ catalog =
+ new GenericContainer<>(dockerImage)
+ .withNetwork(network)
+ .withExposedPorts(5000)
+ .withEnv("ICE_REST_CATALOG_CONFIG", "")
+ .withEnv("ICE_REST_CATALOG_CONFIG_YAML", catalogConfig)
+ .withCopyFileToContainer(MountableFile.forHostPath(scenariosDir), "/scenarios")
+ .waitingFor(Wait.forHttp("/v1/config").forPort(5000).forStatusCode(200));
+
+ try {
+ catalog.start();
+ } catch (Exception e) {
+ if (catalog != null) {
+ logger.error("Catalog container logs (stdout): {}", catalog.getLogs());
+ }
+ throw e;
+ }
+
+ // Copy CLI config into container so ice CLI can talk to co-located REST server
+ File cliConfigHost = File.createTempFile("ice-docker-cli-", ".yaml");
+ try {
+ Files.write(cliConfigHost.toPath(), "uri: http://localhost:5000\n".getBytes());
+ catalog.copyFileToContainer(
+ MountableFile.forHostPath(cliConfigHost.toPath()), "/tmp/ice-cli.yaml");
+ } finally {
+ cliConfigHost.delete();
+ }
+
+ logger.info(
+ "Catalog container started at {}:{}", catalog.getHost(), catalog.getMappedPort(5000));
+ }
+
+ @Override
+ @AfterClass
+ public void tearDown() {
+ if (catalog != null) {
+ catalog.close();
+ }
+ if (minio != null) {
+ minio.close();
+ }
+ if (network != null) {
+ network.close();
+ }
+ }
+
+ @Override
+ protected ScenarioTestRunner createScenarioRunner(String scenarioName) throws Exception {
+ Path scenariosDir = getScenariosDirectory();
+
+ String containerId = catalog.getContainerId();
+
+ // Wrapper script on host: docker exec ice "$@" (CLI runs inside container)
+ File wrapperScript = File.createTempFile("ice-docker-exec-", ".sh");
+ wrapperScript.deleteOnExit();
+ String wrapperContent = "#!/bin/sh\n" + "exec docker exec " + containerId + " ice \"$@\"\n";
+ Files.write(wrapperScript.toPath(), wrapperContent.getBytes());
+ if (!wrapperScript.setExecutable(true)) {
+ throw new IllegalStateException("Could not set wrapper script executable: " + wrapperScript);
+ }
+
+ Map templateVars = new HashMap<>();
+ templateVars.put("ICE_CLI", wrapperScript.getAbsolutePath());
+ templateVars.put("CLI_CONFIG", "/tmp/ice-cli.yaml");
+ templateVars.put("SCENARIO_DIR", "/scenarios/" + scenarioName);
+ templateVars.put("MINIO_ENDPOINT", "");
+ templateVars.put("CATALOG_URI", "http://localhost:5000");
+
+ return new ScenarioTestRunner(scenariosDir, templateVars);
+ }
+}
diff --git a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/RESTCatalogTestBase.java b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/RESTCatalogTestBase.java
index d7ffcf85..54c94d40 100644
--- a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/RESTCatalogTestBase.java
+++ b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/RESTCatalogTestBase.java
@@ -14,7 +14,12 @@
import com.altinity.ice.rest.catalog.internal.config.Config;
import java.io.File;
import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
import java.util.Map;
import org.apache.iceberg.catalog.Catalog;
import org.eclipse.jetty.server.Server;
@@ -23,6 +28,8 @@
import org.testcontainers.containers.GenericContainer;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
import software.amazon.awssdk.regions.Region;
@@ -152,4 +159,94 @@ protected String getMinioEndpoint() {
protected String getCatalogUri() {
return "http://localhost:8080";
}
+
+ /**
+ * Get the path to the scenarios directory.
+ *
+ * @return Path to scenarios directory
+ * @throws URISyntaxException If the resource URL cannot be converted to a path
+ */
+ protected Path getScenariosDirectory() throws URISyntaxException {
+ URL scenariosUrl = getClass().getClassLoader().getResource("scenarios");
+ if (scenariosUrl == null) {
+ return Paths.get("src/test/resources/scenarios");
+ }
+ return Paths.get(scenariosUrl.toURI());
+ }
+
+ /**
+ * Create a ScenarioTestRunner for the given scenario. Subclasses provide host or container-based
+ * CLI and config.
+ *
+ * @param scenarioName Name of the scenario (e.g. for container path resolution)
+ * @return Configured ScenarioTestRunner
+ * @throws Exception If there's an error creating the runner
+ */
+ protected abstract ScenarioTestRunner createScenarioRunner(String scenarioName) throws Exception;
+
+ /** Data provider that discovers all test scenarios. */
+ @DataProvider(name = "scenarios")
+ public Object[][] scenarioProvider() throws Exception {
+ Path scenariosDir = getScenariosDirectory();
+ ScenarioTestRunner runner = new ScenarioTestRunner(scenariosDir, Map.of());
+ List scenarios = runner.discoverScenarios();
+
+ if (scenarios.isEmpty()) {
+ logger.warn("No test scenarios found in: {}", scenariosDir);
+ return new Object[0][0];
+ }
+
+ logger.info("Discovered {} test scenario(s): {}", scenarios.size(), scenarios);
+
+ Object[][] data = new Object[scenarios.size()][1];
+ for (int i = 0; i < scenarios.size(); i++) {
+ data[i][0] = scenarios.get(i);
+ }
+ return data;
+ }
+
+ /** Parameterized test that executes a single scenario. */
+ @Test(dataProvider = "scenarios")
+ public void testScenario(String scenarioName) throws Exception {
+ logger.info("====== Starting scenario test: {} ======", scenarioName);
+
+ ScenarioTestRunner runner = createScenarioRunner(scenarioName);
+ ScenarioTestRunner.ScenarioResult result = runner.executeScenario(scenarioName);
+
+ if (result.runScriptResult() != null) {
+ logger.info("Run script exit code: {}", result.runScriptResult().exitCode());
+ }
+ if (result.verifyScriptResult() != null) {
+ logger.info("Verify script exit code: {}", result.verifyScriptResult().exitCode());
+ }
+
+ assertScenarioSuccess(scenarioName, result);
+ logger.info("====== Scenario test passed: {} ======", scenarioName);
+ }
+
+ /** Assert that the scenario result indicates success; otherwise throw AssertionError. */
+ protected void assertScenarioSuccess(
+ String scenarioName, ScenarioTestRunner.ScenarioResult result) {
+ if (result.isSuccess()) {
+ return;
+ }
+ StringBuilder errorMessage = new StringBuilder();
+ errorMessage.append("Scenario '").append(scenarioName).append("' failed:\n");
+
+ if (result.runScriptResult() != null && result.runScriptResult().exitCode() != 0) {
+ errorMessage.append("\nRun script failed with exit code: ");
+ errorMessage.append(result.runScriptResult().exitCode());
+ errorMessage.append("\nStdout:\n").append(result.runScriptResult().stdout());
+ errorMessage.append("\nStderr:\n").append(result.runScriptResult().stderr());
+ }
+
+ if (result.verifyScriptResult() != null && result.verifyScriptResult().exitCode() != 0) {
+ errorMessage.append("\nVerify script failed with exit code: ");
+ errorMessage.append(result.verifyScriptResult().exitCode());
+ errorMessage.append("\nStdout:\n").append(result.verifyScriptResult().stdout());
+ errorMessage.append("\nStderr:\n").append(result.verifyScriptResult().stderr());
+ }
+
+ throw new AssertionError(errorMessage.toString());
+ }
}
diff --git a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java
index b4351344..24b098e7 100644
--- a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java
+++ b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioBasedIT.java
@@ -10,15 +10,10 @@
package com.altinity.ice.rest.catalog;
import java.io.File;
-import java.net.URISyntaxException;
-import java.net.URL;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
/**
* Scenario-based integration tests for ICE REST Catalog.
@@ -28,92 +23,8 @@
*/
public class ScenarioBasedIT extends RESTCatalogTestBase {
- /**
- * Data provider that discovers all test scenarios.
- *
- * @return Array of scenario names to be used as test parameters
- * @throws Exception If there's an error discovering scenarios
- */
- @DataProvider(name = "scenarios")
- public Object[][] scenarioProvider() throws Exception {
- Path scenariosDir = getScenariosDirectory();
- ScenarioTestRunner runner = createScenarioRunner();
-
- List scenarios = runner.discoverScenarios();
-
- if (scenarios.isEmpty()) {
- logger.warn("No test scenarios found in: {}", scenariosDir);
- return new Object[0][0];
- }
-
- logger.info("Discovered {} test scenario(s): {}", scenarios.size(), scenarios);
-
- // Convert to Object[][] for TestNG data provider
- Object[][] data = new Object[scenarios.size()][1];
- for (int i = 0; i < scenarios.size(); i++) {
- data[i][0] = scenarios.get(i);
- }
- return data;
- }
-
- /**
- * Parameterized test that executes a single scenario.
- *
- * @param scenarioName Name of the scenario to execute
- * @throws Exception If the scenario execution fails
- */
- @Test(dataProvider = "scenarios")
- public void testScenario(String scenarioName) throws Exception {
- logger.info("====== Starting scenario test: {} ======", scenarioName);
-
- ScenarioTestRunner runner = createScenarioRunner();
- ScenarioTestRunner.ScenarioResult result = runner.executeScenario(scenarioName);
-
- // Log results
- if (result.runScriptResult() != null) {
- logger.info("Run script exit code: {}", result.runScriptResult().exitCode());
- }
-
- if (result.verifyScriptResult() != null) {
- logger.info("Verify script exit code: {}", result.verifyScriptResult().exitCode());
- }
-
- // Assert success
- if (!result.isSuccess()) {
- StringBuilder errorMessage = new StringBuilder();
- errorMessage.append("Scenario '").append(scenarioName).append("' failed:\n");
-
- if (result.runScriptResult() != null && result.runScriptResult().exitCode() != 0) {
- errorMessage.append("\nRun script failed with exit code: ");
- errorMessage.append(result.runScriptResult().exitCode());
- errorMessage.append("\nStdout:\n");
- errorMessage.append(result.runScriptResult().stdout());
- errorMessage.append("\nStderr:\n");
- errorMessage.append(result.runScriptResult().stderr());
- }
-
- if (result.verifyScriptResult() != null && result.verifyScriptResult().exitCode() != 0) {
- errorMessage.append("\nVerify script failed with exit code: ");
- errorMessage.append(result.verifyScriptResult().exitCode());
- errorMessage.append("\nStdout:\n");
- errorMessage.append(result.verifyScriptResult().stdout());
- errorMessage.append("\nStderr:\n");
- errorMessage.append(result.verifyScriptResult().stderr());
- }
-
- throw new AssertionError(errorMessage.toString());
- }
-
- logger.info("====== Scenario test passed: {} ======", scenarioName);
- }
-
- /**
- * Create a ScenarioTestRunner with the appropriate template variables.
- *
- * @return Configured ScenarioTestRunner
- * @throws Exception If there's an error creating the runner
- */
- private ScenarioTestRunner createScenarioRunner() throws Exception {
+ @Override
+ protected ScenarioTestRunner createScenarioRunner(String scenarioName) throws Exception {
Path scenariosDir = getScenariosDirectory();
// Create CLI config file
@@ -143,22 +54,4 @@ private ScenarioTestRunner createScenarioRunner() throws Exception {
return new ScenarioTestRunner(scenariosDir, templateVars);
}
-
- /**
- * Get the path to the scenarios directory.
- *
- * @return Path to scenarios directory
- * @throws URISyntaxException If the resource URL cannot be converted to a path
- */
- private Path getScenariosDirectory() throws URISyntaxException {
- // Get the scenarios directory from test resources
- URL scenariosUrl = getClass().getClassLoader().getResource("scenarios");
-
- if (scenariosUrl == null) {
- // If not found in resources, try relative to project
- return Paths.get("src/test/resources/scenarios");
- }
-
- return Paths.get(scenariosUrl.toURI());
- }
}
diff --git a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioConfig.java b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioConfig.java
index 17d5b169..e7163456 100644
--- a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioConfig.java
+++ b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioConfig.java
@@ -9,7 +9,6 @@
*/
package com.altinity.ice.rest.catalog;
-import java.util.List;
import java.util.Map;
/**
@@ -18,20 +17,7 @@
* This class uses Jackson/SnakeYAML annotations for YAML deserialization.
*/
public record ScenarioConfig(
- String name,
- String description,
- CatalogConfig catalogConfig,
- Map env,
- CloudResources cloudResources,
- List phases) {
+ String name, String description, CatalogConfig catalogConfig, Map env) {
public record CatalogConfig(String warehouse, String name, String uri) {}
-
- public record CloudResources(S3Resources s3, SqsResources sqs) {}
-
- public record S3Resources(List buckets) {}
-
- public record SqsResources(List queues) {}
-
- public record Phase(String name, String description) {}
}
diff --git a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioTestRunner.java b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioTestRunner.java
index 83a6b19d..c74d22b0 100644
--- a/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioTestRunner.java
+++ b/ice-rest-catalog/src/test/java/com/altinity/ice/rest/catalog/ScenarioTestRunner.java
@@ -105,7 +105,9 @@ public ScenarioResult executeScenario(String scenarioName) throws Exception {
// Build template variables map
Map templateVars = new HashMap<>(globalTemplateVars);
- templateVars.put("SCENARIO_DIR", scenarioDir.toAbsolutePath().toString());
+ if (!templateVars.containsKey("SCENARIO_DIR")) {
+ templateVars.put("SCENARIO_DIR", scenarioDir.toAbsolutePath().toString());
+ }
// Add environment variables from scenario config
if (config.env() != null) {
diff --git a/ice-rest-catalog/src/test/resources/docker-catalog-config.yaml b/ice-rest-catalog/src/test/resources/docker-catalog-config.yaml
new file mode 100644
index 00000000..d7c07ecd
--- /dev/null
+++ b/ice-rest-catalog/src/test/resources/docker-catalog-config.yaml
@@ -0,0 +1,12 @@
+uri: "jdbc:sqlite::memory:"
+warehouse: "s3://test-bucket/warehouse"
+s3:
+ endpoint: "http://minio:9000"
+ pathStyleAccess: true
+ accessKeyID: "minioadmin"
+ secretAccessKey: "minioadmin"
+ region: "us-east-1"
+anonymousAccess:
+ enabled: true
+ accessConfig:
+ readOnly: false
diff --git a/ice-rest-catalog/src/test/resources/scenarios/README.md b/ice-rest-catalog/src/test/resources/scenarios/README.md
index 0b0ba237..feb6de3e 100644
--- a/ice-rest-catalog/src/test/resources/scenarios/README.md
+++ b/ice-rest-catalog/src/test/resources/scenarios/README.md
@@ -32,26 +32,6 @@ env:
NAMESPACE_NAME: "test_ns"
TABLE_NAME: "test_ns.table1"
INPUT_FILE: "input.parquet"
-
-# Optional: Cloud resources needed (for future provisioning)
-cloudResources:
- s3:
- buckets:
- - "test-bucket"
- sqs:
- queues:
- - "test-queue"
-
-# Optional: Test execution phases
-phases:
- - name: "setup"
- description: "Initialize resources"
- - name: "run"
- description: "Execute main test logic"
- - name: "verify"
- description: "Verify results"
- - name: "cleanup"
- description: "Clean up resources"
```
## Script Templates
diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/input.parquet b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/input.parquet
new file mode 100644
index 00000000..028c64cf
Binary files /dev/null and b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/input.parquet differ
diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl
index e02cb91c..13f640ba 100644
--- a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl
+++ b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/run.sh.tmpl
@@ -12,14 +12,6 @@ echo "Running basic operations test..."
SCENARIO_DIR="{{SCENARIO_DIR}}"
INPUT_PATH="${SCENARIO_DIR}/${INPUT_FILE}"
-# Use parquet from insert-scan scenario if not present here
-if [ ! -f "${INPUT_PATH}" ]; then
- INPUT_PATH="${SCENARIO_DIR}/../insert-scan/${INPUT_FILE}"
-fi
-if [ ! -f "${INPUT_PATH}" ]; then
- echo "No input parquet found (set INPUT_FILE or add input.parquet to scenario)"
- exit 1
-fi
# Create namespace via CLI
{{ICE_CLI}} --config {{CLI_CONFIG}} create-namespace ${NAMESPACE_NAME}
diff --git a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/scenario.yaml b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/scenario.yaml
index a37e5abf..266dc6dc 100644
--- a/ice-rest-catalog/src/test/resources/scenarios/basic-operations/scenario.yaml
+++ b/ice-rest-catalog/src/test/resources/scenarios/basic-operations/scenario.yaml
@@ -17,22 +17,3 @@ env:
# Optional: set MC_ALIAS (e.g. "minio") to run --no-copy test; requires mc configured for MinIO
# MC_ALIAS: "minio"
-# Cloud resources needed for this scenario (future use for provisioning)
-cloudResources:
- s3:
- buckets:
- - "test-bucket"
-
-# Test phases
-phases:
- - name: "setup"
- description: "Create namespace"
- - name: "verify"
- description: "Verify namespace exists and can be deleted"
- - name: "cleanup"
- description: "Delete namespace"
-
-
-
-
-
diff --git a/ice-rest-catalog/src/test/resources/scenarios/insert-partitioned/scenario.yaml b/ice-rest-catalog/src/test/resources/scenarios/insert-partitioned/scenario.yaml
index 43c21578..74af637e 100644
--- a/ice-rest-catalog/src/test/resources/scenarios/insert-partitioned/scenario.yaml
+++ b/ice-rest-catalog/src/test/resources/scenarios/insert-partitioned/scenario.yaml
@@ -10,22 +10,3 @@ env:
INPUT_FILE: "input.parquet"
PARTITION_SPEC: '[{"column":"variety","transform":"identity"}]'
-cloudResources:
- s3:
- buckets:
- - "test-bucket"
-
-phases:
- - name: "setup"
- description: "Create namespace"
- - name: "run"
- description: "Create partitioned table and insert data"
- - name: "verify"
- description: "Verify table was created with correct partitioning"
- - name: "cleanup"
- description: "Delete table and namespace"
-
-
-
-
-
diff --git a/ice-rest-catalog/src/test/resources/scenarios/insert-scan/scenario.yaml b/ice-rest-catalog/src/test/resources/scenarios/insert-scan/scenario.yaml
index d060db80..98fcc7e7 100644
--- a/ice-rest-catalog/src/test/resources/scenarios/insert-scan/scenario.yaml
+++ b/ice-rest-catalog/src/test/resources/scenarios/insert-scan/scenario.yaml
@@ -9,20 +9,3 @@ env:
TABLE_NAME: "test_scan.users"
INPUT_FILE: "input.parquet"
-cloudResources:
- s3:
- buckets:
- - "test-bucket"
-
-phases:
- - name: "setup"
- description: "Create namespace and table with data"
- - name: "verify"
- description: "Scan table and verify data"
- - name: "cleanup"
- description: "Delete table and namespace"
-
-
-
-
-