This is an automated email from the ASF dual-hosted git repository.

snazy pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git


The following commit(s) were added to refs/heads/main by this push:
     new 8a5b80a2d Separate Cloud Integration Tests (#2283)
8a5b80a2d is described below

commit 8a5b80a2d6e331052fb99632fa5405eb231740ef
Author: Tamas Mate <50709850+tma...@users.noreply.github.com>
AuthorDate: Mon Aug 11 15:02:46 2025 +0200

    Separate Cloud Integration Tests (#2283)
    
    Currently, cloud integration tests are part of the regular test suite
    but require cloud credentials to execute properly. This creates
    unnecessary overhead for developers who just want to run local builds
    or for CI jobs that don't have cloud access configured.
---
 .../src/main/kotlin/polaris-runtime.gradle.kts     | 36 +++++----
 ... PolarisRestCatalogAwsIntegrationTestBase.java} | 10 +--
 ...olarisRestCatalogAzureIntegrationTestBase.java} | 10 +--
 .../PolarisRestCatalogFileIntegrationTest.java     |  5 --
 ... PolarisRestCatalogGcpIntegrationTestBase.java} | 10 +--
 .../it/test/PolarisRestCatalogIntegrationBase.java |  8 --
 runtime/service/README.md                          |  6 +-
 runtime/service/build.gradle.kts                   | 94 ++++++++++++----------
 .../polaris/service/it/RestCatalogAwsIT.java       |  6 +-
 .../polaris/service/it/RestCatalogAzureIT.java     |  6 +-
 .../polaris/service/it/RestCatalogGcpIT.java       |  6 +-
 .../polaris/service/it/RestCatalogViewAwsIT.java   |  2 +
 .../polaris/service/it/RestCatalogViewAzureIT.java |  2 +
 .../polaris/service/it/RestCatalogViewGcpIT.java   |  2 +
 ...che.polaris.service.it.ext.PolarisServerManager | 20 +++++
 .../service/it/PolarisRestCatalogMinIOIT.java      |  5 --
 16 files changed, 116 insertions(+), 112 deletions(-)

diff --git a/build-logic/src/main/kotlin/polaris-runtime.gradle.kts 
b/build-logic/src/main/kotlin/polaris-runtime.gradle.kts
index f52b2f16f..3d5cd18f9 100644
--- a/build-logic/src/main/kotlin/polaris-runtime.gradle.kts
+++ b/build-logic/src/main/kotlin/polaris-runtime.gradle.kts
@@ -31,8 +31,11 @@ testing {
           // See https://github.com/quarkusio/quarkus/issues/22844
           systemProperty("junit.jupiter.extensions.autodetection.enabled", 
"true")
         }
-
-        if (testTask.name != "test") {
+      }
+    }
+    fun intTestSuiteConfigure(testSuite: JvmTestSuite) =
+      testSuite.run {
+        targets.all {
           testTask.configure {
             // For Quarkus...
             //
@@ -42,15 +45,22 @@ testing {
             dependsOn(tasks.named("quarkusBuild"))
           }
         }
-      }
-    }
-    register<JvmTestSuite>("intTest") {
-      targets.all {
-        tasks.named("compileIntTestJava").configure {
-          dependsOn(tasks.named("compileQuarkusTestGeneratedSourcesJava"))
+        tasks.named(sources.compileJavaTaskName).configure {
+          dependsOn("compileQuarkusTestGeneratedSourcesJava")
         }
+        configurations.named(sources.runtimeOnlyConfigurationName).configure {
+          extendsFrom(configurations.getByName("testRuntimeOnly"))
+        }
+        
configurations.named(sources.implementationConfigurationName).configure {
+          // Let the test's implementation config extend testImplementation, 
so it also inherits the
+          // project's "main" implementation dependencies (not just the "api" 
configuration)
+          extendsFrom(configurations.getByName("testImplementation"))
+        }
+        sources { java.srcDirs(tasks.named("quarkusGenerateCodeTests")) }
       }
-      sources { java.srcDirs(tasks.named("quarkusGenerateCodeTests")) }
+
+    listOf("intTest", "cloudTest").forEach {
+      register<JvmTestSuite>(it).configure { intTestSuiteConfigure(this) }
     }
   }
 }
