Skip to content

Separate Cloud Integration Tests#2283

Merged
snazy merged 3 commits intoapache:mainfrom
tmater:separate_cloud_integration_tests
Aug 11, 2025
Merged

Separate Cloud Integration Tests#2283
snazy merged 3 commits intoapache:mainfrom
tmater:separate_cloud_integration_tests

Conversation

@tmater
Copy link
Contributor

@tmater tmater commented Aug 6, 2025

This change separates the cloud tests into a new Gradle task called cloudTest, allowing them to be executed independently. Previously, these tests were part of the intTest task but were skipped automatically when cloud credentials weren't available. Moving them to a separate task avoids running unnecessary test setup in local and CI environments where cloud integration isn't needed. Tested locally by running both intTest and cloudTest.

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.
@github-project-automation github-project-automation bot moved this to PRs In Progress in Basic Kanban Board Aug 6, 2025
@tmater tmater changed the title (WIP) Separate Cloud Integration Tests Separate Cloud Integration Tests Aug 6, 2025
@tmater tmater marked this pull request as ready for review August 6, 2025 20:47
Copy link
Member

@snazy snazy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for tackling this, @tmater !

Some comments on the Gradle parts, just potential simplifications.

Would you mind making the super classes of the moved test classes abstract, and maybe rename those to make clear that those are meant to be overridden?

To disable the tests, it's also possible to add something like the following to the test "top-level" classes like RestCatalogAwsIT, so even the @BeforeAll doesn't run.

@EnabledIfEnvironmentVariable(named = "INTEGRATION_TEST_S3_PATH", matches=".+")


dependencies {
add("intTestImplementation", java.sourceSets.getByName("test").output.dirs)
add("cloudTestImplementation", java.sourceSets.getByName("test").output.dirs)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can probably moved into the test suites .register closure as

      dependencies {
        implementation(java.sourceSets.getByName("test").output.dirs)
      }

@tmater
Copy link
Contributor Author

tmater commented Aug 7, 2025

Thanks @snazy for the thorough review and great suggestions!

  • Added the Gradle function described by you, I hope I used it properly
  • Made base classes abstract, suffixed them with Base
  • Added annotation to skip test class execution and removed the shouldSkip method
  • Replaced the matching with the suggested lazy init

@tmater tmater requested a review from snazy August 7, 2025 16:04
Copy link
Member

@snazy snazy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Let @adutra take a final look. +1 from my side!

@github-project-automation github-project-automation bot moved this from PRs In Progress to Ready to merge in Basic Kanban Board Aug 8, 2025
@snazy snazy requested a review from adutra August 11, 2025 07:02
@snazy snazy merged commit 8a5b80a into apache:main Aug 11, 2025
12 checks passed
@github-project-automation github-project-automation bot moved this from Ready to merge to Done in Basic Kanban Board Aug 11, 2025
snazy added a commit to snazy/polaris that referenced this pull request Nov 20, 2025
* Helm Chart: remove duplicate line in authenticationOptions template (apache#2297)

* Move python client Makefile into the root level one (apache#2140)

* Move python client Makefile into the root level one

* Update workflow

* add client-lint to pre-commit

* Update README.md to include client

* fix(deps): update dependency boto3 to v1.40.5 (apache#2300)

* fix(deps): update dependency org.assertj:assertj-core to v3.27.4 (apache#2298)

* Fix python CI client-integration-test (apache#2305)

`CONTAINER_TOOL` got renamed to `DOCKER` in
6764a88
but then
eda7074
added more `CONTAINER_TOOL` usage

* fix(docs): update BasePolarisAuthenticator to DefaultAuthenticator (apache#2303)

* Fix Hadoop federation to initialize the configuration prior to catalog initialization (apache#2282)

This PR addresses the gap in Hadoop federation to ensure that we initialize the hadoop configuration prior to initializing the catalog object.

The iceberg library expects the hadoop configuration to be initialized before creating a HadoopCatalog object. This change ensures that Polaris is compatible with the underlying iceberg library. Additionally, since the config initialization is based on the underlying (default) core-site.xml file, the change ensures that the federated catalog was created using `IMPLICIT` authentication mode. 

Testing: 
Due to current limitations in the current test setup, tested the change manually.
[TODO] Add a regtest with hadoop federation once the change is baked into the apache/polaris docker image.

* fix(deps): update dependency boto3 to v1.40.6 (apache#2308)

* fix(deps): update dependency io.opentelemetry:opentelemetry-bom to v1.53.0 (apache#2309)

* Perform force repair when polaris not found (apache#2313)

* fix(deps): update dependency com.github.spotbugs:spotbugs-annotations to v4.9.4 (apache#2312)

* chore(deps): update dependency pre-commit to v4.3.0 (apache#2311)

* fix(deps): update dependency software.amazon.awssdk:bom to v2.32.19 (apache#2314)

* fix(deps): update dependency com.gradleup.shadow:shadow-gradle-plugin to v9.0.1 (apache#2310)

* Separate Cloud Integration Tests (apache#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.

* chore(deps): update actions/checkout action to v5 (apache#2319)

* CatalogEntity: internal endpoint not considered (apache#2292)

Setting an S3 internal endpoint doesn't work, because the property's not carried over from the OpenAPI model type into `AwsStorageConfigInfo`.

* client/python: loosen boto3 dep (apache#2188)

It's hard to depend on this package when the boto3 dependency is so strict.

* fix(deps): update dependency io.micrometer:micrometer-bom to v1.15.3 (apache#2321)

* NoSQL: test adjustment

* Last merged commit 45e8e02

---------

Co-authored-by: Alexandre Dutra <[email protected]>
Co-authored-by: Yong Zheng <[email protected]>
Co-authored-by: Mend Renovate <[email protected]>
Co-authored-by: Christopher Lambert <[email protected]>
Co-authored-by: Yujiang Zhong <[email protected]>
Co-authored-by: Pooja Nilangekar <[email protected]>
Co-authored-by: Tamas Mate <[email protected]>
Co-authored-by: Tyler Rockwood <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants