From a5102043b82cf3fe86bc9be7a0d61698b2321aea Mon Sep 17 00:00:00 2001 From: Mingyang Zhu <mzhu9@slb.com> Date: Wed, 5 May 2021 13:01:43 -0500 Subject: [PATCH] customized readiness check to make sure cache layer is ready before serving traffic --- .../opengroup/osdu/partition/api/HealthCheck.java | 14 ++++++++++++++ .../osdu/partition/api/HealthCheckTest.java | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/partition-core/src/main/java/org/opengroup/osdu/partition/api/HealthCheck.java b/partition-core/src/main/java/org/opengroup/osdu/partition/api/HealthCheck.java index f76c6b02c..25164e74d 100644 --- a/partition-core/src/main/java/org/opengroup/osdu/partition/api/HealthCheck.java +++ b/partition-core/src/main/java/org/opengroup/osdu/partition/api/HealthCheck.java @@ -16,7 +16,10 @@ package org.opengroup.osdu.partition.api; import java.util.Collections; import org.opengroup.osdu.partition.logging.AuditLogger; +import org.opengroup.osdu.partition.model.PartitionInfo; +import org.opengroup.osdu.partition.provider.interfaces.IPartitionServiceCache; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -29,6 +32,9 @@ public class HealthCheck { @Autowired private AuditLogger auditLogger; + @Autowired + @Qualifier("partitionServiceCache") + private IPartitionServiceCache<String, PartitionInfo> dummyCache; @GetMapping("/liveness_check") public ResponseEntity<String> livenessCheck() { @@ -39,6 +45,14 @@ public class HealthCheck { @GetMapping("/readiness_check") public ResponseEntity<String> readinessCheck() { + customReadinessCheckList(); return new ResponseEntity<>("Partition service is ready", HttpStatus.OK); } + + /** + * Cache layer must be ready before the pod can serve the traffic + */ + private void customReadinessCheckList() { + dummyCache.get("dummy-key"); + } } diff --git a/partition-core/src/test/java/org/opengroup/osdu/partition/api/HealthCheckTest.java b/partition-core/src/test/java/org/opengroup/osdu/partition/api/HealthCheckTest.java index f21eaf8b7..f7d181a2c 100644 --- a/partition-core/src/test/java/org/opengroup/osdu/partition/api/HealthCheckTest.java +++ b/partition-core/src/test/java/org/opengroup/osdu/partition/api/HealthCheckTest.java @@ -15,6 +15,8 @@ package org.opengroup.osdu.partition.api; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.verify; import org.junit.Test; import org.junit.runner.RunWith; @@ -22,6 +24,8 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import org.opengroup.osdu.partition.logging.AuditLogger; +import org.opengroup.osdu.partition.model.PartitionInfo; +import org.opengroup.osdu.partition.provider.interfaces.IPartitionServiceCache; import org.springframework.http.HttpStatus; @RunWith(MockitoJUnitRunner.class) @@ -29,6 +33,8 @@ public class HealthCheckTest { @Mock private AuditLogger auditLogger; + @Mock + private IPartitionServiceCache<String, PartitionInfo> dummyCache; @InjectMocks private HealthCheck sut; @@ -41,5 +47,6 @@ public class HealthCheckTest { @Test public void should_returnHttp200_when_checkReadiness() { assertEquals(HttpStatus.OK, this.sut.readinessCheck().getStatusCode()); + verify(dummyCache).get(any()); } } \ No newline at end of file -- GitLab