Migrate HealthCheck.StatusSummary to a Java record

Change-Id: I7fdaf8d05380b73c68fd621c4dec4542d63123f4
diff --git a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/api/HealthCheckStatusEndpoint.java b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/api/HealthCheckStatusEndpoint.java
index ed16539..58ab01b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/api/HealthCheckStatusEndpoint.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/api/HealthCheckStatusEndpoint.java
@@ -50,14 +50,14 @@
     }
     HealthCheck.StatusSummary globalHealthCheckStatus = healthChecks.run();
 
-    Map<String, Object> result = globalHealthCheckStatus.subChecks;
-    result.put("ts", globalHealthCheckStatus.ts);
-    result.put("elapsed", globalHealthCheckStatus.elapsed);
+    Map<String, Object> result = globalHealthCheckStatus.subChecks();
+    result.put("ts", globalHealthCheckStatus.ts());
+    result.put("elapsed", globalHealthCheckStatus.elapsed());
     return Response.withStatusCode(getHTTPResultCode(globalHealthCheckStatus), result);
   }
 
   private int getHTTPResultCode(HealthCheck.StatusSummary checkStatus) {
-    return checkStatus.result == Result.FAILED
+    return checkStatus.result() == Result.FAILED
         ? HttpServletResponse.SC_INTERNAL_SERVER_ERROR
         : HttpServletResponse.SC_OK;
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/GlobalHealthCheck.java b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/GlobalHealthCheck.java
index 4e4cef7..8112896 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/GlobalHealthCheck.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/GlobalHealthCheck.java
@@ -93,7 +93,7 @@
 
   @Override
   protected Result doCheck() {
-    return run().result;
+    return run().result();
   }
 
   public static boolean hasAnyFailureOnResults(Map<String, MemoizedStatusSummary> results) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/HealthCheck.java b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/HealthCheck.java
index db07320..4a26f02 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/HealthCheck.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/healthcheck/check/HealthCheck.java
@@ -36,24 +36,13 @@
     DISABLED;
   }
 
-  public class StatusSummary {
+  public record StatusSummary(Result result, long ts, long elapsed, Map<String, Object> subChecks) {
     public static final StatusSummary INITIAL_STATUS =
         new StatusSummary(Result.PASSED, System.currentTimeMillis(), 0L, Collections.emptyMap());
-    public final Result result;
-    public final long ts;
-    public final long elapsed;
-    public final transient Map<String, Object> subChecks;
 
     public static final Set<Result> failingResults =
         new HashSet<>(Arrays.asList(Result.FAILED, Result.TIMEOUT));
 
-    public StatusSummary(Result result, long ts, long elapsed, Map<String, Object> subChecks) {
-      this.result = result;
-      this.ts = ts;
-      this.elapsed = elapsed;
-      this.subChecks = subChecks;
-    }
-
     public Boolean isFailure() {
       return failingResults.contains(this.result);
     }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ActiveWorkersCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ActiveWorkersCheckTest.java
index 5c57004..4ca7d82 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ActiveWorkersCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ActiveWorkersCheckTest.java
@@ -42,7 +42,7 @@
     Injector injector = testInjector(new TestModule(new Config(), metricRegistry));
 
     ActiveWorkersCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -55,7 +55,7 @@
     Injector injector = testInjector(new TestModule(gerritConfig, metricRegistry));
 
     ActiveWorkersCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -69,7 +69,7 @@
     Injector injector = testInjector(new TestModule(gerritConfig, metricRegistry));
 
     ActiveWorkersCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(Result.FAILED);
   }
 
   @Test
@@ -85,7 +85,7 @@
     HealthCheckConfig healthCheckConfig =
         new HealthCheckConfig("[healthcheck \"" + ACTIVEWORKERS + "\"]\n" + "  threshold = 50");
     ActiveWorkersCheck check = createCheck(injector, healthCheckConfig);
-    assertThat(check.run().result).isEqualTo(Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(Result.FAILED);
   }
 
   @Test
@@ -101,7 +101,7 @@
     HealthCheckConfig healthCheckConfig =
         new HealthCheckConfig("[healthcheck \"" + ACTIVEWORKERS + "\"]\n" + "  threshold = 50");
     ActiveWorkersCheck check = createCheck(injector, healthCheckConfig);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -122,7 +122,7 @@
     Injector injector = testInjector(new TestModule(gerritConfig, metricRegistry));
 
     ActiveWorkersCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(Result.FAILED);
   }
 
   private Injector testInjector(AbstractModule testModule) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/BlockedThreadsCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/BlockedThreadsCheckTest.java
