View Javadoc
1   package it.com.atlassian.plugin.refimpl;
2   
3   import com.atlassian.healthcheck.checks.HealthCheckConstants;
4   import com.atlassian.healthcheck.checks.plugin.PluginHealthCheckConstants;
5   import org.codehaus.jackson.JsonNode;
6   import org.junit.Test;
7   
8   import java.util.List;
9   
10  import static com.atlassian.healthcheck.checks.HealthCheckConstants.HEALTH_CHECK_IS_HEALTHY_FIELD;
11  import static com.atlassian.healthcheck.checks.HealthCheckConstants.HEALTH_CHECK_NAME_FIELD;
12  import static com.google.common.collect.Lists.newArrayList;
13  import static org.hamcrest.MatcherAssert.assertThat;
14  import static org.hamcrest.Matchers.containsInAnyOrder;
15  import static org.hamcrest.Matchers.empty;
16  
17  /**
18   * Check all the healthchecks from atlassian-healthcheck plugin pass.
19   * <p>
20   * See similar com.atlassian.confluence.HealthCheckAcceptanceTest in Confluence.
21   *
22   * @see TestPluginStartup for tests against some other specific healthchecks
23   */
24  public class TestHealthChecks {
25  
26      @Test
27      public void testExpectedHealthchecksPresent() {
28          JsonNode statusArray = HealthCheckTestUtils.getHealthChecksStatusArray();
29  
30          List<String> checkNames = newArrayList();
31          for (JsonNode status : statusArray) {
32              checkNames.add(status.get(HEALTH_CHECK_NAME_FIELD).asText());
33          }
34  
35          assertThat("Some of the expected healthchecks were not present."
36                      + " Check that plugins containing them have initialised ok,"
37                      + " or whether their <health-check>'s name field has been changed",
38                  checkNames,
39                  containsInAnyOrder(
40                          HealthCheckConstants.HOST_APPLICATION_STATUS_HEALTH_CHECK,
41                          PluginHealthCheckConstants.DISABLED_PLUGINS_HEALTHCHECK,
42                          PluginHealthCheckConstants.DISABLED_PLUGIN_MODULES_HEALTHCHECK,
43                          PluginHealthCheckConstants.DISABLED_BY_DEFAULT_PLUGINS_HEALTHCHECK,
44                          PluginHealthCheckConstants.DISABLED_BY_DEFAULT_PLUGIN_MODULES_HEALTHCHECK));
45      }
46  
47      @Test
48      public void testAllHealthChecksPass() throws Exception {
49          JsonNode statusArray = HealthCheckTestUtils.getHealthChecksStatusArray();
50  
51          List<JsonNode> errors = newArrayList();
52          for (JsonNode status : statusArray) {
53              if (!status.get(HEALTH_CHECK_IS_HEALTHY_FIELD).asBoolean()) {
54                  errors.add(status);
55              }
56          }
57  
58          assertThat("All healthchecks should pass, but these ones failed: ", errors, empty());
59      }
60  
61  }