@@ -72,14 +82,6 @@ configurations.all {
   }
 }
 
-// Let the test's implementation config extend testImplementation, so it also 
inherits the
-// project's "main" implementation dependencies (not just the "api" 
configuration)
-configurations.named("intTestImplementation").configure {
-  extendsFrom(configurations.getByName("testImplementation"))
-}
-
-dependencies { add("intTestImplementation", 
java.sourceSets.getByName("test").output.dirs) }
-
 configurations.named("intTestRuntimeOnly").configure {
   extendsFrom(configurations.getByName("testRuntimeOnly"))
 }
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAwsIntegrationTest.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAwsIntegrationTestBase.java
similarity index 85%
rename from 
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAwsIntegrationTest.java
rename to 
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAwsIntegrationTestBase.java
index 11abab685..64bf0f221 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAwsIntegrationTest.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAwsIntegrationTestBase.java
@@ -20,13 +20,12 @@ package org.apache.polaris.service.it.test;
 
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Stream;
 import org.apache.polaris.core.admin.model.AwsStorageConfigInfo;
 import org.apache.polaris.core.admin.model.StorageConfigInfo;
-import org.assertj.core.util.Strings;
 
 /** Runs PolarisRestCatalogIntegrationBase test on AWS. */
-public class PolarisRestCatalogAwsIntegrationTest extends 
PolarisRestCatalogIntegrationBase {
+public abstract class PolarisRestCatalogAwsIntegrationTestBase
+    extends PolarisRestCatalogIntegrationBase {
   public static final String ROLE_ARN =
       Optional.ofNullable(System.getenv("INTEGRATION_TEST_ROLE_ARN"))
           .or(() -> 
Optional.ofNullable(System.getenv("INTEGRATION_TEST_S3_ROLE_ARN")))
@@ -41,9 +40,4 @@ public class PolarisRestCatalogAwsIntegrationTest extends 
PolarisRestCatalogInte
         .setAllowedLocations(List.of(BASE_LOCATION))
         .build();
   }
-
-  @Override
-  protected boolean shouldSkip() {
-    return Stream.of(BASE_LOCATION, ROLE_ARN).anyMatch(Strings::isNullOrEmpty);
-  }
 }
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAzureIntegrationTest.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAzureIntegrationTestBase.java
similarity index 83%
rename from 
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAzureIntegrationTest.java
rename to 
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAzureIntegrationTestBase.java
index 8453b5617..923f3592b 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAzureIntegrationTest.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogAzureIntegrationTestBase.java
@@ -19,13 +19,12 @@
 package org.apache.polaris.service.it.test;
 
 import java.util.List;
-import java.util.stream.Stream;
 import org.apache.polaris.core.admin.model.AzureStorageConfigInfo;
 import org.apache.polaris.core.admin.model.StorageConfigInfo;
-import org.assertj.core.util.Strings;
 
 /** Runs PolarisRestCatalogIntegrationBase test on Azure. */
-public class PolarisRestCatalogAzureIntegrationTest extends 
PolarisRestCatalogIntegrationBase {
+public abstract class PolarisRestCatalogAzureIntegrationTestBase
+    extends PolarisRestCatalogIntegrationBase {
   public static final String TENANT_ID = 
System.getenv("INTEGRATION_TEST_AZURE_TENANT_ID");
   public static final String BASE_LOCATION = 
System.getenv("INTEGRATION_TEST_AZURE_PATH");
 
@@ -37,9 +36,4 @@ public class PolarisRestCatalogAzureIntegrationTest extends 
PolarisRestCatalogIn
         .setAllowedLocations(List.of(BASE_LOCATION))
         .build();
   }
-
-  @Override
-  protected boolean shouldSkip() {
-    return Stream.of(BASE_LOCATION, 
TENANT_ID).anyMatch(Strings::isNullOrEmpty);
-  }
 }
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogFileIntegrationTest.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogFileIntegrationTest.java
index 3cd2face1..7c50c67f3 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogFileIntegrationTest.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogFileIntegrationTest.java
@@ -46,11 +46,6 @@ public class PolarisRestCatalogFileIntegrationTest extends 
PolarisRestCatalogInt
         .build();
   }
 
