Don't always validate restServerParameters 81/113581/3
authorJim Hahn <jrh3@att.com>
Tue, 6 Oct 2020 17:50:36 +0000 (13:50 -0400)
committerJim Hahn <jrh3@att.com>
Tue, 6 Oct 2020 18:26:11 +0000 (14:26 -0400)
Restored original validation code to DmaapSimParameterGroup so it works
as it originally worked (i.e., required "restServerParameters").
However, modified SimulatorParameters to validate the relevant fields
directly, rather than relying on DmaapSimParameterGroup.validate(), thus
eliminating all checks on "restServerParameters" when used within
SimulatorParameters.

Issue-ID: POLICY-2858
Change-Id: I9a09431ce3056a874bf2dba1c5bd6c418f37f69b
Signed-off-by: Jim Hahn <jrh3@att.com>
models-sim/models-sim-dmaap/src/main/java/org/onap/policy/models/sim/dmaap/parameters/DmaapSimParameterGroup.java
models-sim/policy-models-simulators/src/main/java/org/onap/policy/models/simulators/SimulatorParameters.java
models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/MainTest.java
models-sim/policy-models-simulators/src/test/java/org/onap/policy/models/simulators/SimulatorParametersTest.java
models-sim/policy-models-simulators/src/test/resources/emptyRestServer.json [new file with mode: 0644]
models-sim/policy-models-simulators/src/test/resources/invalidDmaapName.json [new file with mode: 0644]
models-sim/policy-models-simulators/src/test/resources/invalidDmaapProvider.json [moved from models-sim/policy-models-simulators/src/test/resources/invalidDmaapParameters.json with 100% similarity]
models-sim/policy-models-simulators/src/test/resources/invalidGrpcServer.json [moved from models-sim/policy-models-simulators/src/test/resources/invalidGrpcParameters.json with 100% similarity]
models-sim/policy-models-simulators/src/test/resources/invalidTopicSweep.json [new file with mode: 0644]

index 4e2841a..9719ae9 100644 (file)
@@ -25,10 +25,12 @@ 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 {
index c225271..4b60d5e 100644 (file)
@@ -27,6 +27,8 @@ 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.ObjectValidationResult;
+import org.onap.policy.common.parameters.ValidationStatus;
 import org.onap.policy.models.sim.dmaap.parameters.DmaapSimParameterGroup;
 
 /**
@@ -76,7 +78,17 @@ public class SimulatorParameters {
         BeanValidationResult result = new BeanValidator().validateTop(containerName, this);
 
         if (dmaapProvider != null) {
-            result.addResult(dmaapProvider.validate());
+            // do not want full validation of the provider, so validate the relevant
+            // fields ourselves
+            BeanValidationResult subResult = new BeanValidationResult("dmaapProvider", dmaapProvider);
+            subResult.validateNotNull("name", dmaapProvider.getName());
+            if (dmaapProvider.getTopicSweepSec() < 1) {
+                ObjectValidationResult fieldResult =
+                                new ObjectValidationResult("topicSweepSec", dmaapProvider.getTopicSweepSec(),
+                                                ValidationStatus.INVALID, "is below the minimum value: 1");
+                subResult.addResult(fieldResult);
+            }
+            result.addResult(subResult);
         }
 
         if (grpcServer != null) {
index abc27f4..f5598e2 100644 (file)
@@ -109,7 +109,7 @@ public class MainTest {
 
     @Test
     public void testConstructor() throws Exception {
-        assertThatIllegalArgumentException().isThrownBy(() -> new Main("invalidDmaapParameters.json"))
+        assertThatIllegalArgumentException().isThrownBy(() -> new Main("invalidDmaapProvider.json"))
                         .withMessage("invalid simulator parameters");
     }
 
index f8d7433..8094ca4 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.policy.models.simulators;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
@@ -34,23 +35,50 @@ public class SimulatorParametersTest {
 
     @Test
     public void testValidate() throws CoderException {
-
-        // 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);
+    @Test
+    public void testValidateEmptyRestServer() throws CoderException {
+        SimulatorParameters params = new StandardCoder()
+                        .decode(new File("src/test/resources/emptyRestServer.json"), SimulatorParameters.class);
+        assertNull(params.validate("ValidParams").getResult());
+    }
+
+    @Test
+    public void testValidateInvalidDmaapProvider() throws CoderException {
+        SimulatorParameters params = new StandardCoder()
+                        .decode(new File("src/test/resources/invalidDmaapProvider.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");
+    @Test
+    public void testValidateInvalidDmaapName() throws CoderException {
+        SimulatorParameters params = new StandardCoder().decode(
+                        new File("src/test/resources/invalidDmaapName.json"), SimulatorParameters.class);
+        BeanValidationResult result = params.validate("InvalidDmaapParams");
+        assertFalse(result.isValid());
+        assertThat(result.getResult()).contains("item \"name\" value \"null\"");
+    }
+
+    @Test
+    public void testValidateInvalidTopicSweep() throws CoderException {
+        SimulatorParameters params = new StandardCoder().decode(
+                        new File("src/test/resources/invalidTopicSweep.json"), SimulatorParameters.class);
+        BeanValidationResult result = params.validate("InvalidDmaapParams");
+        assertFalse(result.isValid());
+        assertThat(result.getResult()).contains("topicSweepSec");
+    }
+
+    @Test
+    public void testValidateInvalidGrpcServer() throws CoderException {
+        SimulatorParameters params = new StandardCoder()
+                        .decode(new File("src/test/resources/invalidGrpcServer.json"), SimulatorParameters.class);
+        BeanValidationResult result = params.validate("InvalidGrpcParams");
         assertFalse(result.isValid());
         assertNotNull(result.getResult());
     }
diff --git a/models-sim/policy-models-simulators/src/test/resources/emptyRestServer.json b/models-sim/policy-models-simulators/src/test/resources/emptyRestServer.json
new file mode 100644 (file)
index 0000000..4a86253
--- /dev/null
@@ -0,0 +1,11 @@
+{
+    "dmaapProvider": {
+        "name": "DMaaP simulator",
+        "topicSweepSec": 300,
+        "restServerParameters": {}
+    },
+    "restServers": [],
+    "topicSinks": [],
+    "topicSources": [],
+    "topicServers": []
+}
diff --git a/models-sim/policy-models-simulators/src/test/resources/invalidDmaapName.json b/models-sim/policy-models-simulators/src/test/resources/invalidDmaapName.json
new file mode 100644 (file)
index 0000000..889c4c8
--- /dev/null
@@ -0,0 +1,10 @@
+{
+    "dmaapProvider": {
+        "name": null,
+        "topicSweepSec":300
+    },
+    "restServers": [],
+    "topicSinks": [],
+    "topicSources": [],
+    "topicServers": []
+}
diff --git a/models-sim/policy-models-simulators/src/test/resources/invalidTopicSweep.json b/models-sim/policy-models-simulators/src/test/resources/invalidTopicSweep.json
new file mode 100644 (file)
index 0000000..11a37d5
--- /dev/null
@@ -0,0 +1,10 @@
+{
+    "dmaapProvider": {
+        "name": "DMaaP simulator",
+        "topicSweepSec":0
+    },
+    "restServers": [],
+    "topicSinks": [],
+    "topicSources": [],
+    "topicServers": []
+}