From: Simon Brandhof Date: Mon, 16 Apr 2018 18:50:39 +0000 (+0200) Subject: Fix stability of org.sonar.server.health unit tests X-Git-Tag: 7.5~1356 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=86a090898e59eea528b894115a958ef893f7a3be;p=sonarqube.git Fix stability of org.sonar.server.health unit tests --- diff --git a/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusClusterCheckTest.java b/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusClusterCheckTest.java index 76f01cc824d..cb8b00fb0f7 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusClusterCheckTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusClusterCheckTest.java @@ -19,35 +19,31 @@ */ package org.sonar.server.health; +import com.google.common.collect.ImmutableSet; import java.util.Random; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import org.junit.Rule; +import org.elasticsearch.cluster.health.ClusterHealthStatus; import org.junit.Test; import org.mockito.Mockito; import org.sonar.process.cluster.health.NodeDetails; import org.sonar.process.cluster.health.NodeHealth; import org.sonar.server.es.EsClient; -import org.sonar.server.es.EsTester; import static org.apache.commons.lang.RandomStringUtils.randomAlphanumeric; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.when; public class EsStatusClusterCheckTest { - @Rule - public EsTester es = EsTester.createCustom(); - - private final Random random = new Random(); - private EsStatusClusterCheck underTest = new EsStatusClusterCheck(es.client()); + private EsClient esClient = Mockito.mock(EsClient.class, RETURNS_DEEP_STUBS); + private Random random = new Random(); + private EsStatusClusterCheck underTest = new EsStatusClusterCheck(esClient); @Test public void check_ignores_NodeHealth_arg_and_returns_RED_with_cause_if_an_exception_occurs_checking_ES_cluster_status() { - Set nodeHealths = randomNodeHealths(); - EsClient esClient = Mockito.mock(EsClient.class); - when(esClient.prepareClusterStats()).thenThrow(new RuntimeException("Faking an exception occuring while using the EsClient")); + Set nodeHealths = ImmutableSet.of(newNodeHealth(NodeHealth.Status.GREEN)); + when(esClient.prepareClusterStats()).thenThrow(new RuntimeException("Faking an exception occurring while using the EsClient")); Health health = new EsStatusClusterCheck(esClient).check(nodeHealths); @@ -57,26 +53,25 @@ public class EsStatusClusterCheckTest { @Test public void check_ignores_NodeHealth_arg_and_returns_GREEN_without_cause_if_ES_cluster_status_is_GREEN() { - Set nodeHealths = randomNodeHealths(); + Set nodeHealths = ImmutableSet.of(newNodeHealth(NodeHealth.Status.YELLOW)); + when(esClient.prepareClusterStats().get().getStatus()).thenReturn(ClusterHealthStatus.GREEN); Health health = underTest.check(nodeHealths); assertThat(health).isEqualTo(Health.GREEN); } - private Set randomNodeHealths() { - return IntStream.range(0, random.nextInt(20)) - .mapToObj(i -> NodeHealth.newNodeHealthBuilder() - .setStatus(NodeHealth.Status.values()[random.nextInt(NodeHealth.Status.values().length)]) - .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()) + 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()) - .collect(Collectors.toSet()); + .build(); } } diff --git a/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusNodeCheckTest.java b/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusNodeCheckTest.java index bd99f06633f..18d1811dca4 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusNodeCheckTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/health/EsStatusNodeCheckTest.java @@ -19,25 +19,23 @@ */ package org.sonar.server.health; -import org.junit.Rule; +import org.elasticsearch.cluster.health.ClusterHealthStatus; import org.junit.Test; import org.mockito.Mockito; import org.sonar.server.es.EsClient; -import org.sonar.server.es.EsTester; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class EsStatusNodeCheckTest { - @Rule - public EsTester es = EsTester.createCustom(); - - private EsStatusNodeCheck underTest = new EsStatusNodeCheck(es.client()); + private EsClient esClient = mock(EsClient.class, Mockito.RETURNS_DEEP_STUBS); + private EsStatusNodeCheck underTest = new EsStatusNodeCheck(esClient); @Test public void check_ignores_NodeHealth_arg_and_returns_RED_with_cause_if_an_exception_occurs_checking_ES_cluster_status() { - EsClient esClient = Mockito.mock(EsClient.class); + EsClient esClient = mock(EsClient.class); when(esClient.prepareClusterStats()).thenThrow(new RuntimeException("Faking an exception occurring while using the EsClient")); Health health = new EsStatusNodeCheck(esClient).check(); @@ -48,6 +46,8 @@ public class EsStatusNodeCheckTest { @Test public void check_returns_GREEN_without_cause_if_ES_cluster_status_is_GREEN() { + when(esClient.prepareClusterStats().get().getStatus()).thenReturn(ClusterHealthStatus.GREEN); + Health health = underTest.check(); assertThat(health).isEqualTo(Health.GREEN);