summaryrefslogtreecommitdiffstats
path: root/docker-api
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2017-10-06 14:51:59 +0200
committerValerij Fredriksen <valerijf@oath.com>2017-10-06 14:51:59 +0200
commit20ddb05334251717610b7db18d7c45b2666d81ae (patch)
tree093be020139466d2db3ef57808a3b37fdf50c7b1 /docker-api
parent00a1d90ea6133f519424de86976313a90b809770 (diff)
Add test
Diffstat (limited to 'docker-api')
-rw-r--r--docker-api/src/main/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImpl.java9
-rw-r--r--docker-api/src/test/java/com/yahoo/vespa/hosted/dockerapi/CreateContainerCommandImplTest.java29
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