diff options
Diffstat (limited to 'config-provisioning/src/test/java/com/yahoo/config/provision/ProvisionInfoTest.java')
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/ProvisionInfoTest.java | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/ProvisionInfoTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/ProvisionInfoTest.java new file mode 100644 index 00000000000..b4239f2b3bd --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/ProvisionInfoTest.java @@ -0,0 +1,74 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +import org.junit.Test; + +import java.io.IOException; +import java.util.Collections; +import java.util.LinkedHashSet; +import java.util.Optional; +import java.util.Set; + +import static org.junit.Assert.assertEquals; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +/** + * @author lulf + * @since 5.12 + */ +public class ProvisionInfoTest { + + private final HostSpec h1 = new HostSpec("host1", Optional.empty()); + private final HostSpec h2 = new HostSpec("host2", Optional.empty()); + private final HostSpec h3 = new HostSpec("host3", Optional.of(ClusterMembership.from("container/test/0", Optional.empty()))); + private final HostSpec h4 = new HostSpec("host4", Optional.of(ClusterMembership.from("container/test/1", Optional.of("dockerImg")))); + + @Test + public void testProvisionInfoSerialization() throws IOException { + Set<HostSpec> hosts = new LinkedHashSet<>(); + hosts.add(h1); + hosts.add(h2); + hosts.add(h3); + hosts.add(h4); + ProvisionInfo info = ProvisionInfo.withHosts(hosts); + assertProvisionInfo(info); + } + + @Test + public void testProvisionInfoMerging() throws IOException { + Set<HostSpec> hostsA = new LinkedHashSet<>(Collections.singleton(h1)); + Set<HostSpec> hostsB = new LinkedHashSet<>(); + hostsB.add(h2); + hostsB.add(h3); + hostsB.add(h4); + + ProvisionInfo infoA = ProvisionInfo.withHosts(hostsA); + ProvisionInfo infoB = ProvisionInfo.withHosts(hostsB); + assertProvisionInfo(infoA.merge(infoB)); + assertProvisionInfo(infoB.merge(infoA)); + } + + private void assertProvisionInfo(ProvisionInfo info) throws IOException { + ProvisionInfo serializedInfo = ProvisionInfo.fromJson(info.toJson()); + assertEquals(info.getHosts().size(), serializedInfo.getHosts().size()); + assertTrue(serializedInfo.getHosts().contains(h1)); + assertTrue(serializedInfo.getHosts().contains(h2)); + assertTrue(serializedInfo.getHosts().contains(h3)); + assertTrue(serializedInfo.getHosts().contains(h4)); + assertTrue(!getHost(h1.hostname(), serializedInfo.getHosts()).membership().isPresent()); + assertEquals("container/test/0", getHost(h3.hostname(), serializedInfo.getHosts()).membership().get().stringValue()); + assertEquals("dockerImg", getHost(h4.hostname(), serializedInfo.getHosts()).membership().get().cluster().dockerImage().get()); + } + + private HostSpec getHost(String hostname, Set<HostSpec> hosts) { + for (HostSpec host : hosts) + if (host.hostname().equals(hostname)) + return host; + throw new IllegalArgumentException("No host " + hostname + " is present"); + } + +} |