Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -273,24 +273,24 @@ private void testSelectStampede(final Predicate<TestLoadBalancedConnection> sele

@Test
void roundRobining() throws Exception {
assumeTrue(isRoundRobin());

sendServiceDiscoveryEvents(upEvent("address-1"));
sendServiceDiscoveryEvents(upEvent("address-2"));
final List<String> connections = awaitIndefinitely((lb.selectConnection(any(), null)
.concat(lb.selectConnection(any(), null))
.concat(lb.selectConnection(any(), null))
.concat(lb.selectConnection(any(), null))
.concat(lb.selectConnection(any(), null))
.map(TestLoadBalancedConnection::address)));

assertThat(connections, contains("address-1", "address-2", "address-1", "address-2", "address-1"));

assertConnectionCount(lb.usedAddresses(),
connectionsCount("address-1", 1),
connectionsCount("address-2", 1));

assertThat(connectionsCreated, hasSize(2));
if (isRoundRobin()) {
sendServiceDiscoveryEvents(upEvent("address-1"));
sendServiceDiscoveryEvents(upEvent("address-2"));
final List<String> connections = awaitIndefinitely((lb.selectConnection(any(), null)
.concat(lb.selectConnection(any(), null))
.concat(lb.selectConnection(any(), null))
.concat(lb.selectConnection(any(), null))
.concat(lb.selectConnection(any(), null))
.map(TestLoadBalancedConnection::address)));

assertThat(connections, contains("address-1", "address-2", "address-1", "address-2", "address-1"));

assertConnectionCount(lb.usedAddresses(),
connectionsCount("address-1", 1),
connectionsCount("address-2", 1));

assertThat(connectionsCreated, hasSize(2));
}
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@

import java.util.AbstractMap;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
Expand All @@ -52,6 +53,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.both;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.emptyIterable;
import static org.hamcrest.Matchers.hasProperty;
import static org.hamcrest.Matchers.hasSize;
Expand Down Expand Up @@ -169,19 +171,16 @@ static <T> void assertConnectionCount(
.collect(Collectors.toList())
.toArray(new Matcher[] {});
final Matcher<Iterable<? extends T>> iterableMatcher =
addressAndConnCount.length == 0 ? emptyIterable() : contains(args);
addressAndConnCount.length == 0 ? emptyIterable() : containsInAnyOrder(args);
assertThat(addresses, iterableMatcher);
}

<T> void assertAddresses(Iterable<T> addresses, String... address) {
@SuppressWarnings("unchecked")
final Matcher<? super T>[] args = (Matcher<? super T>[]) Arrays.stream(address)
.map(a -> hasProperty("key", is(a)))
.collect(Collectors.toList())
.toArray(new Matcher[] {});
final Matcher<Iterable<? extends T>> iterableMatcher =
address.length == 0 ? emptyIterable() : contains(args);
assertThat(addresses, iterableMatcher);
<T extends Map.Entry<String, ?>> void assertAddresses(Iterable<T> addresses, String... address) {
List<String> actualKeys = new ArrayList<>();
for (T item : addresses) {
actualKeys.add(item.getKey());
}
assertThat(actualKeys, containsInAnyOrder(address));
}

Map.Entry<String, Integer> connectionsCount(String addr, int count) {
Expand Down