diff options
2 files changed, 25 insertions, 5 deletions
diff --git a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java index fdc5af76..8dbe9d23 100644 --- a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java +++ b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/java/org/onap/cps/ncmp/dmi/rest/stub/controller/DmiRestStubController.java @@ -22,6 +22,7 @@ package org.onap.cps.ncmp.dmi.rest.stub.controller; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.cloudevents.CloudEvent; import io.cloudevents.core.builder.CloudEventBuilder; @@ -69,6 +70,7 @@ import org.springframework.web.bind.annotation.RestController; public class DmiRestStubController { private static final String DEFAULT_TAG = "tagD"; + private static final String DEFAULT_PASSTHROUGH_OPERATION = "read"; private static final String dataOperationEventType = "org.onap.cps.ncmp.events.async1_0_0.DataOperationEvent"; private static final Map<String, String> moduleSetTagPerCmHandleId = new HashMap<>(); private final KafkaTemplate<String, CloudEvent> cloudEventKafkaTemplate; @@ -80,8 +82,10 @@ public class DmiRestStubController { private long moduleReferencesDelayMs; @Value("${delay.module-resources-delay-ms}") private long moduleResourcesDelayMs; - @Value("${delay.data-for-cm-handle-delay-ms}") - private long dataForCmHandleDelayMs; + @Value("${delay.read-data-for-cm-handle-delay-ms}") + private long readDataForCmHandleDelayMs; + @Value("${delay.write-data-for-cm-handle-delay-ms}") + private long writeDataForCmHandleDelayMs; /** * This code defines a REST API endpoint for adding new the module set tag mapping. The endpoint receives the @@ -208,7 +212,12 @@ public class DmiRestStubController { @RequestHeader(value = "Authorization", required = false) final String authorization, @RequestBody final String requestBody) { log.info("DMI AUTH HEADER: {}", authorization); - delay(dataForCmHandleDelayMs); + final String passthroughOperationType = getPassthroughOperationType(requestBody); + if (passthroughOperationType.equals("read")) { + delay(readDataForCmHandleDelayMs); + } else { + delay(writeDataForCmHandleDelayMs); + } log.info("Logging request body {}", requestBody); final String sampleJson = ResourceFileReaderUtil.getResourceFileContent(applicationContext.getResource( @@ -229,7 +238,7 @@ public class DmiRestStubController { @RequestParam(value = "topic") final String topic, @RequestParam(value = "requestId") final String requestId, @RequestBody final DmiDataOperationRequest dmiDataOperationRequest) { - delay(dataForCmHandleDelayMs); + delay(writeDataForCmHandleDelayMs); try { log.info("Request received from the NCMP to DMI Plugin: {}", objectMapper.writeValueAsString(dmiDataOperationRequest)); @@ -312,6 +321,16 @@ public class DmiRestStubController { return ResourceFileReaderUtil.getResourceFileContent(moduleResponseResource); } + private String getPassthroughOperationType(final String requestBody) { + try { + final JsonNode rootNode = objectMapper.readTree(requestBody); + return rootNode.path("operation").asText(); + } catch (final JsonProcessingException jsonProcessingException) { + log.error("Invalid JSON format. cause : {}", jsonProcessingException.getMessage()); + } + return DEFAULT_PASSTHROUGH_OPERATION; + } + private void delay(final long milliseconds) { try { Thread.sleep(milliseconds); diff --git a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml index b78a5b2d..e1e33542 100644 --- a/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml +++ b/dmi-stub/dmi-plugin-demo-and-csit-stub-service/src/main/resources/application.yml @@ -53,7 +53,8 @@ app: delay: module-references-delay-ms: ${MODULE_REFERENCES_DELAY_MS:100} module-resources-delay-ms: ${MODULE_RESOURCES_DELAY_MS:1000} - data-for-cm-handle-delay-ms: ${DATA_FOR_CM_HANDLE_DELAY_MS:2500} + read-data-for-cm-handle-delay-ms: ${READ_DATA_FOR_CM_HANDLE_DELAY_MS:300} + write-data-for-cm-handle-delay-ms: ${WRITE_DATA_FOR_CM_HANDLE_DELAY_MS:670} logging: level: |