use of com.google.cloud.tools.jib.api.DescriptorDigest in project jib by GoogleContainerTools.
the class CacheStorageWriterTest method testWriteUncompressed.
@Test
public void testWriteUncompressed() throws IOException {
Blob uncompressedLayerBlob = Blobs.from("uncompressedLayerBlob");
DescriptorDigest layerDigest = getDigest(compress(uncompressedLayerBlob)).getDigest();
DescriptorDigest selector = getDigest(Blobs.from("selector")).getDigest();
CachedLayer cachedLayer = cacheStorageWriter.writeUncompressed(uncompressedLayerBlob, selector);
verifyCachedLayer(cachedLayer, uncompressedLayerBlob);
// Verifies that the files are present.
Path selectorFile = cacheStorageFiles.getSelectorFile(selector);
Assert.assertTrue(Files.exists(selectorFile));
Assert.assertEquals(layerDigest.getHash(), Blobs.writeToString(Blobs.from(selectorFile)));
}
use of com.google.cloud.tools.jib.api.DescriptorDigest in project jib by GoogleContainerTools.
the class LayerEntriesSelectorTest method testGenerateSelector_empty.
@Test
public void testGenerateSelector_empty() throws IOException {
DescriptorDigest expectedSelector = Digests.computeJsonDigest(ImmutableList.of());
Assert.assertEquals(expectedSelector, LayerEntriesSelector.generateSelector(ImmutableList.of()));
}
use of com.google.cloud.tools.jib.api.DescriptorDigest in project jib by GoogleContainerTools.
the class BuildImageMojoIntegrationTest method testExecute_multiPlatformBuild.
@Test
public void testExecute_multiPlatformBuild() throws IOException, VerificationException, RegistryException {
String targetImage = "localhost:5000/multiplatform:maven" + System.nanoTime();
Verifier verifier = new Verifier(simpleTestProject.getProjectRoot().toString());
verifier.setSystemProperty("_TARGET_IMAGE", targetImage);
verifier.setSystemProperty("jib.to.auth.username", "testuser");
verifier.setSystemProperty("jib.to.auth.password", "testpassword");
verifier.setSystemProperty("sendCredentialsOverHttp", "true");
verifier.setSystemProperty("jib.allowInsecureRegistries", "true");
verifier.setAutoclean(false);
verifier.addCliOption("--file=pom-multiplatform-build.xml");
verifier.executeGoals(Arrays.asList("clean", "compile", "jib:build"));
verifier.verifyErrorFreeLog();
FailoverHttpClient httpClient = new FailoverHttpClient(true, true, ignored -> {
});
RegistryClient registryClient = RegistryClient.factory(EventHandlers.NONE, "localhost:5000", "multiplatform", httpClient).setCredential(Credential.from("testuser", "testpassword")).newRegistryClient();
registryClient.configureBasicAuth();
// manifest list by tag ":latest"
ManifestTemplate manifestList = registryClient.pullManifest("latest").getManifest();
assertThat(manifestList).isInstanceOf(V22ManifestListTemplate.class);
V22ManifestListTemplate v22ManifestList = (V22ManifestListTemplate) manifestList;
assertThat(v22ManifestList.getManifests().size()).isEqualTo(2);
ManifestDescriptorTemplate.Platform platform1 = v22ManifestList.getManifests().get(0).getPlatform();
ManifestDescriptorTemplate.Platform platform2 = v22ManifestList.getManifests().get(1).getPlatform();
assertThat(platform1.getArchitecture()).isEqualTo("arm64");
assertThat(platform1.getOs()).isEqualTo("linux");
assertThat(platform2.getArchitecture()).isEqualTo("amd64");
assertThat(platform2.getOs()).isEqualTo("linux");
// manifest list by tag ":another"
ManifestTemplate anotherManifestList = registryClient.pullManifest("another").getManifest();
assertThat(JsonTemplateMapper.toUtf8String(anotherManifestList)).isEqualTo(JsonTemplateMapper.toUtf8String(manifestList));
// Check arm64/linux container config.
List<String> arm64Digests = v22ManifestList.getDigestsForPlatform("arm64", "linux");
assertThat(arm64Digests.size()).isEqualTo(1);
String arm64Digest = arm64Digests.get(0);
ManifestTemplate arm64Manifest = registryClient.pullManifest(arm64Digest).getManifest();
assertThat(arm64Manifest).isInstanceOf(V22ManifestTemplate.class);
V22ManifestTemplate arm64V22Manifest = (V22ManifestTemplate) arm64Manifest;
DescriptorDigest arm64ConfigDigest = arm64V22Manifest.getContainerConfiguration().getDigest();
Blob arm64ConfigBlob = registryClient.pullBlob(arm64ConfigDigest, ignored -> {
}, ignored -> {
});
String arm64Config = Blobs.writeToString(arm64ConfigBlob);
assertThat(arm64Config).contains("\"architecture\":\"arm64\"");
assertThat(arm64Config).contains("\"os\":\"linux\"");
// Check amd64/linux container config.
List<String> amd64Digests = v22ManifestList.getDigestsForPlatform("amd64", "linux");
assertThat(amd64Digests.size()).isEqualTo(1);
String amd64Digest = amd64Digests.get(0);
ManifestTemplate amd64Manifest = registryClient.pullManifest(amd64Digest).getManifest();
assertThat(amd64Manifest).isInstanceOf(V22ManifestTemplate.class);
V22ManifestTemplate amd64V22Manifest = (V22ManifestTemplate) amd64Manifest;
DescriptorDigest amd64ConfigDigest = amd64V22Manifest.getContainerConfiguration().getDigest();
Blob amd64ConfigBlob = registryClient.pullBlob(amd64ConfigDigest, ignored -> {
}, ignored -> {
});
String amd64Config = Blobs.writeToString(amd64ConfigBlob);
assertThat(amd64Config).contains("\"architecture\":\"amd64\"");
assertThat(amd64Config).contains("\"os\":\"linux\"");
}
use of com.google.cloud.tools.jib.api.DescriptorDigest in project jib by GoogleContainerTools.
the class JsonTemplateMapperTest method testReadListOfJson.
@Test
public void testReadListOfJson() throws IOException, URISyntaxException, DigestException {
Path jsonFile = Paths.get(Resources.getResource("core/json/basic_list.json").toURI());
String jsonString = new String(Files.readAllBytes(jsonFile), StandardCharsets.UTF_8);
List<TestJson> listofJsons = JsonTemplateMapper.readListOfJson(jsonString, TestJson.class);
TestJson json1 = listofJsons.get(0);
TestJson json2 = listofJsons.get(1);
DescriptorDigest digest1 = DescriptorDigest.fromDigest("sha256:91e0cae00b86c289b33fee303a807ae72dd9f0315c16b74e6ab0cdbe9d996c10");
DescriptorDigest digest2 = DescriptorDigest.fromDigest("sha256:8c662931926fa990b41da3c9f42663a537ccd498130030f9149173a0493832ad");
Assert.assertEquals(1, json1.number);
Assert.assertEquals(2, json2.number);
Assert.assertEquals("text1", json1.text);
Assert.assertEquals("text2", json2.text);
Assert.assertEquals(digest1, json1.digest);
Assert.assertEquals(digest2, json2.digest);
Assert.assertEquals(10, json1.innerObject.number);
Assert.assertEquals(20, json2.innerObject.number);
Assert.assertEquals(2, json1.list.size());
Assert.assertTrue(json2.list.isEmpty());
}
use of com.google.cloud.tools.jib.api.DescriptorDigest in project jib by GoogleContainerTools.
the class BlobPullerTest method testHandleResponse.
@Test
public void testHandleResponse() throws IOException, UnexpectedBlobDigestException {
InputStream blobContent = new ByteArrayInputStream("some BLOB content".getBytes(StandardCharsets.UTF_8));
DescriptorDigest testBlobDigest = Digests.computeDigest(blobContent).getDigest();
blobContent.reset();
Response mockResponse = Mockito.mock(Response.class);
Mockito.when(mockResponse.getContentLength()).thenReturn((long) "some BLOB content".length());
Mockito.when(mockResponse.getBody()).thenReturn(blobContent);
LongAdder byteCount = new LongAdder();
BlobPuller blobPuller = new BlobPuller(fakeRegistryEndpointRequestProperties, testBlobDigest, layerOutputStream, size -> Assert.assertEquals("some BLOB content".length(), size.longValue()), byteCount::add);
blobPuller.handleResponse(mockResponse);
Assert.assertEquals("some BLOB content", new String(layerContentOutputStream.toByteArray(), StandardCharsets.UTF_8));
Assert.assertEquals(testBlobDigest, layerOutputStream.computeDigest().getDigest());
Assert.assertEquals("some BLOB content".length(), byteCount.sum());
}
Aggregations