@Test public void class_is_serializable_with_causes() throws IOException, ClassNotFoundException { NodeHealth source = testSupport.randomBuilder(1).build(); byte[] bytes = NodeDetailsTestSupport.serialize(source); NodeHealth underTest = (NodeHealth) new ObjectInputStream(new ByteArrayInputStream(bytes)).readObject(); assertThat(underTest).isEqualTo(source); }
@Test public void verify_getters() { NodeDetails nodeDetails = testSupport.randomNodeDetails(); NodeHealth.Builder builder = builderUnderTest .setStatus(randomStatus) .setDetails(nodeDetails); String[] causes = IntStream.range(0, random.nextInt(10)).mapToObj(i -> randomAlphanumeric(4)).toArray(String[]::new); Arrays.stream(causes).forEach(builder::addCause); NodeHealth underTest = builder.build(); assertThat(underTest.getStatus()).isEqualTo(randomStatus); assertThat(underTest.getDetails()).isEqualTo(nodeDetails); assertThat(underTest.getCauses()).containsOnly(causes); }
@Test public void equals_is_based_on_content() { NodeHealth.Builder builder = testSupport.randomBuilder(); NodeHealth underTest = builder.build(); assertThat(underTest).isEqualTo(underTest); assertThat(builder.build()) .isEqualTo(underTest) .isNotSameAs(underTest); assertThat(underTest).isNotEqualTo(null); assertThat(underTest).isNotEqualTo(new Object()); }
private NodeHealth randomNodeHealth(NodeDetails.Type type, String name, String host, int port, long started) { NodeHealth.Builder builder = newNodeHealthBuilder() .setStatus(NodeHealth.Status.values()[random.nextInt(NodeHealth.Status.values().length)]); IntStream.range(0, random.nextInt(4)).mapToObj(i -> randomAlphabetic(5)).forEach(builder::addCause); return builder.setDetails( newNodeDetailsBuilder() .setType(type) .setName(name) .setHost(host) .setPort(port) .setStartedAt(started) .build()) .build(); }
NodeHealth randomNodeHealth() { return randomBuilder().build(); }
private NodeHealth randomNodeHealth() { NodeHealth.Builder builder = newNodeHealthBuilder() .setStatus(NodeHealth.Status.values()[random.nextInt(NodeHealth.Status.values().length)]); IntStream.range(0, random.nextInt(4)).mapToObj(i -> randomAlphabetic(5)).forEach(builder::addCause); return builder.setDetails( newNodeDetailsBuilder() .setType(random.nextBoolean() ? NodeDetails.Type.APPLICATION : NodeDetails.Type.SEARCH) .setName(randomAlphanumeric(3)) .setHost(randomAlphanumeric(4)) .setPort(1 + random.nextInt(3)) .setStartedAt(1 + random.nextInt(23)) .build()) .build(); }
private NodeHealth randomNodeHealth() { return newNodeHealthBuilder() .setStatus(NodeHealth.Status.values()[random.nextInt(NodeHealth.Status.values().length)]) .setDetails( NodeDetails.newNodeDetailsBuilder() .setType(random.nextBoolean() ? NodeDetails.Type.SEARCH : NodeDetails.Type.APPLICATION) .setName(randomAlphanumeric(3)) .setHost(randomAlphanumeric(4)) .setPort(1 + random.nextInt(344)) .setStartedAt(1 + random.nextInt(999)) .build()) .build(); }
private NodeHealth randomNodeHealth() { return newNodeHealthBuilder() .setStatus(NodeHealth.Status.values()[random.nextInt(NodeHealth.Status.values().length)]) .setDetails(newNodeDetailsBuilder() .setType(random.nextBoolean() ? NodeDetails.Type.SEARCH : NodeDetails.Type.APPLICATION) .setName(randomAlphanumeric(30)) .setHost(randomAlphanumeric(10)) .setPort(1 + random.nextInt(666)) .setStartedAt(1 + random.nextInt(852)) .build()) .build(); } }
@Override public NodeHealth get() { NodeHealth.Builder builder = NodeHealth.newNodeHealthBuilder(); if (clusterAppState.isOperational(ProcessId.ELASTICSEARCH, true)) { builder.setStatus(NodeHealth.Status.GREEN); } else { builder.setStatus(NodeHealth.Status.RED) .addCause("Elasticsearch is not operational"); } return builder .setDetails(nodeDetails) .build(); }
@Override public NodeHealth get() { Health nodeHealth = healthChecker.checkNode(); this.nodeHealthBuilder .clearCauses() .setStatus(NodeHealth.Status.valueOf(nodeHealth.getStatus().name())); nodeHealth.getCauses().forEach(this.nodeHealthBuilder::addCause); return this.nodeHealthBuilder .setDetails(nodeDetails) .build(); } }
private NodeHealth newNodeHealth(NodeHealth.Status status) { return NodeHealth.newNodeHealthBuilder() .setStatus(status) .setDetails(NodeDetails.newNodeDetailsBuilder() .setType(random.nextBoolean() ? NodeDetails.Type.APPLICATION : NodeDetails.Type.SEARCH) .setName(randomAlphanumeric(23)) .setHost(randomAlphanumeric(23)) .setPort(1 + random.nextInt(96)) .setStartedAt(1 + random.nextInt(966)) .build()) .build(); }
@Test public void build_throws_NPE_if_details_is_null() { builderUnderTest.setStatus(randomStatus); expectedException.expect(NullPointerException.class); expectedException.expectMessage("details can't be null"); builderUnderTest.build(); }
private NodeHealth appNodeHealth(NodeDetails.Type type, NodeHealth.Status status) { return NodeHealth.newNodeHealthBuilder() .setStatus(status) .setDetails(NodeDetails.newNodeDetailsBuilder() .setType(type) .setHost(randomAlphanumeric(32)) .setName(randomAlphanumeric(32)) .setPort(1 + random.nextInt(88)) .setStartedAt(1 + random.nextInt(54)) .build()) .build(); }
private NodeHealth randomNodeHealth() { return newNodeHealthBuilder() .setStatus(NodeHealth.Status.values()[random.nextInt(NodeHealth.Status.values().length)]) .setDetails(newNodeDetailsBuilder() .setType(random.nextBoolean() ? NodeDetails.Type.APPLICATION : NodeDetails.Type.SEARCH) .setName(randomAlphanumeric(10)) .setHost(randomAlphanumeric(5)) .setPort(1 + random.nextInt(333)) .setStartedAt(1 + random.nextInt(444)) .build()) .build(); }
private static NodeHealth newNodeHealth(String nodeName) { return newNodeHealthBuilder() .setStatus(NodeHealth.Status.YELLOW) .setDetails(randomNodeDetails(nodeName)) .build(); }
@Test public void verify_toString() { NodeDetails nodeDetails = testSupport.randomNodeDetails(); String cause = randomAlphanumeric(4); NodeHealth.Builder builder = builderUnderTest .setStatus(randomStatus) .setDetails(nodeDetails) .addCause(cause); NodeHealth underTest = builder.build(); assertThat(underTest.toString()) .isEqualTo("NodeHealth{status=" + randomStatus + ", causes=[" + cause + "], details=" + nodeDetails + "}"); }
@Test public void class_is_serializable_without_causes() throws IOException, ClassNotFoundException { NodeHealth.Builder builder = newNodeHealthBuilder() .setStatus(randomStatus) .setDetails(testSupport.randomNodeDetails()); NodeHealth source = builder.build(); byte[] bytes = NodeDetailsTestSupport.serialize(source); NodeHealth underTest = (NodeHealth) new ObjectInputStream(new ByteArrayInputStream(bytes)).readObject(); assertThat(underTest).isEqualTo(source); }
@Test public void clearClauses_clears_clauses_of_builder() { NodeHealth.Builder underTest = testSupport.randomBuilder(); NodeHealth original = underTest .addCause(randomAlphanumeric(3)) .build(); underTest.clearCauses(); NodeHealth second = underTest.build(); assertThat(second.getStatus()).isEqualTo(original.getStatus()); assertThat(second.getDetails()).isEqualTo(original.getDetails()); assertThat(second.getCauses()).isEmpty(); }
@Test public void build_throws_NPE_if_status_is_null() { expectedException.expect(NullPointerException.class); expectedException.expectMessage("status can't be null"); builderUnderTest.build(); }