Skip to content

WIP#4669

Draft
snazy wants to merge 20 commits into
apache:mainfrom
snazy:polaris-test-server
Draft

WIP#4669
snazy wants to merge 20 commits into
apache:mainfrom
snazy:polaris-test-server

Conversation

@snazy

@snazy snazy commented Jun 9, 2026

Copy link
Copy Markdown
Member

Pile of build and CI improvement changes - not to be merged as is

@github-project-automation github-project-automation Bot moved this to PRs In Progress in Basic Kanban Board Jun 9, 2026
@snazy snazy force-pushed the polaris-test-server branch 15 times, most recently from 27b316f to b0a7f77 Compare June 12, 2026 18:46
snazy added 13 commits June 12, 2026 20:47
Some calculated information is memoized for multiple projects to be consumed.
Using `rootProject.extra` can hide ordering assumptions and require project configuration coordination.

This change migrates the memoization to shared build-services to solve these potential issues.
This change eliminates cross-project dependencies, which can introduce configuration coordination issues.
This is cleaner than relying on `afterEvaluate` and prevents eager subprojects resolution.
This change eliminates cross-project dependencies, which can introduce configuration coordination issues.
This is cleaner than relying on `afterEvaluate` and prevents eager subprojects resolution.
This change eliminates cross-project dependencies, which can introduce configuration coordination issues.
This is cleaner than relying on `afterEvaluate` and prevents eager subprojects resolution.
This allows creating a `.env` file and for example enable the Gradle configuration cache via
```
GRADLE_OPTS='-Dorg.gradle.configuration-cache=true'
```
This new plugin for test purposes mainly buys us separation and faster feedback:

- Test projects no longer need to build or embed a full Quarkus test app just to run against Polaris.
- Tests can depend on a ready `quarkus-run.jar` via `polarisServer(...)`, so the server lifecycle is externalized from the test JVM.
- Less Quarkus application builds across all checks, improving overall test runtime.
- Quarkus dependencies stop leaking into test classpaths, which reduces dependency conflicts with Spark, Iceberg, Hadoop, etc.
- The plugin makes `enforcedPlatform(libs.quarkus.bom)` safer because Quarkus is mostly constrained to the app/server side instead of the tests.
- Each test task can get its own isolated Polaris server instance and config.
- Projects can use normal `JvmTestSuite`s, which improves Gradle/IntelliJ behavior and keeps test classpaths scoped.
- Custom server startup hooks still allow task-specific setup, like OPA/Testcontainers or RustFS, without baking those concerns into the plugin.
Adds a `PolarisServerManager` implementation for the polaris-server-test-runner plugin.
snazy added 5 commits June 12, 2026 20:47
This change moves a bunch of Quarkus test profiles into the shared `Profiles` class.

With that, exact duplicate profiles have been merged into one.

The Iceberg catalog profiles have been merged.

Each distinct Quarkus test profile requires the testing infrastructure to perform an expensive, time-consuming augmentation pass, hence this effort to unify test profiles.
Removed the four PreBootstrapped* admin profiles and the pre-bootstrap config flag from AdminProfiles.
* Switched purge tests to the regular backend profiles.
* Kept purge setup inside PurgeCommandTestBase with an unconditional test startup observer, using purge-specific realms: `purge-test-realm1`, `purge-test-realm2`, `purge-test-missing-realm`.
@snazy snazy force-pushed the polaris-test-server branch from b0a7f77 to c37643e Compare June 12, 2026 18:47
This change moves a few test cases to `PurgeCommandTest` and the new `BootstrapCommandTest`.

Each `@QuarkusMainTest`/`@Launch` test case starts a new Quarkus command tool with fresh test resources. This means that each of these test cases also spawns new Postgres/Cockroach/Mongo container instances, which is time consuming.

Runtime of `:polaris-admin:test` on my machine dropped from ~7 minutes to ~4 minutes.
@snazy snazy force-pushed the polaris-test-server branch from c37643e to e0d350a Compare June 12, 2026 19:01
Use `forkEvery = 1` only for `:polaris-runtime-service:test`.
Use enlarged heap only for `:polaris-runtime-service:test` and `:polaris-admin:test`.
`polaris-runtime-service`'s `intTest` and `cloudTest` and `:polaris-admin:test` will use `forkEvery=0`
@snazy snazy force-pushed the polaris-test-server branch from e0d350a to 87bdba4 Compare June 12, 2026 19:45
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.

1 participant