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