-  @Override
-  protected boolean shouldSkip() {
-    return false;
-  }
-
   private static String stripTrailingSlash(String uri) {
     return uri.endsWith("/") && uri.length() > "file:///".length()
         ? uri.substring(0, uri.length() - 1)
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogGcpIntegrationTest.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogGcpIntegrationTestBase.java
similarity index 83%
rename from 
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogGcpIntegrationTest.java
rename to 
integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogGcpIntegrationTestBase.java
index 92dd96973..381983933 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogGcpIntegrationTest.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogGcpIntegrationTestBase.java
@@ -19,13 +19,12 @@
 package org.apache.polaris.service.it.test;
 
 import java.util.List;
-import java.util.stream.Stream;
 import org.apache.polaris.core.admin.model.GcpStorageConfigInfo;
 import org.apache.polaris.core.admin.model.StorageConfigInfo;
-import org.assertj.core.util.Strings;
 
 /** Runs PolarisRestCatalogIntegrationBase test on GCP. */
-public class PolarisRestCatalogGcpIntegrationTest extends 
PolarisRestCatalogIntegrationBase {
+public abstract class PolarisRestCatalogGcpIntegrationTestBase
+    extends PolarisRestCatalogIntegrationBase {
   public static final String SERVICE_ACCOUNT =
       System.getenv("INTEGRATION_TEST_GCS_SERVICE_ACCOUNT");
   public static final String BASE_LOCATION = 
System.getenv("INTEGRATION_TEST_GCS_PATH");
@@ -38,9 +37,4 @@ public class PolarisRestCatalogGcpIntegrationTest extends 
PolarisRestCatalogInte
         .setAllowedLocations(List.of(BASE_LOCATION))
         .build();
   }
-
-  @Override
-  protected boolean shouldSkip() {
-    return Stream.of(BASE_LOCATION, 
SERVICE_ACCOUNT).anyMatch(Strings::isNullOrEmpty);
-  }
 }
diff --git 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogIntegrationBase.java
 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogIntegrationBase.java
index c8400e5ba..78817fe92 100644
--- 
a/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogIntegrationBase.java
+++ 
b/integration-tests/src/main/java/org/apache/polaris/service/it/test/PolarisRestCatalogIntegrationBase.java
@@ -198,13 +198,6 @@ public abstract class PolarisRestCatalogIntegrationBase 
extends CatalogTests<RES
     fileIO.initialize(Map.of());
   }
 
