Fix PAP healthcheck response during failures 68/127668/2
authora.sreekumar <ajith.sreekumar@bell.ca>
Thu, 10 Mar 2022 17:56:48 +0000 (17:56 +0000)
committera.sreekumar <ajith.sreekumar@bell.ca>
Thu, 10 Mar 2022 18:24:22 +0000 (18:24 +0000)
The healthcheck response that is returned by PAP is not inline with the
actual healthreport. Even when the report has
healthy:false, code:503, message:not alive
the response code stays 200. This is fixed, this also makes the improved
readiness probe in OOM to work properly with the healthcheck calls

Change-Id: Ib208e0a84bce74157aacbcad61a11dcf900c7c94
Issue-ID: POLICY-4030
Signed-off-by: a.sreekumar <ajith.sreekumar@bell.ca>
main/src/main/java/org/onap/policy/pap/main/rest/HealthCheckRestControllerV1.java
main/src/test/java/org/onap/policy/pap/main/rest/TestHealthCheckRestControllerV1.java

index 896f2aa..2687a30 100644 (file)
@@ -53,7 +53,8 @@ public class HealthCheckRestControllerV1  extends PapRestControllerV1 {
         @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE),
         @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)})
     public ResponseEntity<HealthCheckReport> healthcheck() {
-        return ResponseEntity.ok().body(provider.performHealthCheck(true));
+        var report = provider.performHealthCheck(true);
+        return ResponseEntity.status(report.getCode()).body(report);
     }
 
 }
index bc97c63..359f9cb 100644 (file)
@@ -22,6 +22,7 @@
 
 package org.onap.policy.pap.main.rest;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.when;
 
@@ -64,7 +65,9 @@ public class TestHealthCheckRestControllerV1 extends CommonPapRestServer {
         markActivatorDead();
 
         final Invocation.Builder invocationBuilder = sendRequest(HEALTHCHECK_ENDPOINT);
-        final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
+        var response = invocationBuilder.get();
+        var report = response.readEntity(HealthCheckReport.class);
+        assertThat(response.getStatus()).isEqualTo(503);
         validateHealthCheckReport(NAME, SELF, false, 503, NOT_ALIVE, report);
     }
 
@@ -72,7 +75,9 @@ public class TestHealthCheckRestControllerV1 extends CommonPapRestServer {
     public void testHealthCheckDbConnectionFailure() throws Exception {
         when(policyStatusProvider.getPolicyStatus()).thenThrow(PfModelRuntimeException.class);
         final Invocation.Builder invocationBuilder = sendRequest(HEALTHCHECK_ENDPOINT);
-        final HealthCheckReport report = invocationBuilder.get(HealthCheckReport.class);
+        var response = invocationBuilder.get();
+        var report = response.readEntity(HealthCheckReport.class);
+        assertThat(response.getStatus()).isEqualTo(503);
         validateHealthCheckReport(NAME, SELF, false, 503, NOT_ALIVE, report);
     }