Skip to content

feat(integration): add real Spring Boot 3.x/4.x integration tests#1361

Open
stokpop wants to merge 1 commit into
cloudfoundry:mainfrom
stokpop:feature/1357-real-spring-boot-integration-fixtures
Open

feat(integration): add real Spring Boot 3.x/4.x integration tests#1361
stokpop wants to merge 1 commit into
cloudfoundry:mainfrom
stokpop:feature/1357-real-spring-boot-integration-fixtures

Conversation

@stokpop

@stokpop stokpop commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Fixes #1357

What

Add integration tests using real Spring Boot fat jars from cloudfoundry/java-test-applications v1.0.0 to verify end-to-end framework injection.

Three tests:

  • SB3 (Boot 3.5, Java 17): java-cfenv 3.x injection, cloud profile via RuntimeLogs
  • SB4 cfenv (Boot 4.1, Java 21): java-cfenv 4.x injection, cloud profile via /active-profiles, jar presence via /loaded-jars, JDBC auto-config (spring.datasource.url/username/password)
  • SB4 combined: java-cfenv + container-security-provider + cf-metrics-exporter

Also includes:

  • fixtures_helper_test.go: downloads jars, pre-explodes for Docker mode (CF staging does this natively)
  • framework-java-cfenv.md: new VCAP_SERVICES auto-configuration section documenting java-cfenv-all service connector pipeline
  • Dead URL fix in frameworks_test.go
  • README update with correct 5-level -run filter patterns
  • Skip jar download in cached-buildpack mode

Test assertions backed by docs:

  • Cloud profile activation (java-cfenv-all CfEnvProcessor)
  • spring.datasource.url = jdbc:postgresql://... (from postgres:// URI via CfDataSourceEnvironmentPostProcessor)
  • spring.datasource.username / spring.datasource.password extraction
  • cf-metrics-exporter staging log output
  • container-security-provider env var injection

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Adds end-to-end Spring Boot integration coverage by running real Spring Boot 3.x/4.x fixtures (downloaded from java-test-applications) and asserting buildpack framework injection behavior (notably java-cfenv, plus combined framework scenarios).

Changes:

  • Add real-jar Spring Boot integration tests (SB3 + SB4) including assertions for cloud profile activation and jar/agent presence.
  • Add a helper that downloads and pre-explodes Spring Boot fat jars to match CF staging behavior.
  • Update docs and a previously dead fixture URL reference.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/java/containers/spring_boot.go Clarifies isSpringBootJar fallback heuristic behavior via comments.
src/integration/spring_boot_test.go Adds new real Spring Boot SB3/SB4 integration test contexts and assertions.
src/integration/README.md Updates Go test invocation examples and documents -run patterns for deep spec subtests.
src/integration/init_test.go Downloads/explodes SB3/SB4 fixtures before running the integration suite and wires paths into SpringBoot tests.
src/integration/frameworks_test.go Updates a jar URL in the (currently skipped) Checkmarx IAST binding test.
src/integration/fixtures_helper_test.go Introduces jar download + zip extraction utilities to produce exploded fixture directories.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/integration/init_test.go Outdated
Comment thread src/integration/fixtures_helper_test.go
Comment thread src/integration/frameworks_test.go Outdated
@stokpop stokpop force-pushed the feature/1357-real-spring-boot-integration-fixtures branch 5 times, most recently from bfdd804 to 4c1851e Compare July 16, 2026 14:09
…oudfoundry#1357)

Add integration tests using real fat jars from cloudfoundry/java-test-applications
v1.0.0 to verify end-to-end framework injection.

Three tests:
- SB3 (Boot 3.5, Java 17): java-cfenv 3.x injection, cloud profile
  verified via RuntimeLogs (boot3 app lacks RuntimeUtils endpoints)
- SB4 (Boot 4.1, Java 21): java-cfenv 4.x injection, cloud profile
  via /active-profiles, java-cfenv presence via /loaded-jars
- SB4 combined: java-cfenv + container-security-provider env var +
  cf-metrics-exporter javaagent — all in one deployment

Key design decisions:
- Pre-explode fat jars in fixtures_helper_test.go for Docker-mode tests
  to simulate CF staging (CF bits service extracts pushed jars as zip
  before running the buildpack). CF-mode tests pass raw jar to cf push.
  See switchblade#134 for CF-vs-Docker divergence.
- Jars sourced from cloudfoundry/java-test-applications@v1.0.0.

Also:
- Fix dead 404 URL in frameworks_test.go
- Update isSpringBootJar comment in spring_boot.go
- Update README with correct 5-level -run filter patterns
@stokpop stokpop force-pushed the feature/1357-real-spring-boot-integration-fixtures branch from 4c1851e to 7b93092 Compare July 16, 2026 15:28
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.

Add real Spring Boot integration test fixtures (SB3 + SB4) via java-test-applications

2 participants