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

Summary

Adds integration tests using real Spring Boot fat jars from java-test-applications to verify end-to-end framework injection.

Relates to #1357.

Tests added

Test Spring Boot Java Verifies
SB3 cfenv 3.5 17 java-cfenv 3.x injected, cloud profile active (via RuntimeLogs)
SB4 cfenv 4.1 21 java-cfenv 4.x injected, cloud profile (/active-profiles), jar loaded (/loaded-jars)
SB4 combined 4.1 21 java-cfenv + container-security-provider + cf-metrics-exporter

Design decisions

  • Pre-explode fat jars in fixtures_helper_test.go to simulate CF staging behaviour (CF bits service extracts pushed artifacts as zip before running the buildpack). See switchblade#134.
  • Jars from stokpop fork (v1.0.0-SNAPSHOT) — upstream cloudfoundry/java-test-applications PRs pending merge. Switch URL once v1.0.0 is released.
  • SB3 limited assertions — boot3 app doesn't include RuntimeUtils endpoints yet, so cloud profile checked via runtime logs.

Other changes

  • Fix dead 404 URL in frameworks_test.go
  • Update isSpringBootJar comment in spring_boot.go (no functional change)
  • Update README with correct -run filter patterns for 5-level spec subtests

Verified

All 3 tests pass individually on Docker platform (~108s each).

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 4 times, most recently from 097a2ce to bfdd804 Compare July 16, 2026 14:01
…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 bfdd804 to 4c1851e Compare July 16, 2026 14:09
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.

2 participants