Skip to content

Move gf-pool to OmniFish arquillian-glassfish-server-pool + glassfish-pool-maven-plugin#2165

Draft
BalusC wants to merge 3 commits into
5.0from
arquillian-glassfish-server-pool
Draft

Move gf-pool to OmniFish arquillian-glassfish-server-pool + glassfish-pool-maven-plugin#2165
BalusC wants to merge 3 commits into
5.0from
arquillian-glassfish-server-pool

Conversation

@BalusC
Copy link
Copy Markdown
Member

@BalusC BalusC commented May 9, 2026

Moved the in-house gf-pool module (custom Java agent leasing slots from failsafe-forked JVMs, antrun-based provisioning, ShutdownHookInstaller, start-pool.sh/stop-pool.sh, first introduced in #2156 as proof of concept) into a reusable module and maven plugin in OmniFish arquillian-container-glassfish so other projects/TCKs can also use it.

  • arquillian-glassfish-server-pool: Arquillian LoadableExtension whose DeployableContainer leases a slot via FileLock and reads the slot's ports.properties at container start.
  • glassfish-pool-maven-plugin: provisioning, dist staging, Mojarra overlay, and lifecycle goals (up, down, status, provision, nuke), bound to initialize per test module via the parent profile.

util/arquillian.xml swaps the glassfish-remote-tck container for the new glassfish-pool qualifier (only poolDir is required; ports come from the slot at start time). Pool dir moves from gf-pool/target/pool/ to target/pool/ at the reactor root.

Side moves bundled in:

  • Reorder faces20/api modules so application (a 5-child sub-aggregator) is last, so its subtree doesn't push the api-component-* WARs to the tail of the -TN ready queue.
  • Update README to document the new lifecycle goals (including the live top-style glassfish-pool:status table) and drop the old shell helpers.

NOTE: this is a Draft PR because arquillian-container-glassfish 2.2.0 is not yet released and 2.2.0-SNAPSHOT in current code needs to be swapped out for 2.2.0 once it's released.

Related PR: OmniFish-EE/arquillian-container-glassfish#38
Checkout both branches, build the arquillian-container-glassfish then run mvn clean install -Tn on tck folder of current branch.

Fastest result so far at my machine using mvn clean install -T8:

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:46 min (Wall Clock)
[INFO] Finished at: 2026-05-09T15:46:45-04:00
[INFO] ------------------------------------------------------------------------

It was ~3 hours when old-tck was still JavaTest. It was ~1 hour when old-tck was migrated to Selenium. Clearly a lot of time was previously wasted on setting up and starting GlassFish instances. The new glassfish-pool solves this problem entirely.

…pool-maven-plugin

Replaces the in-tree gf-pool module (custom Java agent leasing slots from
failsafe-forked JVMs, antrun-based provisioning, ShutdownHookInstaller,
start-pool.sh/stop-pool.sh) with the upstream OmniFish containers in
arquillian-container-glassfish:

- glassfish-pool-maven-plugin: provisioning, dist staging, Mojarra overlay,
  and lifecycle goals (up, down, status, provision, nuke), bound to
  initialize per test module via the parent profile.
- arquillian-glassfish-server-pool: Arquillian LoadableExtension whose
  DeployableContainer leases a slot via FileLock and reads the slot's
  ports.properties at container start.

util/arquillian.xml swaps the glassfish-remote-tck container for the new
glassfish-pool qualifier (only poolDir is required; ports come from the
slot at start time). Pool dir moves from gf-pool/target/pool/ to
target/pool/ at the reactor root.

Side moves bundled in:
- Reorder faces20/api modules so application (a 5-child sub-aggregator)
  is last, so its subtree doesn't push the api-component-* WARs to the
  tail of the -TN ready queue.
- Update README to document the new lifecycle goals (including the live
  top-style glassfish-pool:status table) and drop the old shell helpers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@BalusC BalusC requested a review from arjantijms May 9, 2026 20:04
@BalusC BalusC marked this pull request as draft May 9, 2026 20:08
@BalusC BalusC changed the title Switch pool to OmniFish arquillian-glassfish-server-pool + glassfish-pool-maven-plugin Move gf-pool to OmniFish arquillian-glassfish-server-pool + glassfish-pool-maven-plugin May 9, 2026
BalusC and others added 2 commits May 21, 2026 10:04
Plumbs the new arquillian-glassfish-server-pool restartOnRelease
flag through: defaults to false at the parent level, exposed as a
sysprop on the glassfish-ci-managed profile's failsafe so individual
modules can flip it via a one-line <properties> override when their
tests leak GF JVM-scoped state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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