diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2017-10-06 14:51:59 +0200 |
---|---|---|
committer | Valerij Fredriksen <valerijf@oath.com> | 2017-10-06 14:51:59 +0200 |
commit | 20ddb05334251717610b7db18d7c45b2666d81ae (patch) | |
tree | 093be020139466d2db3ef57808a3b37fdf50c7b1 /docker-api | |
parent | 00a1d90ea6133f519424de86976313a90b809770 (diff) |
Add test
Diffstat (limited to 'docker-api')
2 files changed, 35 insertions, 3 deletions
diff --git a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java index 1f568b325b9..8e8a650d906 100644 --- a/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java +++ b/docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java @@ -155,7 +155,7 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { networkMode .filter(mode -> ! mode.toLowerCase().equals("host")) - .ifPresent(mode -> containerCmd.withMacAddress(generateRandomMACAddress())); + .ifPresent(mode -> containerCmd.withMacAddress(generateMACAddress(hostName, ipv4Address, ipv6Address))); memoryInB.ifPresent(containerCmd::withMemory); cpuShares.ifPresent(containerCmd::withCpuShares); @@ -206,8 +206,11 @@ class CreateContainerCommandImpl implements Docker.CreateContainerCommand { + dockerImage.asString(); } - private String generateRandomMACAddress() { - final String seed = hostName + ipv4Address.orElse("") + ipv6Address.orElse(""); + /** + * Generates a pseudo-random MAC address based on the hostname, IPv4- and IPv6-address. + */ + static String generateMACAddress(String hostname, Optional<String> ipv4Address, Optional<String> ipv6Address) { + final String seed = hostname + ipv4Address.orElse("") + ipv6Address.orElse(""); Random rand = getPRNG(seed); byte[] macAddr = new byte[6]; rand.nextBytes(macAddr); diff --git a/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java new file mode 100644 index 00000000000..1bc73d981c3 --- /dev/null +++ b/docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java @@ -0,0 +1,29 @@ +package com.yahoo.vespa.hosted.dockerapi; + + +import org.junit.Test; + +import java.util.Optional; +import java.util.stream.Stream; + +import static org.junit.Assert.assertEquals; + +public class CreateContainerCommandImplTest { + + @Test + public void generateMacAddressTest() { + String[][] addresses = { + {"test123.host.yahoo.com", null, "abcd:1234::1", "ee:ae:a9:de:ad:c2"}, + {"test123.host.yahoo.com", null, "abcd:1234::2", "fa:81:11:1b:ff:fb"}, + {"unique.host.yahoo.com", null, "abcd:1234::1", "96:a4:00:77:90:3b"}, + {"test123.host.yahoo.com", "10.0.0.1", null, "7e:de:b3:7c:9e:96"}, + {"test123.host.yahoo.com", "10.0.0.1", "abcd:1234::1", "6a:06:af:16:25:95"}}; + + Stream.of(addresses).forEach(address -> { + String generatedMac = CreateContainerCommandImpl.generateMACAddress( + address[0], Optional.ofNullable(address[1]), Optional.ofNullable(address[2])); + String expectedMac = address[3]; + assertEquals(expectedMac, generatedMac); + }); + } +}
\ No newline at end of file |