-  /**
-   * Determine whether the test should be skipped based on the environment or 
configuration.
-   *
-   * @return true if the test should be skipped, false otherwise
-   */
-  protected abstract boolean shouldSkip();
-
   @BeforeAll
   static void setup(PolarisApiEndpoints apiEndpoints, ClientCredentials 
credentials) {
     adminCredentials = credentials;
@@ -224,7 +217,6 @@ public abstract class PolarisRestCatalogIntegrationBase 
extends CatalogTests<RES
 
   @BeforeEach
   public void before(TestInfo testInfo) {
-    Assumptions.assumeThat(shouldSkip()).isFalse();
     String principalName = client.newEntityName("snowman-rest");
     String principalRoleName = client.newEntityName("rest-admin");
     principalCredentials = 
managementApi.createPrincipalWithRole(principalName, principalRoleName);
diff --git a/runtime/service/README.md b/runtime/service/README.md
index 4aff45a7e..7d499b993 100644
--- a/runtime/service/README.md
+++ b/runtime/service/README.md
@@ -27,17 +27,17 @@ For S3:
 ```shell
 export INTEGRATION_TEST_S3_PATH="s3://bucket/subpath"
 export INTEGRATION_TEST_S3_ROLE_ARN="your-role-arn"
-./gradlew :polaris-runtime-service:intTest
+./gradlew :polaris-runtime-service:cloudTest
 ```
 For Azure:
 ```shell
 export INTEGRATION_TEST_AZURE_PATH="abfss://bucket/subpath"
 export INTEGRATION_TEST_AZURE_TENANT_ID="your-tenant-id"
-./gradlew :polaris-runtime-service:intTest
+./gradlew :polaris-runtime-service:cloudTest
 ``` 
 For GCS:
 ```shell
 export INTEGRATION_TEST_GCS_PATH="gs://bucket/subpath"
 export INTEGRATION_TEST_GCS_SERVICE_ACCOUNT="your-service-account"
-./gradlew :polaris-runtime-service:intTest
+./gradlew :polaris-runtime-service:cloudTest
 ```
diff --git a/runtime/service/build.gradle.kts b/runtime/service/build.gradle.kts
index 037776c40..6a3cc092b 100644
--- a/runtime/service/build.gradle.kts
+++ b/runtime/service/build.gradle.kts
@@ -212,50 +212,56 @@ tasks.named<Test>("test").configure {
   jvmArgs("-Xshare:off")
 }
 
-tasks.named<Test>("intTest").configure {
-  maxParallelForks = 1
-
-  val logsDir = project.layout.buildDirectory.get().asFile.resolve("logs")
-
-  // JVM arguments provider does not interfere with Gradle's cache keys
-  jvmArgumentProviders.add(
-    CommandLineArgumentProvider {
-      // Same issue as above: allow a java security manager after Java 21
-      // (this setting is for the application under test, while the setting 
above is for test code).
-      val securityManagerAllow = "-Djava.security.manager=allow"
-
-      val args = mutableListOf<String>()
-
-      // Example: to attach a debugger to the spawned JVM running Quarkus, add
-      // 
-Dquarkus.test.arg-line=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
-      // to your test configuration.
-      val explicitQuarkusTestArgLine = 
System.getProperty("quarkus.test.arg-line")
-      var quarkusTestArgLine =
-        if (explicitQuarkusTestArgLine != null) "$explicitQuarkusTestArgLine 
$securityManagerAllow"
-        else securityManagerAllow
-
-      args.add("-Dquarkus.test.arg-line=$quarkusTestArgLine")
-      // This property is not honored in a per-profile application.properties 
file,
-      // so we need to set it here.
-      
args.add("-Dquarkus.log.file.path=${logsDir.resolve("polaris.log").absolutePath}")
-
-      // Add `quarkus.*` system properties, other than the ones explicitly set 
above
-      System.getProperties()
-        .filter {
-          it.key.toString().startsWith("quarkus.") &&
-            !"quarkus.test.arg-line".equals(it.key) &&
-            !"quarkus.log.file.path".equals(it.key)
+listOf("intTest", "cloudTest")
+  .map { tasks.named<Test>(it) }
+  .forEach {
+    it.configure {
+      maxParallelForks = 1
+
+      val logsDir = project.layout.buildDirectory.get().asFile.resolve("logs")
+
+      // JVM arguments provider does not interfere with Gradle's cache keys
+      jvmArgumentProviders.add(
+        CommandLineArgumentProvider {
+          // Same issue as above: allow a java security manager after Java 21
+          // (this setting is for the application under test, while the 
setting above is for test
+          // code).
+          val securityManagerAllow = "-Djava.security.manager=allow"
+
+          val args = mutableListOf<String>()
+
+          // Example: to attach a debugger to the spawned JVM running Quarkus, 
add
+          // 
-Dquarkus.test.arg-line=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
+          // to your test configuration.
+          val explicitQuarkusTestArgLine = 
System.getProperty("quarkus.test.arg-line")
+          var quarkusTestArgLine =
+            if (explicitQuarkusTestArgLine != null)
+              "$explicitQuarkusTestArgLine $securityManagerAllow"
+            else securityManagerAllow
+
+          args.add("-Dquarkus.test.arg-line=$quarkusTestArgLine")
+          // This property is not honored in a per-profile 
application.properties file,
+          // so we need to set it here.
+          
args.add("-Dquarkus.log.file.path=${logsDir.resolve("polaris.log").absolutePath}")
+
+          // Add `quarkus.*` system properties, other than the ones explicitly 
set above
+          System.getProperties()
+            .filter {
+              it.key.toString().startsWith("quarkus.") &&
+                !"quarkus.test.arg-line".equals(it.key) &&
+                !"quarkus.log.file.path".equals(it.key)
+            }
+            .forEach { args.add("${it.key}=${it.value}") }
+
+          args
         }
-        .forEach { args.add("${it.key}=${it.value}") }
-
-      args
+      )
+      // delete files from previous runs
+      doFirst {
+        // delete log files written by Polaris
+        logsDir.deleteRecursively()
+        // delete quarkus.log file (captured Polaris stdout/stderr)
+        
project.layout.buildDirectory.get().asFile.resolve("quarkus.log").delete()
+      }
     }
-  )
-  // delete files from previous runs
-  doFirst {
-    // delete log files written by Polaris
-    logsDir.deleteRecursively()
-    // delete quarkus.log file (captured Polaris stdout/stderr)
-    project.layout.buildDirectory.get().asFile.resolve("quarkus.log").delete()
   }
-}
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogAwsIT.java
 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogAwsIT.java
similarity index 84%
rename from 
runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogAwsIT.java
rename to 
runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogAwsIT.java
index 553af07df..a229c1c16 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogAwsIT.java
+++ 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogAwsIT.java
@@ -19,7 +19,9 @@
 package org.apache.polaris.service.it;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
-import org.apache.polaris.service.it.test.PolarisRestCatalogAwsIntegrationTest;
+import 
org.apache.polaris.service.it.test.PolarisRestCatalogAwsIntegrationTestBase;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 
 @QuarkusIntegrationTest
-public class RestCatalogAwsIT extends PolarisRestCatalogAwsIntegrationTest {}
+@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_S3_PATH", matches = 
".+")
+public class RestCatalogAwsIT extends PolarisRestCatalogAwsIntegrationTestBase 
{}
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogAzureIT.java
 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogAzureIT.java
similarity index 84%
rename from 
runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogAzureIT.java
rename to 
runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogAzureIT.java
index b7b850388..d89bbf22d 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogAzureIT.java
+++ 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogAzureIT.java
@@ -19,7 +19,9 @@
 package org.apache.polaris.service.it;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
-import 
org.apache.polaris.service.it.test.PolarisRestCatalogAzureIntegrationTest;
+import 
org.apache.polaris.service.it.test.PolarisRestCatalogAzureIntegrationTestBase;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 
 @QuarkusIntegrationTest
-public class RestCatalogAzureIT extends PolarisRestCatalogAzureIntegrationTest 
{}
+@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_AZURE_PATH", matches = 
".+")
+public class RestCatalogAzureIT extends 
PolarisRestCatalogAzureIntegrationTestBase {}
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogGcpIT.java
 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogGcpIT.java
similarity index 84%
rename from 
runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogGcpIT.java
rename to 
runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogGcpIT.java
index ad6a7fe54..80448f0c2 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogGcpIT.java
+++ 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogGcpIT.java
@@ -19,7 +19,9 @@
 package org.apache.polaris.service.it;
 
 import io.quarkus.test.junit.QuarkusIntegrationTest;
-import org.apache.polaris.service.it.test.PolarisRestCatalogGcpIntegrationTest;
+import 
org.apache.polaris.service.it.test.PolarisRestCatalogGcpIntegrationTestBase;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 
 @QuarkusIntegrationTest
-public class RestCatalogGcpIT extends PolarisRestCatalogGcpIntegrationTest {}
+@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_GCS_PATH", matches = 
".+")
+public class RestCatalogGcpIT extends PolarisRestCatalogGcpIntegrationTestBase 
{}
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewAwsIT.java
 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewAwsIT.java
similarity index 91%
rename from 
runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewAwsIT.java
rename to 
runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewAwsIT.java
index b6e742227..de6cfb387 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewAwsIT.java
+++ 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewAwsIT.java
@@ -24,9 +24,11 @@ import java.nio.file.Path;
 import org.apache.iceberg.view.ViewCatalogTests;
 import 
org.apache.polaris.service.it.test.PolarisRestCatalogViewAwsIntegrationTest;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 import org.junit.jupiter.api.io.TempDir;
 
 @QuarkusIntegrationTest
+@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_S3_PATH", matches = 
".+")
 public class RestCatalogViewAwsIT extends 
