use of com.google.cloud.tools.jib.api.buildplan.FileEntriesLayer in project jib by GoogleContainerTools.
the class JarFilesTest method testToJibContainerBuilder_packagedStandard_basicInfo.
@Test
public void testToJibContainerBuilder_packagedStandard_basicInfo() throws IOException, InvalidImageReferenceException {
when(mockStandardPackagedProcessor.getJavaVersion()).thenReturn(8);
FileEntriesLayer layer = FileEntriesLayer.builder().setName("jar").addEntry(Paths.get("path/to/standardJar.jar"), AbsoluteUnixPath.get("/app/standardJar.jar")).build();
when(mockStandardPackagedProcessor.createLayers()).thenReturn(Arrays.asList(layer));
when(mockStandardPackagedProcessor.computeEntrypoint(anyList())).thenReturn(ImmutableList.of("java", "-jar", "/app/standardJar.jar"));
when(mockCommonContainerConfigCliOptions.getFrom()).thenReturn(Optional.empty());
JibContainerBuilder containerBuilder = JarFiles.toJibContainerBuilder(mockStandardPackagedProcessor, mockJarCommand, mockCommonCliOptions, mockCommonContainerConfigCliOptions, mockLogger);
ContainerBuildPlan buildPlan = containerBuilder.toContainerBuildPlan();
assertThat(buildPlan.getBaseImage()).isEqualTo("eclipse-temurin:8-jre");
assertThat(buildPlan.getPlatforms()).isEqualTo(ImmutableSet.of(new Platform("amd64", "linux")));
assertThat(buildPlan.getCreationTime()).isEqualTo(Instant.EPOCH);
assertThat(buildPlan.getFormat()).isEqualTo(ImageFormat.Docker);
assertThat(buildPlan.getEnvironment()).isEmpty();
assertThat(buildPlan.getLabels()).isEmpty();
assertThat(buildPlan.getVolumes()).isEmpty();
assertThat(buildPlan.getExposedPorts()).isEmpty();
assertThat(buildPlan.getUser()).isNull();
assertThat(buildPlan.getWorkingDirectory()).isNull();
assertThat(buildPlan.getEntrypoint()).containsExactly("java", "-jar", "/app/standardJar.jar").inOrder();
assertThat(buildPlan.getLayers().get(0).getName()).isEqualTo("jar");
assertThat(((FileEntriesLayer) buildPlan.getLayers().get(0)).getEntries()).isEqualTo(FileEntriesLayer.builder().addEntry(Paths.get("path/to/standardJar.jar"), AbsoluteUnixPath.get("/app/standardJar.jar")).build().getEntries());
}
use of com.google.cloud.tools.jib.api.buildplan.FileEntriesLayer in project jib by GoogleContainerTools.
the class JarFilesTest method testToJibContainerBuilder_explodedStandard_basicInfo.
@Test
public void testToJibContainerBuilder_explodedStandard_basicInfo() throws IOException, InvalidImageReferenceException {
when(mockStandardExplodedProcessor.getJavaVersion()).thenReturn(8);
FileEntriesLayer layer = FileEntriesLayer.builder().setName("classes").addEntry(Paths.get("path/to/tempDirectory/class1.class"), AbsoluteUnixPath.get("/app/explodedJar/class1.class")).build();
when(mockStandardExplodedProcessor.createLayers()).thenReturn(Arrays.asList(layer));
when(mockStandardExplodedProcessor.computeEntrypoint(anyList())).thenReturn(ImmutableList.of("java", "-cp", "/app/explodedJar:/app/dependencies/*", "HelloWorld"));
when(mockCommonContainerConfigCliOptions.getFrom()).thenReturn(Optional.empty());
JibContainerBuilder containerBuilder = JarFiles.toJibContainerBuilder(mockStandardExplodedProcessor, mockJarCommand, mockCommonCliOptions, mockCommonContainerConfigCliOptions, mockLogger);
ContainerBuildPlan buildPlan = containerBuilder.toContainerBuildPlan();
assertThat(buildPlan.getBaseImage()).isEqualTo("eclipse-temurin:8-jre");
assertThat(buildPlan.getPlatforms()).isEqualTo(ImmutableSet.of(new Platform("amd64", "linux")));
assertThat(buildPlan.getCreationTime()).isEqualTo(Instant.EPOCH);
assertThat(buildPlan.getFormat()).isEqualTo(ImageFormat.Docker);
assertThat(buildPlan.getEnvironment()).isEmpty();
assertThat(buildPlan.getLabels()).isEmpty();
assertThat(buildPlan.getVolumes()).isEmpty();
assertThat(buildPlan.getExposedPorts()).isEmpty();
assertThat(buildPlan.getUser()).isNull();
assertThat(buildPlan.getWorkingDirectory()).isNull();
assertThat(buildPlan.getEntrypoint()).containsExactly("java", "-cp", "/app/explodedJar:/app/dependencies/*", "HelloWorld").inOrder();
assertThat(buildPlan.getLayers()).hasSize(1);
assertThat(buildPlan.getLayers().get(0).getName()).isEqualTo("classes");
assertThat(((FileEntriesLayer) buildPlan.getLayers().get(0)).getEntries()).containsExactlyElementsIn(FileEntriesLayer.builder().addEntry(Paths.get("path/to/tempDirectory/class1.class"), AbsoluteUnixPath.get("/app/explodedJar/class1.class")).build().getEntries());
}
use of com.google.cloud.tools.jib.api.buildplan.FileEntriesLayer in project jib by GoogleContainerTools.
the class SpringBootExplodedProcessorTest method testCreateLayers_layered_singleEmptyLayerListed.
@Test
public void testCreateLayers_layered_singleEmptyLayerListed() throws IOException, URISyntaxException {
// BOOT-INF/layers.idx for this spring-boot jar is as follows:
// - "dependencies":
// - "BOOT-INF/lib/dependency1.jar"
// - "BOOT-INF/lib/dependency2.jar"
// - "spring-boot-loader":
// - "org/"
// - "snapshot-dependencies":
// - "application":
// - "BOOT-INF/classes/"
// - "META-INF/"
Path springBootJar = Paths.get(Resources.getResource(SPRING_BOOT_LAYERED_WITH_EMPTY_LAYER).toURI());
Path destDir = temporaryFolder.newFolder().toPath();
SpringBootExplodedProcessor springBootExplodedModeProcessor = new SpringBootExplodedProcessor(springBootJar, destDir, JAR_JAVA_VERSION);
List<FileEntriesLayer> layers = springBootExplodedModeProcessor.createLayers();
assertThat(layers.size()).isEqualTo(3);
FileEntriesLayer nonSnapshotLayer = layers.get(0);
FileEntriesLayer loaderLayer = layers.get(1);
FileEntriesLayer applicationLayer = layers.get(2);
assertThat(nonSnapshotLayer.getName()).isEqualTo("dependencies");
assertThat(nonSnapshotLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/BOOT-INF/lib/dependency1.jar"), AbsoluteUnixPath.get("/app/BOOT-INF/lib/dependency2.jar"));
assertThat(loaderLayer.getName()).isEqualTo("spring-boot-loader");
assertThat(loaderLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/org/springframework/boot/loader/data/data1.class"), AbsoluteUnixPath.get("/app/org/springframework/boot/loader/launcher1.class"));
assertThat(applicationLayer.getName()).isEqualTo("application");
assertThat(applicationLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/BOOT-INF/classes/class1.class"), AbsoluteUnixPath.get("/app/BOOT-INF/classes/classDirectory/class2.class"), AbsoluteUnixPath.get("/app/META-INF/MANIFEST.MF"));
}
use of com.google.cloud.tools.jib.api.buildplan.FileEntriesLayer in project jib by GoogleContainerTools.
the class SpringBootExplodedProcessorTest method testCreateLayers_layered_allListed.
@Test
public void testCreateLayers_layered_allListed() throws IOException, URISyntaxException {
// BOOT-INF/layers.idx for this spring-boot jar is as follows:
// - "dependencies":
// - "BOOT-INF/lib/dependency1.jar"
// - "BOOT-INF/lib/dependency2.jar"
// - "spring-boot-loader":
// - "org/"
// - "snapshot-dependencies":
// - "BOOT-INF/lib/dependency-SNAPSHOT-3.jar"
// - "application":
// - "BOOT-INF/classes/"
// - "META-INF/"
Path springBootJar = Paths.get(Resources.getResource(SPRING_BOOT_LAYERED).toURI());
Path destDir = temporaryFolder.newFolder().toPath();
SpringBootExplodedProcessor springBootExplodedModeProcessor = new SpringBootExplodedProcessor(springBootJar, destDir, JAR_JAVA_VERSION);
List<FileEntriesLayer> layers = springBootExplodedModeProcessor.createLayers();
assertThat(layers.size()).isEqualTo(4);
FileEntriesLayer nonSnapshotLayer = layers.get(0);
FileEntriesLayer loaderLayer = layers.get(1);
FileEntriesLayer snapshotLayer = layers.get(2);
FileEntriesLayer applicationLayer = layers.get(3);
assertThat(nonSnapshotLayer.getName()).isEqualTo("dependencies");
assertThat(nonSnapshotLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/BOOT-INF/lib/dependency1.jar"), AbsoluteUnixPath.get("/app/BOOT-INF/lib/dependency2.jar"));
assertThat(loaderLayer.getName()).isEqualTo("spring-boot-loader");
assertThat(loaderLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/org/springframework/boot/loader/data/data1.class"), AbsoluteUnixPath.get("/app/org/springframework/boot/loader/launcher1.class"));
assertThat(snapshotLayer.getName()).isEqualTo("snapshot-dependencies");
assertThat(snapshotLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/BOOT-INF/lib/dependency3-SNAPSHOT.jar"));
assertThat(applicationLayer.getName()).isEqualTo("application");
assertThat(applicationLayer.getEntries().stream().map(FileEntry::getExtractionPath).collect(Collectors.toList())).containsExactly(AbsoluteUnixPath.get("/app/BOOT-INF/classes/class1.class"), AbsoluteUnixPath.get("/app/BOOT-INF/classes/classDirectory/class2.class"), AbsoluteUnixPath.get("/app/META-INF/MANIFEST.MF"));
}
use of com.google.cloud.tools.jib.api.buildplan.FileEntriesLayer in project jib by GoogleContainerTools.
the class StandardExplodedProcessorTest method testCreateLayers_emptyJar.
@Test
public void testCreateLayers_emptyJar() throws IOException, URISyntaxException {
Path standardJar = Paths.get(Resources.getResource(STANDARD_JAR_EMPTY).toURI());
Path destDir = temporaryFolder.newFolder().toPath();
StandardExplodedProcessor standardExplodedModeProcessor = new StandardExplodedProcessor(standardJar, destDir, JAR_JAVA_VERSION);
List<FileEntriesLayer> layers = standardExplodedModeProcessor.createLayers();
assertThat(layers.size()).isEqualTo(1);
FileEntriesLayer resourcesLayer = layers.get(0);
assertThat(resourcesLayer.getEntries().size()).isEqualTo(1);
assertThat(resourcesLayer.getEntries().get(0).getExtractionPath()).isEqualTo(AbsoluteUnixPath.get("/app/explodedJar/META-INF/MANIFEST.MF"));
}
Aggregations