From 1486476d26c5dc8fb0eadacb3d656ba567846516 Mon Sep 17 00:00:00 2001 From: Jordan Halterman Date: Wed, 21 Jan 2015 00:46:39 -0800 Subject: [PATCH] Add passive members to collections test cluster. --- .../copycat/collections/AsyncMapTest.java | 4 +- .../copycat/collections/TestCluster.java | 52 ++++++++++++++----- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/collections/src/test/java/net/kuujo/copycat/collections/AsyncMapTest.java b/collections/src/test/java/net/kuujo/copycat/collections/AsyncMapTest.java index 899272b350..3feaeb7358 100644 --- a/collections/src/test/java/net/kuujo/copycat/collections/AsyncMapTest.java +++ b/collections/src/test/java/net/kuujo/copycat/collections/AsyncMapTest.java @@ -34,7 +34,7 @@ public void testAsyncMapPutGet() throws Throwable { TestCluster> cluster = TestCluster.of((uri, config) -> AsyncMap.create("test", uri, config, new AsyncMapConfig().withLog(new BufferedLog()))); cluster.open().thenRun(this::resume); await(5000); - AsyncMap map = cluster.resources().get(0); + AsyncMap map = cluster.activeResources().iterator().next(); map.put("foo", "Hello world!").thenRun(() -> { map.get("foo").thenAccept(result -> { threadAssertEquals(result, "Hello world!"); @@ -51,7 +51,7 @@ public void testAsyncMapPutRemove() throws Throwable { TestCluster> cluster = TestCluster.of((uri, config) -> AsyncMap.create("test", uri, config, new AsyncMapConfig().withLog(new BufferedLog()))); cluster.open().thenRun(this::resume); await(5000); - AsyncMap map = cluster.resources().get(0); + AsyncMap map = cluster.activeResources().iterator().next(); map.put("foo", "Hello world!").thenRun(() -> { map.get("foo").thenAccept(r1 -> { threadAssertEquals(r1, "Hello world!"); diff --git a/collections/src/test/java/net/kuujo/copycat/collections/TestCluster.java b/collections/src/test/java/net/kuujo/copycat/collections/TestCluster.java index 8e94174a3e..22ec87c2be 100644 --- a/collections/src/test/java/net/kuujo/copycat/collections/TestCluster.java +++ b/collections/src/test/java/net/kuujo/copycat/collections/TestCluster.java @@ -19,6 +19,7 @@ import net.kuujo.copycat.cluster.ClusterConfig; import net.kuujo.copycat.protocol.LocalProtocol; +import java.util.Arrays; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.function.BiFunction; @@ -30,29 +31,45 @@ * @author Jordan Halterman */ public class TestCluster> { - private final List resources; + private final List activeResources; + private final List passiveResources; - private TestCluster(List resources) { - this.resources = resources; + private TestCluster(List activeResources, List passiveResources) { + this.activeResources = activeResources; + this.passiveResources = passiveResources; } /** * Creates a test cluster for the given resource factory. */ + @SuppressWarnings("all") public static > TestCluster of(BiFunction factory) { ClusterConfig cluster = new ClusterConfig() .withProtocol(new LocalProtocol()); for (int i = 1; i <= 3; i++) { cluster.addMember(String.format("local://test%d", i)); } - return new TestCluster(cluster.getMembers().stream().collect(Collectors.mapping(uri -> factory.apply(uri, cluster), Collectors.toList()))); + List activeResources = cluster.getMembers().stream().collect(Collectors.mapping(uri -> factory.apply(uri, cluster), Collectors.toList())); + List passiveResources = Arrays.asList("local://test4", "local://test5").stream().collect(Collectors.mapping(uri -> factory.apply(uri, cluster), Collectors.toList())); + return new TestCluster(activeResources, passiveResources); } /** - * Returns a list of cluster resources. + * Returns a list of active cluster resources. + * + * @return A list of active cluster resources. */ - public List resources() { - return resources; + public List activeResources() { + return activeResources; + } + + /** + * Returns a list of passive cluster resources. + * + * @return A list of passive cluster resources. + */ + public List passiveResources() { + return passiveResources; } /** @@ -60,10 +77,13 @@ public List resources() { */ @SuppressWarnings("unchecked") public CompletableFuture open() { - CompletableFuture[] futures = new CompletableFuture[resources.size()]; - for (int i = 0; i < resources.size(); i++) { - T resource = resources.get(i); - futures[i] = resources.get(i).open().thenRun(() -> System.out.println(resource.cluster().member().uri() + " started successfully!")).thenApply(v -> null); + CompletableFuture[] futures = new CompletableFuture[activeResources.size() + passiveResources.size()]; + int i = 0; + for (T resource : activeResources) { + futures[i++] = resource.open().thenRun(() -> System.out.println(resource.cluster().member().uri() + " started successfully!")).thenApply(v -> null); + } + for (T resource : passiveResources) { + futures[i++] = resource.open().thenRun(() -> System.out.println(resource.cluster().member().uri() + " started successfully!")).thenApply(v -> null); } return CompletableFuture.allOf(futures); } @@ -73,9 +93,13 @@ public CompletableFuture open() { */ @SuppressWarnings("unchecked") public CompletableFuture close() { - CompletableFuture[] futures = new CompletableFuture[resources.size()]; - for (int i = 0; i < resources.size(); i++) { - futures[i] = resources.get(i).close(); + CompletableFuture[] futures = new CompletableFuture[activeResources.size() + passiveResources.size()]; + int i = 0; + for (T resource : passiveResources) { + futures[i++] = resource.close(); + } + for (T resource : activeResources) { + futures[i++] = resource.close(); } return CompletableFuture.allOf(futures); }