Skip to content

Commit 73294ba

Browse files
Merge branch '3.3.x'
Closes gh-41453
2 parents 7b8364d + 24dbee4 commit 73294ba

File tree

2 files changed

+75
-0
lines changed

2 files changed

+75
-0
lines changed

spring-boot-system-tests/spring-boot-image-tests/src/systemTest/java/org/springframework/boot/image/paketo/PaketoBuilderTests.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,45 @@ void nativeApp() throws Exception {
339339
}
340340
}
341341

342+
@Test
343+
void classDataSharingApp() throws Exception {
344+
writeMainClass();
345+
String imageName = "paketo-integration/" + this.gradleBuild.getProjectDir().getName();
346+
ImageReference imageReference = ImageReference.of(ImageName.of(imageName));
347+
BuildResult result = buildImage(imageName);
348+
assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
349+
assertThat(result.getOutput()).contains("Running creator");
350+
try (GenericContainer<?> container = new GenericContainer<>(imageName)) {
351+
container.withExposedPorts(8080);
352+
container.waitingFor(Wait.forHttp("/test")).start();
353+
ContainerConfig config = container.getContainerInfo().getConfig();
354+
assertLabelsMatchManifestAttributes(config);
355+
ImageAssertions.assertThat(config).buildMetadata((metadata) -> {
356+
metadata.buildpacks()
357+
.contains("paketo-buildpacks/ca-certificates", "paketo-buildpacks/bellsoft-liberica",
358+
"paketo-buildpacks/executable-jar", "paketo-buildpacks/dist-zip",
359+
"paketo-buildpacks/spring-boot");
360+
metadata.processOfType("web")
361+
.satisfiesExactly((command) -> assertThat(command).isEqualTo("java"),
362+
(arg) -> assertThat(arg).isEqualTo("-cp"),
363+
(arg) -> assertThat(arg).startsWith("runner.jar"),
364+
(arg) -> assertThat(arg).isEqualTo("example.ExampleApplication"));
365+
metadata.processOfType("spring-boot-app")
366+
.satisfiesExactly((command) -> assertThat(command).isEqualTo("java"),
367+
(arg) -> assertThat(arg).isEqualTo("-cp"),
368+
(arg) -> assertThat(arg).startsWith("runner.jar"),
369+
(arg) -> assertThat(arg).isEqualTo("example.ExampleApplication"));
370+
metadata.processOfType("executable-jar")
371+
.containsExactly("java", "org.springframework.boot.loader.launch.JarLauncher");
372+
});
373+
assertImageHasJvmSbomLayer(imageReference, config);
374+
assertImageHasDependenciesSbomLayer(imageReference, config, "executable-jar");
375+
}
376+
finally {
377+
removeImage(imageReference);
378+
}
379+
}
380+
342381
private BuildResult buildImage(String imageName, String... arguments) {
343382
List<String> args = new ArrayList<>(List.of(arguments));
344383
args.add("bootBuildImage");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
plugins {
2+
id 'org.springframework.boot' version '{bootVersion}'
3+
id 'io.spring.dependency-management' version '{dependencyManagementPluginVersion}'
4+
id 'java'
5+
}
6+
7+
repositories {
8+
exclusiveContent {
9+
forRepository {
10+
maven { url '{systemTestMavenRepository}' }
11+
}
12+
filter {
13+
includeGroup "org.springframework.boot"
14+
}
15+
}
16+
mavenCentral()
17+
maven { url 'https://repo.spring.io/milestone' }
18+
maven { url 'https://repo.spring.io/snapshot' }
19+
}
20+
21+
dependencies {
22+
implementation("org.springframework.boot:spring-boot-starter-web:{bootVersion}")
23+
}
24+
25+
bootJar {
26+
manifest {
27+
attributes(
28+
'Implementation-Version': '1.0.0',
29+
'Implementation-Title': "Paketo Test"
30+
)
31+
}
32+
}
33+
34+
bootBuildImage {
35+
environment = ['BP_JVM_CDS_ENABLED': 'true']
36+
}

0 commit comments

Comments
 (0)