/*-
* ============LICENSE_START=======================================================
- * AppcServiceProviderTest
+ * ONAP
* ================================================================================
- * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2020 AT&T Intellectual Property. All rights reserved.
* Modifications Copyright (C) 2019 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import static org.junit.Assert.fail;
import java.time.Instant;
import java.util.AbstractMap;
import java.util.HashMap;
import java.util.UUID;
-
+import java.util.stream.Collectors;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
-import org.onap.policy.aai.util.AaiException;
-import org.onap.policy.appclcm.LcmCommonHeader;
-import org.onap.policy.appclcm.LcmRequest;
-import org.onap.policy.appclcm.LcmRequestWrapper;
-import org.onap.policy.appclcm.LcmResponse;
-import org.onap.policy.appclcm.LcmResponseWrapper;
-import org.onap.policy.common.endpoints.http.server.HttpServletServer;
+import org.onap.policy.appclcm.AppcLcmBody;
+import org.onap.policy.appclcm.AppcLcmCommonHeader;
+import org.onap.policy.appclcm.AppcLcmDmaapWrapper;
+import org.onap.policy.appclcm.AppcLcmInput;
+import org.onap.policy.appclcm.AppcLcmOutput;
+import org.onap.policy.common.endpoints.http.server.HttpServletServerFactoryInstance;
import org.onap.policy.controlloop.ControlLoopEventStatus;
import org.onap.policy.controlloop.ControlLoopOperation;
import org.onap.policy.controlloop.ControlLoopTargetType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
public class AppcLcmActorServiceProviderTest {
+ private static final String VNF01 = "vnf01";
+
+ private static final String VNF_ID_KEY = "vnf-id";
+
+ private static final String REJECT = "REJECT";
+
+ private static final String PARTIAL_FAILURE = "PARTIAL FAILURE";
+
+ private static final String FAILURE = "FAILURE";
+
private static final Logger logger = LoggerFactory.getLogger(AppcLcmActorServiceProviderTest.class);
private static final VirtualControlLoopEvent onsetEvent;
private static final ControlLoopOperation operation;
private static final Policy policy;
- private static final LcmResponseWrapper dmaapResponse;
+ private static final AppcLcmDmaapWrapper dmaapResponse;
private static final String RECIPE_RESTART = "Restart";
private static final String RECIPE_REBUILD = "Rebuild";
static {
/*
- * Construct an onset with an AAI subtag containing generic-vnf.vnf-id and a target type of
- * VM.
+ * Construct an onset with an AAI subtag containing generic-vnf.vnf-id and a
+ * target type of VM.
*/
onsetEvent = new VirtualControlLoopEvent();
onsetEvent.setClosedLoopControlName("closedLoopControlName-Test");
/* Construct an operation with an APPC actor and restart operation. */
operation = new ControlLoopOperation();
operation.setActor("APPC");
- operation.setOperation("Restart");
+ operation.setOperation(RECIPE_RESTART);
operation.setTarget("VM");
operation.setEnd(Instant.now());
operation.setSubRequestId("1");
policy.setDescription("Upon getting the trigger event, restart the VM");
policy.setActor("APPC");
policy.setTarget(new Target(TargetType.VNF));
- policy.setRecipe("Restart");
+ policy.setRecipe(RECIPE_RESTART);
policy.setPayload(null);
policy.setRetry(2);
policy.setTimeout(300);
/* A sample DMAAP request wrapper. */
- LcmRequestWrapper dmaapRequest = new LcmRequestWrapper();
+ AppcLcmDmaapWrapper dmaapRequest = new AppcLcmDmaapWrapper();
dmaapRequest.setCorrelationId(onsetEvent.getRequestId().toString() + "-" + "1");
dmaapRequest.setRpcName(policy.getRecipe().toLowerCase());
dmaapRequest.setType("request");
/* A sample DMAAP response wrapper */
- dmaapResponse = new LcmResponseWrapper();
+ dmaapResponse = new AppcLcmDmaapWrapper();
dmaapResponse.setCorrelationId(onsetEvent.getRequestId().toString() + "-" + "1");
dmaapResponse.setRpcName(policy.getRecipe().toLowerCase());
dmaapResponse.setType("response");
/* A sample APPC LCM request. */
- LcmRequest appcRequest = new LcmRequest();
+ AppcLcmInput appcRequest = new AppcLcmInput();
/* The following code constructs a sample APPC LCM Request */
appcRequest.setAction("restart");
HashMap<String, String> actionIdentifiers = new HashMap<>();
- actionIdentifiers.put("vnf-id", "trial-vnf-003");
+ actionIdentifiers.put(VNF_ID_KEY, "trial-vnf-003");
appcRequest.setActionIdentifiers(actionIdentifiers);
- LcmCommonHeader commonHeader = new LcmCommonHeader();
+ AppcLcmCommonHeader commonHeader = new AppcLcmCommonHeader();
commonHeader.setRequestId(onsetEvent.getRequestId());
commonHeader.setSubRequestId("1");
commonHeader.setOriginatorId(onsetEvent.getRequestId().toString());
appcRequest.setPayload(null);
- dmaapRequest.setBody(appcRequest);
+ AppcLcmBody appcBody = new AppcLcmBody();
+ appcBody.setInput(appcRequest);
+
+ dmaapRequest.setBody(appcBody);
/* The following code constructs a sample APPC LCM Response */
- LcmResponse appcResponse = new LcmResponse(appcRequest);
+ AppcLcmOutput appcResponse = new AppcLcmOutput(appcRequest);
appcResponse.getStatus().setCode(400);
appcResponse.getStatus().setMessage("Restart Successful");
- dmaapResponse.setBody(appcResponse);
+ appcBody.setOutput(appcResponse);
+
+ dmaapResponse.setBody(appcBody);
}
/**
* Set up before test class.
+ *
+ * @throws Exception if an error occurs
*/
@BeforeClass
- public static void setUpSimulator() {
- try {
- Util.buildAaiSim();
- } catch (Exception e) {
- fail(e.getMessage());
- }
+ public static void setUpSimulator() throws Exception {
+ Util.buildAaiSim();
}
/**
*/
@AfterClass
public static void tearDownSimulator() {
- HttpServletServer.factory.destroy();
+ HttpServletServerFactoryInstance.getServerFactory().destroy();
+ }
+
+ @Test
+ public void testConstructor() {
+ AppcLcmActorServiceProvider prov = new AppcLcmActorServiceProvider();
+ assertEquals(-1, prov.getSequenceNumber());
+
+ // verify that it has the operators we expect
+ var expected = AppcLcmConstants.COMBINED_OPERATION_NAMES.stream().sorted().collect(Collectors.toList());
+ var actual = prov.getOperationNames().stream().sorted().collect(Collectors.toList());
+
+ assertEquals(expected.toString(), actual.toString());
}
/**
@Test
public void constructRestartRequestTest() {
- LcmRequestWrapper dmaapRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, policy, "vnf01");
+ AppcLcmDmaapWrapper dmaapRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, policy, VNF01);
/* The service provider must return a non null DMAAP request wrapper */
assertNotNull(dmaapRequest);
/* The DMAAP wrapper's body field cannot be null */
assertNotNull(dmaapRequest.getBody());
- LcmRequest appcRequest = dmaapRequest.getBody();
+ AppcLcmInput appcRequest = dmaapRequest.getBody().getInput();
/* A common header is required and cannot be null */
assertNotNull(appcRequest.getCommonHeader());
/* An action is required and cannot be null */
assertNotNull(appcRequest.getAction());
- assertEquals("Restart", appcRequest.getAction());
+ assertEquals(RECIPE_RESTART, appcRequest.getAction());
/* Action Identifiers are required and cannot be null */
assertNotNull(appcRequest.getActionIdentifiers());
- assertNotNull(appcRequest.getActionIdentifiers().get("vnf-id"));
- assertEquals("vnf01", appcRequest.getActionIdentifiers().get("vnf-id"));
+ assertNotNull(appcRequest.getActionIdentifiers().get(VNF_ID_KEY));
+ assertEquals(VNF01, appcRequest.getActionIdentifiers().get(VNF_ID_KEY));
logger.debug("APPC Request: \n" + appcRequest.toString());
}
@Test
public void processRestartResponseSuccessTest() {
AbstractMap.SimpleEntry<PolicyResult, String> result =
- AppcLcmActorServiceProvider.processResponse(dmaapResponse);
+ AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.SUCCESS, result.getKey());
assertEquals("Restart Successful", result.getValue());
}
+ /**
+ * A test to assert that a null pointer exception is thrown if the APPC response body
+ * is null.
+ */
+ @Test(expected = NullPointerException.class)
+ public void processNullBodyResponseTest() {
+ AppcLcmActorServiceProvider.processResponse(new AppcLcmDmaapWrapper());
+ }
+
+ /**
+ * A test to assert that a null pointer exception is thrown if the APPC response
+ * output is null.
+ */
+ @Test(expected = NullPointerException.class)
+ public void processNullOutputResponseTest() {
+ AppcLcmDmaapWrapper dmaapWrapper = new AppcLcmDmaapWrapper();
+ dmaapWrapper.setBody(new AppcLcmBody());
+ AppcLcmActorServiceProvider.processResponse(dmaapWrapper);
+ }
+
/**
* A test to map APPC response results to corresponding Policy results.
*/
AbstractMap.SimpleEntry<PolicyResult, String> result;
/* If APPC accepts, PolicyResult is null */
- dmaapResponse.getBody().getStatus().setCode(100);
- dmaapResponse.getBody().getStatus().setMessage("ACCEPTED");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(100);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("ACCEPTED");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertNull(result.getKey());
/* If APPC is successful, PolicyResult is success */
- dmaapResponse.getBody().getStatus().setCode(400);
- dmaapResponse.getBody().getStatus().setMessage("SUCCESS");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(400);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("SUCCESS");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.SUCCESS, result.getKey());
/* If APPC returns an error, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(200);
- dmaapResponse.getBody().getStatus().setMessage("ERROR");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(200);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("ERROR");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC rejects, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(300);
- dmaapResponse.getBody().getStatus().setMessage("REJECT");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(300);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* Test multiple reject codes */
- dmaapResponse.getBody().getStatus().setCode(306);
- dmaapResponse.getBody().getStatus().setMessage("REJECT");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(306);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
- dmaapResponse.getBody().getStatus().setCode(313);
- dmaapResponse.getBody().getStatus().setMessage("REJECT");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(313);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(REJECT);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC returns failure, PolicyResult is failure */
- dmaapResponse.getBody().getStatus().setCode(401);
- dmaapResponse.getBody().getStatus().setMessage("FAILURE");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(401);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE, result.getKey());
/* Test multiple failure codes */
- dmaapResponse.getBody().getStatus().setCode(406);
- dmaapResponse.getBody().getStatus().setMessage("FAILURE");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(406);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE, result.getKey());
- dmaapResponse.getBody().getStatus().setCode(450);
- dmaapResponse.getBody().getStatus().setMessage("FAILURE");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(450);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE, result.getKey());
/* If APPC returns partial success, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(500);
- dmaapResponse.getBody().getStatus().setMessage("PARTIAL SUCCESS");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(500);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("PARTIAL SUCCESS");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC returns partial failure, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(501);
- dmaapResponse.getBody().getStatus().setMessage("PARTIAL FAILURE");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(501);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* Test multiple partial failure codes */
- dmaapResponse.getBody().getStatus().setCode(599);
- dmaapResponse.getBody().getStatus().setMessage("PARTIAL FAILURE");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(599);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
- dmaapResponse.getBody().getStatus().setCode(550);
- dmaapResponse.getBody().getStatus().setMessage("PARTIAL FAILURE");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(550);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage(PARTIAL_FAILURE);
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
/* If APPC code is unknown to Policy, PolicyResult is failure exception */
- dmaapResponse.getBody().getStatus().setCode(700);
- dmaapResponse.getBody().getStatus().setMessage("UNKNOWN");
+ dmaapResponse.getBody().getOutput().getStatus().setCode(700);
+ dmaapResponse.getBody().getOutput().getStatus().setMessage("UNKNOWN");
result = AppcLcmActorServiceProvider.processResponse(dmaapResponse);
assertEquals(PolicyResult.FAILURE_EXCEPTION, result.getKey());
}
- /**
- * This test ensures that that if the the source entity is also the target entity, the source
- * will be used for the APPC request.
- */
- @Test
- public void sourceIsTargetTest() {
- String resourceId = "82194af1-3c2c-485a-8f44-420e22a9eaa4";
- String targetVnfId = null;
- try {
- targetVnfId = AppcLcmActorServiceProvider.vnfNamedQuery(resourceId, "vnf01",
- "http://localhost:6666", "AAI", "AAI");
- } catch (AaiException e) {
- logger.warn(e.toString());
- fail("no vnf-id found");
- }
- assertNotNull(targetVnfId);
- assertEquals("vnf01", targetVnfId);
- }
-
- /**
- * THis test exercises getters not exercised in other tests.
+ /*
+ * This test exercises getters not exercised in other tests.
*/
@Test
public void testMethods() {
assertEquals("APPC", sp.actor());
assertEquals(4, sp.recipes().size());
- assertEquals("VM", sp.recipeTargets("Restart").get(0));
- assertEquals("vm-id", sp.recipePayloads("Restart").get(0));
+ assertEquals("VM", sp.recipeTargets(RECIPE_RESTART).get(0));
+ assertEquals("vm-id", sp.recipePayloads(RECIPE_RESTART).get(0));
}
@Test
- public void payloadNotPassedWhenNotSupportedByRecipe() {
- //given
+ public void testPayloadNotPassedWhenNotSupportedByRecipe() {
+ // given
Policy migratePolicy = constructPolicyWithRecipe(RECIPE_MIGRATE);
Policy rebuildPolicy = constructPolicyWithRecipe(RECIPE_REBUILD);
Policy restartPolicy = constructPolicyWithRecipe(RECIPE_RESTART);
// when
- LcmRequestWrapper migrateRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, migratePolicy, "vnf01");
- LcmRequestWrapper rebuildRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, rebuildPolicy, "vnf01");
- LcmRequestWrapper restartRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, restartPolicy, "vnf01");
+ AppcLcmDmaapWrapper migrateRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, migratePolicy, VNF01);
+ AppcLcmDmaapWrapper rebuildRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, rebuildPolicy, VNF01);
+ AppcLcmDmaapWrapper restartRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, restartPolicy, VNF01);
// then
- assertNull(migrateRequest.getBody().getPayload());
- assertNull(rebuildRequest.getBody().getPayload());
- assertNull(restartRequest.getBody().getPayload());
+ assertNull(migrateRequest.getBody().getInput().getPayload());
+ assertNull(rebuildRequest.getBody().getInput().getPayload());
+ assertNull(restartRequest.getBody().getInput().getPayload());
}
@Test
- public void payloadNotPassedWhenNotSuppliedOrEmpty() {
- //given
+ public void testPayloadNotPassedWhenNotSuppliedOrEmpty() {
+ // given
Policy noPayloadPolicy = constructHealthCheckPolicyWithPayload(null);
Policy emptyPayloadPolicy = constructHealthCheckPolicyWithPayload(new HashMap<>());
// when
- LcmRequestWrapper noPayloadRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, noPayloadPolicy, "vnf01");
- LcmRequestWrapper emptyPayloadRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, emptyPayloadPolicy, "vnf01");
-
+ AppcLcmDmaapWrapper noPayloadRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, noPayloadPolicy, VNF01);
+ AppcLcmDmaapWrapper emptyPayloadRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, emptyPayloadPolicy, VNF01);
// then
- assertNull(noPayloadRequest.getBody().getPayload());
- assertNull(emptyPayloadRequest.getBody().getPayload());
+ assertNull(noPayloadRequest.getBody().getInput().getPayload());
+ assertNull(emptyPayloadRequest.getBody().getInput().getPayload());
}
@Test
- public void payloadParsedProperlyForSinglePayloadParameter() {
+ public void testPayloadParsedProperlyForSinglePayloadParameter() {
// given
HashMap<String, String> payload = new HashMap<>();
payload.put("requestParameters", "{\"host-ip-address\":\"10.183.37.25\"}");
Policy otherPolicy = constructHealthCheckPolicyWithPayload(payload);
// when
- LcmRequestWrapper dmaapRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, otherPolicy, "vnf01");
+ AppcLcmDmaapWrapper dmaapRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, otherPolicy, VNF01);
// then
- assertEquals(dmaapRequest.getBody().getPayload(),
- "{\"requestParameters\": {\"host-ip-address\":\"10.183.37.25\"}}");
+ assertEquals("{\"requestParameters\": {\"host-ip-address\":\"10.183.37.25\"}}",
+ dmaapRequest.getBody().getInput().getPayload());
}
-
@Test
- public void payloadParsedProperlyForMultiplePayloadParameters() {
+ public void testPayloadParsedProperlyForMultiplePayloadParameters() {
// given
HashMap<String, String> payload = new HashMap<>();
payload.put("requestParameters", "{\"host-ip-address\":\"10.183.37.25\"}");
- payload.put("configurationParameters", "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\","
- + "\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\","
- + "\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]");
+ payload.put("configurationParameters",
+ "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\","
+ + "\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\","
+ + "\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]");
Policy otherPolicy = constructHealthCheckPolicyWithPayload(payload);
// when
- LcmRequestWrapper dmaapRequest =
- AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, otherPolicy, "vnf01");
+ AppcLcmDmaapWrapper dmaapRequest =
+ AppcLcmActorServiceProvider.constructRequest(onsetEvent, operation, otherPolicy, VNF01);
// then
- assertEquals(dmaapRequest.getBody().getPayload(),
- "{\"requestParameters\": "
- + "{\"host-ip-address\":\"10.183.37.25\"},"
- + "\"configurationParameters\": "
- + "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\","
- + "\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\","
- + "\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]"
- + "}");
+ assertEquals(dmaapRequest.getBody().getInput().getPayload(), "{\"requestParameters\": "
+ + "{\"host-ip-address\":\"10.183.37.25\"}," + "\"configurationParameters\": "
+ + "[{\"ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[9]\","
+ + "\"oam-ip-addr\":\"$.vf-module-topology.vf-module-parameters.param[16]\","
+ + "\"enabled\":\"$.vf-module-topology.vf-module-parameters.param[23]\"}]" + "}");
}
private Policy constructHealthCheckPolicyWithPayload(HashMap<String, String> payload) {