PolarisRestCatalogViewAwsIntegrationTest {
 
   @BeforeEach
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewAzureIT.java
 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewAzureIT.java
similarity index 91%
rename from 
runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewAzureIT.java
rename to 
runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewAzureIT.java
index b2f237205..38a83c83f 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewAzureIT.java
+++ 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewAzureIT.java
@@ -24,9 +24,11 @@ import java.nio.file.Path;
 import org.apache.iceberg.view.ViewCatalogTests;
 import 
org.apache.polaris.service.it.test.PolarisRestCatalogViewAzureIntegrationTest;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 import org.junit.jupiter.api.io.TempDir;
 
 @QuarkusIntegrationTest
+@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_AZURE_PATH", matches = 
".+")
 public class RestCatalogViewAzureIT extends 
PolarisRestCatalogViewAzureIntegrationTest {
 
   @BeforeEach
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewGcpIT.java
 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewGcpIT.java
similarity index 91%
rename from 
runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewGcpIT.java
rename to 
runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewGcpIT.java
index 1f816312c..1eca3ecc3 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/RestCatalogViewGcpIT.java
+++ 
b/runtime/service/src/cloudTest/java/org/apache/polaris/service/it/RestCatalogViewGcpIT.java
@@ -24,9 +24,11 @@ import java.nio.file.Path;
 import org.apache.iceberg.view.ViewCatalogTests;
 import 
org.apache.polaris.service.it.test.PolarisRestCatalogViewGcpIntegrationTest;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
 import org.junit.jupiter.api.io.TempDir;
 
 @QuarkusIntegrationTest
+@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_GCS_PATH", matches = 
".+")
 public class RestCatalogViewGcpIT extends 
