From 66cce3f7afce095871b339440f7816389ddc614a Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Mon, 5 Oct 2020 11:31:40 -0400 Subject: Make simulator parameters optional Modified the simulator to make the DMaaP and GRPC parameters optional so that a simulator can be started without them. Also added parameter validation, as that was not being performed on the DMaaP or GRPC parameters. Also modified the validation so-as not to require the rest server parameter field contained within the DMaaP parameter class. Issue-ID: POLICY-2858 Change-Id: I85dde93c7baf863eca2cb10eab37806f3e08a087 Signed-off-by: Jim Hahn --- .../sim/dmaap/parameters/DmaapSimParameterGroup.java | 4 +--- .../java/org/onap/policy/models/simulators/Main.java | 18 +++++++++++------- .../policy/models/simulators/SimulatorParameters.java | 10 ++++++++-- .../org/onap/policy/models/simulators/MainTest.java | 11 +++++++++-- .../models/simulators/SimulatorParametersTest.java | 18 ++++++++++++++---- .../src/test/resources/invalidDmaapParameters.json | 7 +++++++ .../src/test/resources/invalidGrpcParameters.json | 7 +++++++ .../src/test/resources/invalidSimParameters.json | 2 -- .../src/test/resources/minParameters.json | 14 ++++++++++++++ .../src/test/resources/simParameters.json | 5 +---- 10 files changed, 72 insertions(+), 24 deletions(-) create mode 100644 models-sim/policy-models-simulators/src/test/resources/invalidDmaapParameters.json create mode 100644 models-sim/policy-models-simulators/src/test/resources/invalidGrpcParameters.json delete mode 100644 models-sim/policy-models-simulators/src/test/resources/invalidSimParameters.json create mode 100644 models-sim/policy-models-simulators/src/test/resources/minParameters.json (limited to 'models-sim') diff --git a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/parameters/DmaapSimParameterGroup.java b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/parameters/DmaapSimParameterGroup.java index 11da57582..4e2841a08 100644 --- a/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/parameters/DmaapSimParameterGroup.java +++ b/models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/parameters/DmaapSimParameterGroup.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. 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. @@ -25,12 +25,10 @@ import lombok.Getter; import org.onap.policy.common.parameters.ParameterGroupImpl; import org.onap.policy.common.parameters.annotations.Min; import org.onap.policy.common.parameters.annotations.NotBlank; -import org.onap.policy.common.parameters.annotations.NotNull; /** * Class to hold all parameters needed for the DMaaP simulator component. */ -@NotNull @NotBlank @Getter public class DmaapSimParameterGroup extends ParameterGroupImpl { diff --git a/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java b/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java index a0fafbc9b..f82423c11 100644 --- a/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java +++ b/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/Main.java @@ -83,18 +83,22 @@ public class Main extends ServiceManagerContainer { } DmaapSimParameterGroup dmaapProv = params.getDmaapProvider(); - String dmaapName = dmaapProv.getName(); - String provName = dmaapName.replace("simulator", "provider"); + String dmaapName = (dmaapProv != null ? dmaapProv.getName() : null); // dmaap provider - AtomicReference provRef = new AtomicReference<>(); - addAction(provName, () -> provRef.set(buildDmaapProvider(dmaapProv)), () -> provRef.get().shutdown()); + if (dmaapProv != null) { + String provName = dmaapName.replace("simulator", "provider"); + AtomicReference provRef = new AtomicReference<>(); + addAction(provName, () -> provRef.set(buildDmaapProvider(dmaapProv)), () -> provRef.get().shutdown()); + } CdsServerParameters cdsServer = params.getGrpcServer(); // Cds Simulator - AtomicReference cdsSim = new AtomicReference<>(); - addAction(cdsServer.getName(), () -> cdsSim.set(buildCdsSimulator(cdsServer)), () -> cdsSim.get().stop()); + if (cdsServer != null) { + AtomicReference cdsSim = new AtomicReference<>(); + addAction(cdsServer.getName(), () -> cdsSim.set(buildCdsSimulator(cdsServer)), () -> cdsSim.get().stop()); + } // REST server simulators // @formatter:off @@ -276,7 +280,7 @@ public class Main extends ServiceManagerContainer { props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SWAGGER_SUFFIX, "false"); props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_MANAGED_SUFFIX, "true"); - if (dmaapName.equals(params.getName())) { + if (dmaapName != null && dmaapName.equals(params.getName())) { props.setProperty(svcpfx + PolicyEndPointProperties.PROPERTY_HTTP_SERIALIZATION_PROVIDER, String.join(",", CambriaMessageBodyHandler.class.getName(), GsonMessageBodyHandler.class.getName(), diff --git a/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/SimulatorParameters.java b/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/SimulatorParameters.java index 788829f36..c22527165 100644 --- a/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/SimulatorParameters.java +++ b/models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/SimulatorParameters.java @@ -27,14 +27,12 @@ import lombok.Getter; import org.onap.policy.common.endpoints.parameters.TopicParameters; import org.onap.policy.common.parameters.BeanValidationResult; import org.onap.policy.common.parameters.BeanValidator; -import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup; /** * Simulator parameters. */ @Getter -@NotNull public class SimulatorParameters { /** @@ -77,6 +75,14 @@ public class SimulatorParameters { public BeanValidationResult validate(String containerName) { BeanValidationResult result = new BeanValidator().validateTop(containerName, this); + if (dmaapProvider != null) { + result.addResult(dmaapProvider.validate()); + } + + if (grpcServer != null) { + result.addResult(grpcServer.validate()); + } + result.validateList("restServers", restServers, params -> params.validate("restServers")); result.validateList("topicServers", topicServers, params -> params.validate("topicServers")); diff --git a/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/MainTest.java b/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/MainTest.java index e9e8cbdec..abc27f428 100644 --- a/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/MainTest.java +++ b/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/MainTest.java @@ -109,7 +109,7 @@ public class MainTest { @Test public void testConstructor() throws Exception { - assertThatIllegalArgumentException().isThrownBy(() -> new Main("invalidSimParameters.json")) + assertThatIllegalArgumentException().isThrownBy(() -> new Main("invalidDmaapParameters.json")) .withMessage("invalid simulator parameters"); } @@ -125,7 +125,7 @@ public class MainTest { Main.main(new String[] {PARAMETER_FILE}); // don't need to wait long, because buildXxx() does the wait for us - for (int port = 6666; port <= 6670; ++port) { + for (int port : new int[] {6666, 6667, 6668, 6669, 6670, 6680}) { assertTrue("simulator on port " + port, NetworkUtil.isTcpPortOpen(HOST, port, 1, 100)); } @@ -133,6 +133,13 @@ public class MainTest { checkAai(); } + @Test + public void testMainMinimalParameters() { + Main.main(new String[] {"minParameters.json"}); + assertNotNull(Main.getInstance()); + assertTrue(Main.getInstance().isAlive()); + } + private void checkAai() throws HttpClientConfigException { BusTopicParams params = BusTopicParams.builder().clientName("client").hostname(HOST).port(6666).useHttps(true) .allowSelfSignedCerts(true).basePath("aai").build(); diff --git a/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/SimulatorParametersTest.java b/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/SimulatorParametersTest.java index 5294ca483..f8d7433d2 100644 --- a/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/SimulatorParametersTest.java +++ b/models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/SimulatorParametersTest.java @@ -34,14 +34,24 @@ public class SimulatorParametersTest { @Test public void testValidate() throws CoderException { - // some fields missing - BeanValidationResult result = new SimulatorParameters().validate("InvalidParams"); - assertFalse(result.isValid()); - assertNotNull(result.getResult()); // everything populated SimulatorParameters params = new StandardCoder().decode(new File("src/test/resources/simParameters.json"), SimulatorParameters.class); assertNull(params.validate("ValidParams").getResult()); + + // invalid dmaap provider + params = new StandardCoder().decode(new File("src/test/resources/invalidDmaapParameters.json"), + SimulatorParameters.class); + BeanValidationResult result = params.validate("InvalidDmaapParams"); + assertFalse(result.isValid()); + assertNotNull(result.getResult()); + + // invalid grpc server + params = new StandardCoder().decode(new File("src/test/resources/invalidGrpcParameters.json"), + SimulatorParameters.class); + result = params.validate("InvalidGrpcParams"); + assertFalse(result.isValid()); + assertNotNull(result.getResult()); } } diff --git a/models-sim/policy-models-simulators/src/test/resources/invalidDmaapParameters.json b/models-sim/policy-models-simulators/src/test/resources/invalidDmaapParameters.json new file mode 100644 index 000000000..ff6790144 --- /dev/null +++ b/models-sim/policy-models-simulators/src/test/resources/invalidDmaapParameters.json @@ -0,0 +1,7 @@ +{ + "dmaapProvider": {}, + "restServers": [], + "topicSinks": [], + "topicSources": [], + "topicServers": [] +} diff --git a/models-sim/policy-models-simulators/src/test/resources/invalidGrpcParameters.json b/models-sim/policy-models-simulators/src/test/resources/invalidGrpcParameters.json new file mode 100644 index 000000000..86e425364 --- /dev/null +++ b/models-sim/policy-models-simulators/src/test/resources/invalidGrpcParameters.json @@ -0,0 +1,7 @@ +{ + "grpcServer": {}, + "restServers": [], + "topicSinks": [], + "topicSources": [], + "topicServers": [] +} diff --git a/models-sim/policy-models-simulators/src/test/resources/invalidSimParameters.json b/models-sim/policy-models-simulators/src/test/resources/invalidSimParameters.json deleted file mode 100644 index 2c63c0851..000000000 --- a/models-sim/policy-models-simulators/src/test/resources/invalidSimParameters.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/models-sim/policy-models-simulators/src/test/resources/minParameters.json b/models-sim/policy-models-simulators/src/test/resources/minParameters.json new file mode 100644 index 000000000..c7ea49874 --- /dev/null +++ b/models-sim/policy-models-simulators/src/test/resources/minParameters.json @@ -0,0 +1,14 @@ +{ + "restServers": [ + { + "name": "A&AI simulator", + "providerClass": "org.onap.policy.simulators.AaiSimulatorJaxRs", + "host": "localhost", + "port": 6766, + "https": true + } + ], + "topicSinks": [], + "topicSources": [], + "topicServers": [] +} diff --git a/models-sim/policy-models-simulators/src/test/resources/simParameters.json b/models-sim/policy-models-simulators/src/test/resources/simParameters.json index 1d1c0aad7..df8de6ff7 100644 --- a/models-sim/policy-models-simulators/src/test/resources/simParameters.json +++ b/models-sim/policy-models-simulators/src/test/resources/simParameters.json @@ -1,10 +1,7 @@ { "dmaapProvider": { "name": "DMaaP simulator", - "topicSweepSec": 300, - "restServerParameters": { - - } + "topicSweepSec": 300 }, "restServers": [ { -- cgit 1.2.3-korg