X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=models-interactions%2Fmodel-simulators%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fsimulators%2FCdsSimulator.java;fp=models-interactions%2Fmodel-simulators%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fsimulators%2FCdsSimulator.java;h=f1785c8ee2249ad1fc490fef473e33c8905e1e55;hb=7fb6242e113efb3653c7846ffe7ac2959612daf3;hp=dbbaa1681f33aeded41ef2d139151a414efd5557;hpb=5a4ba9fa46bdebdcfe1796ffeaa3c9be29b89b45;p=policy%2Fmodels.git diff --git a/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/CdsSimulator.java b/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/CdsSimulator.java index dbbaa1681..f1785c8ee 100644 --- a/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/CdsSimulator.java +++ b/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/CdsSimulator.java @@ -2,6 +2,7 @@ * ============LICENSE_START======================================================= * Copyright (C) 2020 Nordix Foundation. * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2020 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,13 +29,16 @@ import io.grpc.netty.NettyServerBuilder; import io.grpc.stub.StreamObserver; import java.io.IOException; import java.net.InetSocketAddress; -import java.nio.charset.StandardCharsets; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; import lombok.Getter; -import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.StringUtils; +import org.onap.ccsdk.cds.controllerblueprints.common.api.ActionIdentifiers; import org.onap.ccsdk.cds.controllerblueprints.processing.api.BluePrintProcessingServiceGrpc.BluePrintProcessingServiceImplBase; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput.Builder; +import org.onap.policy.common.utils.resources.ResourceUtils; public class CdsSimulator { @Getter @@ -42,6 +46,10 @@ public class CdsSimulator { private final Server server; + private final String resourceLocation; + + private AtomicInteger countOfEvents = new AtomicInteger(1); + /** * Constructs the object, but does not start it. * @@ -49,7 +57,21 @@ public class CdsSimulator { * @param port port of the server */ public CdsSimulator(String host, int port) { + this(host, port, "org/onap/policy/simulators/cds/", 0, 0); + } + + /** + * Constructs the object, but does not start it. + * + * @param host host name of the server + * @param port port of the server + * @param countOfSuccesfulEvents number of successive successful events + * @param requestedResponseDelayMs time for the request to be processed + */ + public CdsSimulator(String host, int port, String resourceLocation, int countOfSuccesfulEvents, + long requestedResponseDelayMs) { this.port = port; + this.resourceLocation = resourceLocation; BluePrintProcessingServiceImplBase testCdsBlueprintServerImpl = new BluePrintProcessingServiceImplBase() { @@ -62,18 +84,17 @@ public class CdsSimulator { @Override public void onNext(final ExecutionServiceInput executionServiceInput) { try { - String responseString = IOUtils.toString( - getClass().getResource("cds/CreateSubscriptionResponseEvent.json"), - StandardCharsets.UTF_8); + String responseString = getResponseString(executionServiceInput, countOfSuccesfulEvents); Builder builder = ExecutionServiceOutput.newBuilder(); JsonFormat.parser().ignoringUnknownFields().merge(responseString, builder); + TimeUnit.MILLISECONDS.sleep(requestedResponseDelayMs); responseObserver.onNext(builder.build()); - } catch (InvalidProtocolBufferException e) { throw new SimulatorRuntimeException("Cannot convert ExecutionServiceOutput output", e); - } catch (IOException e) { throw new SimulatorRuntimeException("Cannot read ExecutionServiceOutput from file", e); + } catch (InterruptedException e) { + throw new SimulatorRuntimeException("Execution Interrupted", e); } } @@ -101,4 +122,31 @@ public class CdsSimulator { public void stop() { server.shutdown(); } + + /** + * Constructs the ResponseString on the basis of request. + * + * @param executionServiceInput service input + * @param countOfSuccesfulEvents number of successive successful events + * @return responseString + */ + public String getResponseString(ExecutionServiceInput executionServiceInput, int countOfSuccesfulEvents) { + String resourceName = "DefaultResponseEvent"; + if (!StringUtils.isBlank(executionServiceInput.getActionIdentifiers().getActionName())) { + ActionIdentifiers actionIdentifiers = executionServiceInput.getActionIdentifiers(); + resourceName = actionIdentifiers.getBlueprintName() + "-" + actionIdentifiers.getActionName(); + } + if (countOfSuccesfulEvents > 0 && countOfEvents.getAndIncrement() % countOfSuccesfulEvents == 0) { + // generating the failure response + resourceName = resourceName + "-error.json"; + } else { + resourceName = resourceName + ".json"; + } + String responseString = ResourceUtils.getResourceAsString(resourceLocation + resourceName); + if (responseString == null) { + responseString = ResourceUtils.getResourceAsString(resourceLocation + + "DefaultResponseEvent.json"); + } + return responseString; + } }