PolarisRestCatalogViewGcpIntegrationTest {
 
   @BeforeEach
diff --git 
a/runtime/service/src/cloudTest/resources/META-INF/services/org.apache.polaris.service.it.ext.PolarisServerManager
 
b/runtime/service/src/cloudTest/resources/META-INF/services/org.apache.polaris.service.it.ext.PolarisServerManager
new file mode 100644
index 000000000..07ecf4b1f
--- /dev/null
+++ 
b/runtime/service/src/cloudTest/resources/META-INF/services/org.apache.polaris.service.it.ext.PolarisServerManager
@@ -0,0 +1,20 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you 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
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+org.apache.polaris.service.it.ServerManager
\ No newline at end of file
diff --git 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/PolarisRestCatalogMinIOIT.java
 
b/runtime/service/src/intTest/java/org/apache/polaris/service/it/PolarisRestCatalogMinIOIT.java
index e430d8ec6..d7f764dd5 100644
--- 
a/runtime/service/src/intTest/java/org/apache/polaris/service/it/PolarisRestCatalogMinIOIT.java
+++ 
b/runtime/service/src/intTest/java/org/apache/polaris/service/it/PolarisRestCatalogMinIOIT.java
@@ -69,11 +69,6 @@ public class PolarisRestCatalogMinIOIT extends 
PolarisRestCatalogIntegrationBase
     endpoint = minioAccess.s3endpoint();
   }
 
-  @Override
-  protected boolean shouldSkip() {
-    return false;
-  }
-
   @Override
   protected void initializeClientFileIO(FileIO fileIO) {
     fileIO.initialize(

Reply via email to