public static NodeState getUnavailableNodeState(String endpoint){ return new NodeState( NodeConnectivity.unavailable(endpoint), new HeartbeatTimestamp(Layout.INVALID_EPOCH, INVALID_HEARTBEAT_COUNTER), SequencerMetrics.UNKNOWN ); }
private NodeState unavailableNodeState(String endpoint) { return new NodeState( unavailable(endpoint), new HeartbeatTimestamp(Layout.INVALID_EPOCH, 0), SequencerMetrics.UNKNOWN ); } }
@Test public void testFindFullyConnectedResponsiveNodes() { ClusterGraph graph = cluster( "a", connectivity("a", ImmutableMap.of("a", OK, "b", FAILED, "c", OK)), unavailable("b"), connectivity("c", ImmutableMap.of("a", OK, "b", FAILED, "c", OK)) ); graph = graph.toSymmetric(); Optional<NodeRank> responsiveNode = graph.findFullyConnectedNode("c", Collections.singletonList("b")); assertTrue(responsiveNode.isPresent()); assertEquals(new NodeRank("c", 2), responsiveNode.get()); responsiveNode = graph.findFullyConnectedNode("c", Collections.singletonList("c")); assertTrue(responsiveNode.isPresent()); assertEquals("c", responsiveNode.get().getEndpoint()); assertEquals(2, responsiveNode.get().getNumConnections()); graph = cluster( "a", connectivity("a", ImmutableMap.of("a", OK, "b", FAILED, "c", OK)), connectivity("b", ImmutableMap.of("a", FAILED, "b", OK, "c", FAILED)), connectivity("c", ImmutableMap.of("a", OK, "b", FAILED, "c", OK)) ); graph = graph.toSymmetric(); responsiveNode = graph.findFullyConnectedNode("c", Collections.singletonList("b")); assertTrue(responsiveNode.isPresent()); assertEquals(new NodeRank("c", 2), responsiveNode.get()); }
@Test public void testToSymmetricForThreeNodesWithUnavailableNodeB() { NodeConnectivity a = connectivity("a", ImmutableMap.of("a", OK, "b", FAILED, "c", FAILED)); NodeConnectivity b = unavailable("b"); NodeConnectivity c = connectivity("c", ImmutableMap.of("a", OK, "b", OK, "c", OK)); ClusterGraph graph = cluster("a", a, b, c); ClusterGraph symmetric = graph.toSymmetric(); NodeConnectivity symmetricNodeA = symmetric.getNodeConnectivity("a"); assertEquals(OK, symmetricNodeA.getConnectionStatus("a")); assertEquals(FAILED, symmetricNodeA.getConnectionStatus("b")); assertEquals(FAILED, symmetricNodeA.getConnectionStatus("c")); assertThatThrownBy(() -> symmetric.getNodeConnectivity("b").getConnectionStatus("a")) .isInstanceOf(IllegalStateException.class); assertEquals(FAILED, symmetric.getNodeConnectivity("c").getConnectionStatus("a")); assertEquals(OK, symmetric.getNodeConnectivity("c").getConnectionStatus("b")); assertEquals(OK, symmetric.getNodeConnectivity("c").getConnectionStatus("c")); }