index 737b4a7..f1f6fbb 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/BlockedThreadsCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/BlockedThreadsCheckTest.java
@@ -63,7 +63,7 @@
   public void shouldPassCheckWhenNoThreadsAreReturned() {
     BlockedThreadsCheck objectUnderTest = createCheck();
     when(beanMock.getThreadInfo(null, 0)).thenReturn(new ThreadInfo[0]);
-    assertThat(objectUnderTest.run().result).isEqualTo(Result.PASSED);
+    assertThat(objectUnderTest.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -111,8 +111,8 @@
             failingThreadInfo.toArray(new ThreadInfo[0]),
             successThreadInfo.toArray(new ThreadInfo[0]));
 
-    assertThat(createCheck().run().result).isEqualTo(Result.FAILED);
-    assertThat(createCheck().run().result).isEqualTo(Result.PASSED);
+    assertThat(createCheck().run().result()).isEqualTo(Result.FAILED);
+    assertThat(createCheck().run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -191,7 +191,7 @@
 
   private void checkResult(Result expected) {
     BlockedThreadsCheck objectUnderTest = createCheck();
-    assertThat(objectUnderTest.run().result).isEqualTo(expected);
+    assertThat(objectUnderTest.run().result()).isEqualTo(expected);
   }
 
   private void mockThreads(int running, int blocked, String prefix) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/DeadlockCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/DeadlockCheckTest.java
index a73ca15..23c87e9 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/DeadlockCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/DeadlockCheckTest.java
@@ -39,7 +39,7 @@
     Injector injector = testInjector(new TestModule(new MetricRegistry()));
 
     DeadlockCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -47,7 +47,7 @@
     Injector injector = testInjector(new TestModule(createMetricRegistry(0)));
 
     DeadlockCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -56,7 +56,7 @@
     Injector injector = testInjector(new TestModule(createMetricRegistry(1)));
 
     DeadlockCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(Result.FAILED);
   }
 
   @Test
@@ -65,7 +65,7 @@
     Injector injector = testInjector(new TestModule(createMetricRegistry(5)));
 
     DeadlockCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(Result.FAILED);
   }
 
   private Injector testInjector(AbstractModule testModule) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/HttpActiveWorkersCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/HttpActiveWorkersCheckTest.java
index 0bda74e..60c233a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/HttpActiveWorkersCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/HttpActiveWorkersCheckTest.java
@@ -52,7 +52,7 @@
         new HealthCheckConfig(
             "[healthcheck \"" + HTTPACTIVEWORKERS + "\"]\n" + "  threshold = " + thresholdPerc);
     HttpActiveWorkersCheck check = createCheck(injector, healthCheckConfig);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -72,7 +72,7 @@
         new HealthCheckConfig(
             "[healthcheck \"" + HTTPACTIVEWORKERS + "\"]\n" + "  threshold = " + thresholdPerc);
     HttpActiveWorkersCheck check = createCheck(injector, healthCheckConfig);
-    assertThat(check.run().result).isEqualTo(Result.FAILED);
+    assertThat(check.run().result()).isEqualTo(Result.FAILED);
   }
 
   @Test
@@ -90,7 +90,7 @@
     Injector injector = testInjector(new TestModule(new Config(), metricRegistry));
 
     HttpActiveWorkersCheck check = createCheck(injector);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   private MetricRegistry createHttpMetricRegistry(Integer value) {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/JGitHealthCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/JGitHealthCheckTest.java
index 02b914c..ecc471f 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/JGitHealthCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/JGitHealthCheckTest.java
@@ -75,7 +75,7 @@
     JGitHealthCheck check =
         new JGitHealthCheck(
             executor, DEFAULT_CONFIG, getWorkingRepositoryManager(), disabledMetricMaker);
-    assertThat(check.run().result).isEqualTo(Result.PASSED);
+    assertThat(check.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -83,7 +83,7 @@
     JGitHealthCheck jGitHealthCheck =
         new JGitHealthCheck(
             executor, DEFAULT_CONFIG, getFailingGitRepositoryManager(), disabledMetricMaker);
-    assertThat(jGitHealthCheck.run().result).isEqualTo(Result.FAILED);
+    assertThat(jGitHealthCheck.run().result()).isEqualTo(Result.FAILED);
   }
 
   @Test
@@ -97,7 +97,7 @@
                 + "  project = Not-Existing-Repo");
     JGitHealthCheck jGitHealthCheck =
         new JGitHealthCheck(executor, config, getWorkingRepositoryManager(), disabledMetricMaker);
-    assertThat(jGitHealthCheck.run().result).isEqualTo(Result.FAILED);
+    assertThat(jGitHealthCheck.run().result()).isEqualTo(Result.FAILED);
   }
 
   private GitRepositoryManager getFailingGitRepositoryManager() {
diff --git a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ProjectsListHealthCheckTest.java b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ProjectsListHealthCheckTest.java
index 293c596..836ee5a 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ProjectsListHealthCheckTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/healthcheck/ProjectsListHealthCheckTest.java
@@ -60,7 +60,7 @@
     ProjectsListHealthCheck jGitHealthCheck =
         new ProjectsListHealthCheck(
             executor, DEFAULT_CONFIG, getWorkingProjectList(0), mockOneOffCtx, disabledMetricMaker);
-    assertThat(jGitHealthCheck.run().result).isEqualTo(Result.PASSED);
+    assertThat(jGitHealthCheck.run().result()).isEqualTo(Result.PASSED);
   }
 
   @Test
@@ -68,7 +68,7 @@
     ProjectsListHealthCheck jGitHealthCheck =
         new ProjectsListHealthCheck(
             executor, DEFAULT_CONFIG, getFailingProjectList(), mockOneOffCtx, disabledMetricMaker);
-    assertThat(jGitHealthCheck.run().result).isEqualTo(Result.FAILED);
+    assertThat(jGitHealthCheck.run().result()).isEqualTo(Result.FAILED);
   }
 
   @Test
@@ -80,7 +80,7 @@
             getWorkingProjectList(DEFAULT_CONFIG.getTimeout() * 2),
             mockOneOffCtx,
             disabledMetricMaker);
-    assertThat(jGitHealthCheck.run().result).isEqualTo(Result.TIMEOUT);
+    assertThat(jGitHealthCheck.run().result()).isEqualTo(Result.TIMEOUT);
   }
 
   private Provider<ListProjects> getFailingProjectList() {