WIP#4669
Draft
snazy wants to merge 20 commits into
Draft
Conversation
27b316f to
b0a7f77
Compare
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.
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`.
b0a7f77 to
c37643e
Compare
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.
c37643e to
e0d350a
Compare
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`
e0d350a to
87bdba4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pile of build and CI improvement changes - not to be merged as is