Search in sources :

Example 6 with ClusterHealth

use of org.sonar.server.health.ClusterHealth in project sonarqube by SonarSource.

the class HealthActionTest method response_contains_status_and_causes_from_HealthChecker_checkCluster_when_standalone.

@Test
public void response_contains_status_and_causes_from_HealthChecker_checkCluster_when_standalone() {
    authenticateWithRandomMethod();
    Health.Status randomStatus = Health.Status.values()[random.nextInt(Health.Status.values().length)];
    String[] causes = IntStream.range(0, random.nextInt(33)).mapToObj(i -> randomAlphanumeric(4)).toArray(String[]::new);
    Health.Builder healthBuilder = newHealthCheckBuilder().setStatus(randomStatus);
    Arrays.stream(causes).forEach(healthBuilder::addCause);
    when(webServer.isStandalone()).thenReturn(false);
    when(healthChecker.checkCluster()).thenReturn(new ClusterHealth(healthBuilder.build(), emptySet()));
    System.HealthResponse clusterHealthResponse = underTest.newRequest().executeProtobuf(System.HealthResponse.class);
    assertThat(clusterHealthResponse.getHealth().name()).isEqualTo(randomStatus.name());
    assertThat(clusterHealthResponse.getCausesList()).extracting(System.Cause::getMessage).containsOnly(causes);
}
Also used : IntStream(java.util.stream.IntStream) ArgumentMatchers.any(org.mockito.ArgumentMatchers.any) Arrays(java.util.Arrays) RandomStringUtils.randomAlphanumeric(org.apache.commons.lang.RandomStringUtils.randomAlphanumeric) Date(java.util.Date) WebServer(org.sonar.server.platform.WebServer) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) GREEN(org.sonar.server.health.Health.GREEN) Random(java.util.Random) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) NodeHealth.newNodeHealthBuilder(org.sonar.process.cluster.health.NodeHealth.newNodeHealthBuilder) Health.newHealthCheckBuilder(org.sonar.server.health.Health.newHealthCheckBuilder) ThrowingCallable(org.assertj.core.api.ThrowableAssert.ThrowingCallable) WebService(org.sonar.api.server.ws.WebService) Collections.singleton(java.util.Collections.singleton) Assertions.assertThatThrownBy(org.assertj.core.api.Assertions.assertThatThrownBy) NodeDetails(org.sonar.process.cluster.health.NodeDetails) HealthChecker(org.sonar.server.health.HealthChecker) Health(org.sonar.server.health.Health) DateUtils.formatDateTime(org.sonar.api.utils.DateUtils.formatDateTime) RandomStringUtils(org.apache.commons.lang.RandomStringUtils) UserSessionRule(org.sonar.server.tester.UserSessionRule) ImmutableSet(com.google.common.collect.ImmutableSet) Collections.emptySet(java.util.Collections.emptySet) RandomStringUtils.randomAlphabetic(org.apache.commons.lang.RandomStringUtils.randomAlphabetic) TestRequest(org.sonar.server.ws.TestRequest) JsonAssert.assertJson(org.sonar.test.JsonAssert.assertJson) Test(org.junit.Test) Mockito.when(org.mockito.Mockito.when) WsActionTester(org.sonar.server.ws.WsActionTester) System(org.sonarqube.ws.System) ClusterHealth(org.sonar.server.health.ClusterHealth) NodeDetails.newNodeDetailsBuilder(org.sonar.process.cluster.health.NodeDetails.newNodeDetailsBuilder) List(java.util.List) Rule(org.junit.Rule) SystemPasscode(org.sonar.server.user.SystemPasscode) DateUtils.parseDateTime(org.sonar.api.utils.DateUtils.parseDateTime) ForbiddenException(org.sonar.server.exceptions.ForbiddenException) NodeHealth(org.sonar.process.cluster.health.NodeHealth) Collections(java.util.Collections) TestResponse(org.sonar.server.ws.TestResponse) Mockito.mock(org.mockito.Mockito.mock) Health(org.sonar.server.health.Health) ClusterHealth(org.sonar.server.health.ClusterHealth) NodeHealth(org.sonar.process.cluster.health.NodeHealth) System(org.sonarqube.ws.System) ClusterHealth(org.sonar.server.health.ClusterHealth) Test(org.junit.Test)

Example 7 with ClusterHealth

use of org.sonar.server.health.ClusterHealth in project sonarqube by SonarSource.

the class HealthActionTest method response_contains_information_of_nodes_when_clustered.

@Test
public void response_contains_information_of_nodes_when_clustered() {
    authenticateWithRandomMethod();
    NodeHealth nodeHealth = randomNodeHealth();
    when(webServer.isStandalone()).thenReturn(false);
    when(healthChecker.checkCluster()).thenReturn(new ClusterHealth(GREEN, singleton(nodeHealth)));
    System.HealthResponse response = underTest.newRequest().executeProtobuf(System.HealthResponse.class);
    assertThat(response.getNodes().getNodesList()).hasSize(1);
    System.Node node = response.getNodes().getNodesList().iterator().next();
    assertThat(node.getHealth().name()).isEqualTo(nodeHealth.getStatus().name());
    assertThat(node.getCausesList()).extracting(System.Cause::getMessage).containsOnly(nodeHealth.getCauses().toArray(new String[0]));
    assertThat(node.getName()).isEqualTo(nodeHealth.getDetails().getName());
    assertThat(node.getHost()).isEqualTo(nodeHealth.getDetails().getHost());
    assertThat(node.getPort()).isEqualTo(nodeHealth.getDetails().getPort());
    assertThat(node.getStartedAt()).isEqualTo(formatDateTime(nodeHealth.getDetails().getStartedAt()));
    assertThat(node.getType().name()).isEqualTo(nodeHealth.getDetails().getType().name());
}
Also used : System(org.sonarqube.ws.System) NodeHealth(org.sonar.process.cluster.health.NodeHealth) ClusterHealth(org.sonar.server.health.ClusterHealth) Test(org.junit.Test)

Aggregations

ClusterHealth (org.sonar.server.health.ClusterHealth)7 Test (org.junit.Test)4 NodeHealth (org.sonar.process.cluster.health.NodeHealth)4 Health (org.sonar.server.health.Health)4 System (org.sonarqube.ws.System)4 WebService (org.sonar.api.server.ws.WebService)3 DateUtils.formatDateTime (org.sonar.api.utils.DateUtils.formatDateTime)3 NodeDetails (org.sonar.process.cluster.health.NodeDetails)3 HealthChecker (org.sonar.server.health.HealthChecker)3 ImmutableSet (com.google.common.collect.ImmutableSet)2 ArrayList (java.util.ArrayList)2 Arrays (java.util.Arrays)2 Collections (java.util.Collections)2 Collections.emptySet (java.util.Collections.emptySet)2 Collections.singleton (java.util.Collections.singleton)2 Date (java.util.Date)2 HashSet (java.util.HashSet)2 List (java.util.List)2 Random (java.util.Random)2 IntStream (java.util.stream.IntStream)2