]> source.dussan.org Git - sonarqube.git/commitdiff
Fix stability of org.sonar.server.health unit tests
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Mon, 16 Apr 2018 18:50:39 +0000 (20:50 +0200)
committerSonarTech <sonartech@sonarsource.com>
Tue, 17 Apr 2018 18:20:47 +0000 (20:20 +0200)
server/sonar-server/src/test/java/org/sonar/server/health/EsStatusClusterCheckTest.java
server/sonar-server/src/test/java/org/sonar/server/health/EsStatusNodeCheckTest.java

index 76f01cc824db304593334d4668c54dfb002aecde..cb8b00fb0f74e8282cd6cf460d6f896702d4378c 100644 (file)
  */
 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<NodeHealth> nodeHealths = randomNodeHealths();
-    EsClient esClient = Mockito.mock(EsClient.class);
-    when(esClient.prepareClusterStats()).thenThrow(new RuntimeException("Faking an exception occuring while using the EsClient"));
+    Set<NodeHealth> 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<NodeHealth> nodeHealths = randomNodeHealths();
+    Set<NodeHealth> 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<NodeHealth> 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();
   }
 
 }
index bd99f06633fee68c2b2765ef56a35a29c940b341..18d1811dca4926cd17cd44306b29dc6cd67a1593 100644 (file)
  */
 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);