Refactor Control Loop Parameters in Spring 49/122649/5
authorFrancescoFioraEst <francesco.fiora@est.tech>
Tue, 13 Jul 2021 09:30:02 +0000 (10:30 +0100)
committerFrancescoFioraEst <francesco.fiora@est.tech>
Tue, 20 Jul 2021 13:13:14 +0000 (14:13 +0100)
Issue-ID: POLICY-3461
Change-Id: I54351d02da9bfa2b775f40fad0a12a4f32994cd9
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
27 files changed:
common/src/test/resources/demo/Notes.txt
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/Application.java
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/PropertiesConfig.java [deleted file]
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterGroup.java
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterHandler.java [deleted file]
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantParameters.java
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantStateChangeParameters.java
runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ParticipantUpdateParameters.java
runtime-controlloop/src/main/resources/application.yaml
runtime-controlloop/src/main/resources/parameters/ClRuntimeParameters.json [deleted file]
runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java
runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/config/messaging/MessageDispatcherActivatorTest.java
runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java
runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java
runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/supervision/comm/SupervisionMessagesTest.java
runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/CommonTestData.java
runtime-controlloop/src/test/resources/application_test.properties
runtime-controlloop/src/test/resources/parameters/CommissioningConfig.json [deleted file]
runtime-controlloop/src/test/resources/parameters/EmptyParameters.json [deleted file]
runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json [deleted file]
runtime-controlloop/src/test/resources/parameters/InstantiationConfigParameters_InvalidName.json [deleted file]
runtime-controlloop/src/test/resources/parameters/InstantiationConfigParameters_sim.json [deleted file]
runtime-controlloop/src/test/resources/parameters/InvalidParameters.json [deleted file]
runtime-controlloop/src/test/resources/parameters/MinimumParametersH2.json [deleted file]
runtime-controlloop/src/test/resources/parameters/NoParameters.json [deleted file]
runtime-controlloop/src/test/resources/parameters/TestParameters.json
runtime-controlloop/src/test/resources/parameters/Unreadable.json [deleted file]

index 315d640..777cdc0 100644 (file)
@@ -11,8 +11,8 @@ mvn exec:java  -Dexec.mainClass=org.onap.policy.models.sim.dmaap.startstop.Main
 
 
 Run CL from command line
-Go to clamp/tosca-controlloop/runtime
-mvn exec:java  -Dexec.mainClass=org.onap.policy.clamp.controlloop.runtime.main.startstop.Main -Dexec.args="-c src/test/resources/parameters/TestParametersMariaDB.json"
+Go to clamp/runtime-controlloop
+mvn spring-boot:run -Dspring-boot.run.arguments="--topicServer=localhost --mariadb.host=localhost"
 
 Run Participant from command line using Maven
 mvn spring-boot:run -Dspring-boot.run.arguments="--server.port=8080 --topicServer=localhost"
index 6b77251..28814b3 100644 (file)
@@ -22,11 +22,13 @@ package org.onap.policy.clamp.controlloop.runtime;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
 @ComponentScan({"org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider",
     "org.onap.policy.clamp.controlloop.runtime"})
+@ConfigurationPropertiesScan("org.onap.policy.clamp.controlloop.runtime.main.parameters")
 public class Application {
 
     public static void main(String[] args) {
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/PropertiesConfig.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/config/PropertiesConfig.java
deleted file mode 100644 (file)
index 04bd35d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.config;
-
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterHandler;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-@Configuration
-public class PropertiesConfig {
-
-    @Bean
-    public ClRuntimeParameterGroup clRuntimeParameterGroup(@Value("${runtime.file}") String file)
-            throws ControlLoopException {
-        return new ClRuntimeParameterHandler().getParameters(file);
-    }
-}
index 433eeee..f46b902 100644 (file)
 
 package org.onap.policy.clamp.controlloop.runtime.main.parameters;
 
-import javax.validation.constraints.NotBlank;
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
 import lombok.Getter;
-import org.onap.policy.common.endpoints.parameters.RestServerParameters;
+import lombok.Setter;
 import org.onap.policy.common.endpoints.parameters.TopicParameterGroup;
-import org.onap.policy.common.parameters.ParameterGroupImpl;
-import org.onap.policy.common.parameters.annotations.NotNull;
+import org.onap.policy.common.parameters.validation.ParameterGroupConstraint;
 import org.onap.policy.models.provider.PolicyModelsProviderParameters;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.validation.annotation.Validated;
 
 /**
  * Class to hold all parameters needed for the Control Loop runtime component.
  *
  */
-@NotNull
-@NotBlank
+@Validated
 @Getter
-public class ClRuntimeParameterGroup extends ParameterGroupImpl {
-    private RestServerParameters restServerParameters;
+@Setter
+@ConfigurationProperties(prefix = "runtime")
+public class ClRuntimeParameterGroup {
+
+    @NotNull
+    @ParameterGroupConstraint
     private PolicyModelsProviderParameters databaseProviderParameters;
+
+    @Valid
+    @NotNull
     private ParticipantParameters participantParameters;
+
+    @NotNull
+    @ParameterGroupConstraint
     private TopicParameterGroup topicParameterGroup;
 
+    @Min(value = 0)
     private long supervisionScannerIntervalSec;
+
+    @Min(value = 0)
     private long participantStateChangeIntervalSec;
+
+    @Min(value = 0)
     private long participantClUpdateIntervalSec;
+
+    @Min(value = 0)
     private long participantClStateChangeIntervalSec;
     private long participantRegisterAckIntervalSec;
     private long participantDeregisterAckIntervalSec;
     private long participantUpdateIntervalSec;
 
-    /**
-     * Create the Control Loop parameter group.
-     *
-     * @param name the parameter group name
-     */
-    public ClRuntimeParameterGroup(final String name) {
-        super(name);
-    }
 }
diff --git a/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterHandler.java b/runtime-controlloop/src/main/java/org/onap/policy/clamp/controlloop/runtime/main/parameters/ClRuntimeParameterHandler.java
deleted file mode 100644 (file)
index bcf1124..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2021 Nordix Foundation.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * SPDX-License-Identifier: Apache-2.0
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.policy.clamp.controlloop.runtime.main.parameters;
-
-import java.io.File;
-import javax.ws.rs.core.Response;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.common.parameters.ValidationResult;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
-
-/**
- * This class handles reading, parsing and validating of control loop runtime parameters from JSON files.
- */
-public class ClRuntimeParameterHandler {
-
-    private static final Coder CODER = new StandardCoder();
-
-    /**
-     * Read the parameters from the parameter file.
-     *
-     * @param path the path passed to control loop runtime
-     * @return the parameters read from the configuration file
-     * @throws ControlLoopException on parameter exceptions
-     */
-    public ClRuntimeParameterGroup getParameters(final String path) throws ControlLoopException {
-        ClRuntimeParameterGroup clRuntimeParameterGroup = null;
-
-        // Read the parameters
-        try {
-            // Read the parameters from JSON
-            File file = new File(path);
-            clRuntimeParameterGroup = CODER.decode(file, ClRuntimeParameterGroup.class);
-        } catch (final CoderException e) {
-            throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
-                    "error reading parameters from \"" + path + "\"\n" + "(" + e.getClass().getSimpleName() + ")", e);
-        }
-
-        // The JSON processing returns null if there is an empty file
-        if (clRuntimeParameterGroup == null) {
-            throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE, "no parameters found in \"" + path + "\"");
-        }
-
-        // validate the parameters
-        final ValidationResult validationResult = clRuntimeParameterGroup.validate();
-        if (!validationResult.isValid()) {
-            throw new ControlLoopException(Response.Status.NOT_ACCEPTABLE,
-                    "validation error(s) on parameters from \"" + path + "\"\n" + validationResult.getResult());
-        }
-
-        return clRuntimeParameterGroup;
-    }
-}
index dfc1b28..a4e84af 100644 (file)
 package org.onap.policy.clamp.controlloop.runtime.main.parameters;
 
 import java.util.concurrent.TimeUnit;
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
 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;
+import lombok.Setter;
+import org.springframework.validation.annotation.Validated;
 
 /**
  * Parameters for communicating with participants.
  */
-@NotNull
-@NotBlank
 @Getter
-public class ParticipantParameters extends ParameterGroupImpl {
+@Setter
+@Validated
+public class ParticipantParameters {
 
     /**
      * Default maximum message age, in milliseconds, that should be examined. Any message
@@ -39,21 +40,18 @@ public class ParticipantParameters extends ParameterGroupImpl {
      */
     public static final long DEFAULT_MAX_AGE_MS = TimeUnit.MILLISECONDS.convert(10, TimeUnit.MINUTES);
 
-
     @Min(1)
     private long heartBeatMs;
 
     @Min(1)
     private long maxMessageAgeMs =  DEFAULT_MAX_AGE_MS;
 
+    @Valid
+    @NotNull
     private ParticipantUpdateParameters updateParameters;
-    private ParticipantStateChangeParameters stateChangeParameters;
 
+    @Valid
+    @NotNull
+    private ParticipantStateChangeParameters stateChangeParameters;
 
-    /**
-     * Constructs the object.
-     */
-    public ParticipantParameters() {
-        super(ParticipantParameters.class.getSimpleName());
-    }
 }
index 2eea4ab..a3e2eee 100644 (file)
 
 package org.onap.policy.clamp.controlloop.runtime.main.parameters;
 
+import javax.validation.constraints.Min;
 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;
+import lombok.Setter;
+import org.springframework.validation.annotation.Validated;
 
 /**
  * Parameters for Participant STATE-CHANGE requests.
  */
-@NotNull
-@NotBlank
 @Getter
-public class ParticipantStateChangeParameters extends ParameterGroupImpl {
+@Setter
+@Validated
+public class ParticipantStateChangeParameters {
 
     /**
      * Maximum number of times to re-send a request to a PDP.
@@ -44,10 +43,4 @@ public class ParticipantStateChangeParameters extends ParameterGroupImpl {
     @Min(value = 0)
     private long maxWaitMs;
 
-    /**
-     * Constructs the object.
-     */
-    public ParticipantStateChangeParameters() {
-        super(ParticipantStateChangeParameters.class.getSimpleName());
-    }
 }
index 2af5be5..8102fe9 100644 (file)
 
 package org.onap.policy.clamp.controlloop.runtime.main.parameters;
 
+import javax.validation.constraints.Min;
 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;
+import lombok.Setter;
+import org.springframework.validation.annotation.Validated;
 
 /**
  * Parameters for Participant UPDATE requests.
  */
-@NotNull
-@NotBlank
 @Getter
-public class ParticipantUpdateParameters extends ParameterGroupImpl {
+@Setter
+@Validated
+public class ParticipantUpdateParameters {
 
     /**
      * Maximum number of times to re-send a request to a PDP.
@@ -44,11 +43,4 @@ public class ParticipantUpdateParameters extends ParameterGroupImpl {
     @Min(value = 0)
     private long maxWaitMs;
 
-    /**
-     * Constructs the object.
-     */
-    public ParticipantUpdateParameters() {
-        super(ParticipantUpdateParameters.class.getSimpleName());
-    }
 }
-
index af9966d..3bc2749 100644 (file)
@@ -19,4 +19,33 @@ server:
 
 
 runtime:
-  file: src/main/resources/parameters/ClRuntimeParameters.json
+  supervisionScannerIntervalSec: 1000
+  participantStateChangeIntervalSec: 1000
+  participantClUpdateIntervalSec: 1000
+  participantClStateChangeIntervalSec: 1000
+  participantParameters:
+    heartBeatMs: 120000
+    updateParameters:
+      maxRetryCount: 1
+      maxWaitMs: 30000
+    stateChangeParameters:
+      maxRetryCount: 1
+      maxWaitMs: 30000
+  databaseProviderParameters:
+    name: PolicyProviderParameterGroup
+    implementation: org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
+    databaseDriver: org.mariadb.jdbc.Driver
+    databaseUrl: jdbc:mariadb://${mariadb.host:mariadb}:${mariadb.port:3306}/controlloop
+    databaseUser: policy
+    databasePassword: P01icY
+    persistenceUnit: CommissioningMariaDb
+  topicParameterGroup:
+    topicSources[0]:
+      topic: POLICY-CLRUNTIME-PARTICIPANT
+      servers[0]: ${topicServer:message-router}
+      topicCommInfrastructure: dmaap
+      fetchTimeout: 15000
+    topicSinks[0]:
+      topic: POLICY-CLRUNTIME-PARTICIPANT
+      servers[0]: ${topicServer:message-router}
+      topicCommInfrastructure: dmaap
diff --git a/runtime-controlloop/src/main/resources/parameters/ClRuntimeParameters.json b/runtime-controlloop/src/main/resources/parameters/ClRuntimeParameters.json
deleted file mode 100644 (file)
index 00ca7f9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-    "name": "ControlLoopRuntimeGroup",
-    "supervisionScannerIntervalSec": 1000,
-    "participantStateChangeIntervalSec": 1000,
-    "participantClUpdateIntervalSec": 1000,
-    "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "0.0.0.0",
-        "port": 6969,
-        "userName": "healthcheck",
-        "password": "zb!XztG34",
-        "https": false,
-        "aaf": false
-    },
-    "participantParameters": {
-        "heartBeatMs": 120000,
-        "updateParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        },
-        "stateChangeParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        }
-    },
-    "databaseProviderParameters": {
-        "name": "PolicyProviderParameterGroup",
-        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-        "databaseDriver": "org.mariadb.jdbc.Driver",
-        "databaseUrl": "jdbc:mariadb://mariadb:3306/controlloop",
-        "databaseUser": "policy",
-        "databasePassword": "P01icY",
-        "persistenceUnit": "CommissioningMariaDb"
-    },
-    "topicParameterGroup": {
-        "topicSources": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "message-router"
-                ],
-                "topicCommInfrastructure": "dmaap",
-                "fetchTimeout": 15000
-            }
-        ],
-        "topicSinks": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "message-router"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ]
-    }
-}
index 4403807..448df41 100644 (file)
@@ -31,9 +31,6 @@ import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.controlloop.models.controlloop.persistence.provider.ControlLoopProvider;
 import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
 import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
-import org.onap.policy.common.utils.coder.Coder;
-import org.onap.policy.common.utils.coder.CoderException;
-import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.coder.YamlJsonTranslator;
 import org.onap.policy.common.utils.resources.ResourceUtils;
 import org.onap.policy.models.provider.PolicyModelsProvider;
@@ -46,31 +43,11 @@ class CommissioningProviderTest {
     private static final String TOSCA_SERVICE_TEMPLATE_YAML =
             "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml";
     private static final String TEMPLATE_IS_NULL = ".*serviceTemplate is marked non-null but is null";
-    private static final Coder CODER = new StandardCoder();
     private static final YamlJsonTranslator yamlTranslator = new YamlJsonTranslator();
-    private static int dbNum = 0;
-    private static final Object lockit = new Object();
 
     private PolicyModelsProvider modelsProvider = null;
     private ControlLoopProvider clProvider = null;
 
-    private static String getParameterGroupAsString() {
-        dbNum++;
-        return ResourceUtils.getResourceAsString("src/test/resources/parameters/TestParameters.json")
-                .replace("jdbc:h2:mem:testdb", "jdbc:h2:mem:commissioningdb" + dbNum);
-    }
-
-    /**
-     * return a Cl Runtime Parameters.
-     *
-     * @throws CoderException .
-     */
-    public ClRuntimeParameterGroup getClRuntimeParameterGroup() throws CoderException {
-        synchronized (lockit) {
-            return CODER.decode(getParameterGroupAsString(), ClRuntimeParameterGroup.class);
-        }
-    }
-
     @AfterEach
     void close() throws Exception {
         if (modelsProvider != null) {
@@ -88,7 +65,7 @@ class CommissioningProviderTest {
      */
     @Test
     void testGetControlLoopDefinitions() throws Exception {
-        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
+        ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLDefinitions");
         modelsProvider =
                 CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
@@ -125,7 +102,7 @@ class CommissioningProviderTest {
      */
     @Test
     void testCreateControlLoopDefinitions() throws Exception {
-        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
+        ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("createCLDefinitions");
         modelsProvider =
                 CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
@@ -154,7 +131,7 @@ class CommissioningProviderTest {
      */
     @Test
     void testDeleteControlLoopDefinitions() throws Exception {
-        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
+        ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("deleteCLDefinitions");
         modelsProvider =
                 CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
@@ -182,7 +159,7 @@ class CommissioningProviderTest {
      */
     @Test
     void testGetControlLoopElementDefinitions() throws Exception {
-        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
+        ClRuntimeParameterGroup clRuntimeParameterGroup = CommonTestData.geParameterGroup("getCLElDefinitions");
         modelsProvider =
                 CommonTestData.getPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(clRuntimeParameterGroup.getDatabaseProviderParameters());
index 2b4abaa..461c8b5 100644 (file)
@@ -33,8 +33,8 @@ import static org.mockito.Mockito.when;
 
 import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
-import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterHandler;
 import org.onap.policy.clamp.controlloop.runtime.supervision.comm.ParticipantStatusListener;
+import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.common.utils.coder.StandardCoderObject;
@@ -52,8 +52,7 @@ class MessageDispatcherActivatorTest {
 
     @Test
     void testStartAndStop() throws Exception {
-        final String path = "src/test/resources/parameters/TestParameters.json";
-        ClRuntimeParameterGroup parameterGroup = new ClRuntimeParameterHandler().getParameters(path);
+        ClRuntimeParameterGroup parameterGroup = CommonTestData.geParameterGroup("dbtest");
 
         var publisherFirst = spy(mock(Publisher.class));
         var publisherSecond = spy(mock(Publisher.class));
index b92f341..b474b0c 100644 (file)
@@ -100,7 +100,7 @@ class ControlLoopInstantiationProviderTest {
      */
     @BeforeAll
     public static void setupDbProviderParameters() throws PfModelException {
-        ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup(0, "instantproviderdb");
+        ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup("instantproviderdb");
 
         modelsProvider =
                 CommonTestData.getPolicyModelsProvider(controlLoopParameters.getDatabaseProviderParameters());
index c47211a..5f885ec 100644 (file)
@@ -97,7 +97,7 @@ class TestMonitoringProvider {
 
     @Test
     void testCreateParticipantStatistics() throws Exception {
-        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "createparStat");
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("createparStat");
         participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters());
         clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters());
@@ -123,7 +123,7 @@ class TestMonitoringProvider {
 
     @Test
     void testGetParticipantStatistics() throws Exception {
-        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getparStat");
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getparStat");
         participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters());
         clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters());
@@ -156,7 +156,7 @@ class TestMonitoringProvider {
 
     @Test
     void testCreateClElementStatistics() throws Exception {
-        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "createelemstat");
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("createelemstat");
         participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters());
         clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters());
@@ -183,14 +183,13 @@ class TestMonitoringProvider {
 
     @Test
     void testGetClElementStatistics() throws Exception {
-        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getelemstat");
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getelemstat");
         participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters());
         clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters());
         clProvider = new ControlLoopProvider(parameters.getDatabaseProviderParameters());
 
         MonitoringProvider provider =
                 new MonitoringProvider(participantStatisticsProvider, clElementStatisticsProvider, clProvider);
-
         assertThatThrownBy(() -> {
             provider.fetchFilteredClElementStatistics(null, null, null, null, null, 0);
         }).hasMessageMatching("name is marked .*null but is null");
@@ -217,7 +216,7 @@ class TestMonitoringProvider {
 
     @Test
     void testGetParticipantStatsPerCL() throws Exception {
-        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getparStatCL");
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getparStatCL");
         participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters());
         clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters());
         var mockClProvider = Mockito.mock(ControlLoopProvider.class);
@@ -253,7 +252,7 @@ class TestMonitoringProvider {
         mockCL.setElements(new LinkedHashMap<>());
         mockCL.getElements().put(mockClElement.getId(), mockClElement);
 
-        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getelemstatPerCL");
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup("getelemstatPerCL");
         participantStatisticsProvider = new ParticipantStatisticsProvider(parameters.getDatabaseProviderParameters());
         clElementStatisticsProvider = new ClElementStatisticsProvider(parameters.getDatabaseProviderParameters());
         ControlLoopProvider mockClProvider = Mockito.mock(ControlLoopProvider.class);
@@ -265,8 +264,8 @@ class TestMonitoringProvider {
 
         monitoringProvider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
 
-        ClElementStatisticsList getResponse;
-        getResponse = monitoringProvider.fetchClElementStatsPerControlLoop("testCLName", "1.001");
+        ClElementStatisticsList getResponse =
+                monitoringProvider.fetchClElementStatsPerControlLoop("testCLName", "1.001");
 
         assertThat(getResponse.getClElementStatistics()).hasSize(2);
         assertEquals(getResponse.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""),
index f08cda1..305850c 100644 (file)
@@ -20,8 +20,6 @@
 
 package org.onap.policy.clamp.controlloop.runtime.supervision.comm;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
 import java.time.Instant;
 import java.util.Collections;
 import java.util.List;
@@ -79,7 +77,7 @@ class SupervisionMessagesTest extends CommonRestController {
      */
     @BeforeAll
     public static void setupDbProviderParameters() throws PfModelException {
-        ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup(0, "instantproviderdb");
+        ClRuntimeParameterGroup controlLoopParameters = CommonTestData.geParameterGroup("instantproviderdb");
 
         modelsProvider =
                 CommonTestData.getPolicyModelsProvider(controlLoopParameters.getDatabaseProviderParameters());
index 464c143..300c662 100644 (file)
@@ -38,19 +38,18 @@ import org.onap.policy.models.provider.PolicyModelsProviderParameters;
  *
  */
 public class CommonTestData {
-    private static final Coder coder = new StandardCoder();
+    private static final Coder CODER = new StandardCoder();
 
     /**
      * Gets the standard Control Loop parameters.
      *
-     * @param port port to be inserted into the parameters
      * @param dbName the database name
      * @return the standard Control Loop parameters
      * @throws ControlLoopRuntimeException on errors reading the control loop parameters
      */
-    public static ClRuntimeParameterGroup geParameterGroup(final int port, final String dbName) {
+    public static ClRuntimeParameterGroup geParameterGroup(final String dbName) {
         try {
-            return coder.decode(getParameterGroupAsString(port, dbName), ClRuntimeParameterGroup.class);
+            return CODER.convert(getParameterGroupAsString(dbName), ClRuntimeParameterGroup.class);
 
         } catch (CoderException e) {
             throw new ControlLoopRuntimeException(Status.NOT_ACCEPTABLE, "cannot read Control Loop parameters", e);
@@ -60,13 +59,12 @@ public class CommonTestData {
     /**
      * Gets the standard Control Loop parameters, as a String.
      *
-     * @param port port to be inserted into the parameters
      * @param dbName the database name
      * @return the standard Control Loop parameters as string
      */
-    public static String getParameterGroupAsString(final int port, final String dbName) {
-        return ResourceUtils.getResourceAsString("src/test/resources/parameters/InstantiationConfigParametersStd.json")
-                .replace("${port}", String.valueOf(port)).replace("${dbName}", "jdbc:h2:mem:" + dbName);
+    public static String getParameterGroupAsString(final String dbName) {
+        return ResourceUtils.getResourceAsString("src/test/resources/parameters/TestParameters.json")
+                .replace("${dbName}", "jdbc:h2:mem:" + dbName);
     }
 
     /**
index fc24ea2..e51db25 100644 (file)
@@ -6,4 +6,26 @@ server.port=6969
 server.servlet.context-path=/onap/controlloop
 server.error.path=/error
 
-runtime.file=src/test/resources/parameters/TestParameters.json
+runtime.supervisionScannerIntervalSec=1000
+runtime.participantStateChangeIntervalSec=1000
+runtime.participantClUpdateIntervalSec=1000
+runtime.participantClStateChangeIntervalSec=1000
+runtime.participantParameters.heartBeatMs=120000
+runtime.participantParameters.updateParameters.maxRetryCount=1
+runtime.participantParameters.updateParameters.maxWaitMs=30000
+runtime.participantParameters.stateChangeParameters.maxRetryCount=1
+runtime.participantParameters.stateChangeParameters.maxWaitMs=30000
+runtime.databaseProviderParameters.name=PolicyProviderParameterGroup
+runtime.databaseProviderParameters.implementation=org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl
+runtime.databaseProviderParameters.databaseDriver=org.h2.Driver
+runtime.databaseProviderParameters.databaseUrl=jdbc:h2:mem:testdb
+runtime.databaseProviderParameters.databaseUser=policy
+runtime.databaseProviderParameters.databasePassword=P01icY
+runtime.databaseProviderParameters.persistenceUnit=ToscaConceptTest
+runtime.topicParameterGroup.topicSources[0].topic=POLICY-CLRUNTIME-PARTICIPANT
+runtime.topicParameterGroup.topicSources[0].servers[0]=localhost
+runtime.topicParameterGroup.topicSources[0].topicCommInfrastructure=dmaap
+runtime.topicParameterGroup.topicSources[0].fetchTimeout=15000
+runtime.topicParameterGroup.topicSinks[0].topic=POLICY-CLRUNTIME-PARTICIPANT
+runtime.topicParameterGroup.topicSinks[0].servers[0]=localhost
+runtime.topicParameterGroup.topicSinks[0].topicCommInfrastructure=dmaap
diff --git a/runtime-controlloop/src/test/resources/parameters/CommissioningConfig.json b/runtime-controlloop/src/test/resources/parameters/CommissioningConfig.json
deleted file mode 100644 (file)
index 762e3f7..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "name": "CommissioningGroup",
-  "supervisionScannerIntervalSec" : 1000,
-  "participantStateChangeIntervalSec" : 1000,
-  "participantClUpdateIntervalSec" : 1000,
-  "participantClStateChangeIntervalSec" : 1000,
-  "restServerParameters": {
-    "host": "127.0.0.1",
-    "port": 6969,
-    "userName": "admin",
-    "password": "password",
-    "https": false,
-    "aaf": false
-  },
-  "databaseProviderParameters": {
-    "name": "CommissioningProviderParameterGroup",
-    "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-    "databaseDriver": "org.h2.Driver",
-    "databaseUrl": "jdbc:h2:mem:testdb",
-    "databaseUser": "controlloop",
-    "databasePassword": "C0ntr0lL00p",
-    "persistenceUnit": "ToscaConceptTest"
-  }
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/EmptyParameters.json b/runtime-controlloop/src/test/resources/parameters/EmptyParameters.json
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json b/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json
deleted file mode 100644 (file)
index 71df254..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-    "name": "ControlLoopRuntimeGroup",
-    "supervisionScannerIntervalSec": 1000,
-    "participantStateChangeIntervalSec": 1000,
-    "participantClUpdateIntervalSec": 1000,
-    "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "0.0.0.0",
-        "port": ${port},
-        "userName": "healthcheck",
-        "password": "zb!XztG34",
-        "https": false,
-        "aaf": false
-    },
-    "participantParameters": {
-        "heartBeatMs": 120000,
-        "updateParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        },
-        "stateChangeParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        }
-    },
-    "databaseProviderParameters": {
-        "name": "PolicyProviderParameterGroup",
-        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-        "databaseDriver": "org.h2.Driver",
-        "databaseUrl": "${dbName}",
-        "databaseUser": "policy",
-        "databasePassword": "P01icY",
-        "persistenceUnit": "InstantiationTests"
-    },
-    "topicParameterGroup": {
-        "topicSources": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap",
-                "fetchTimeout": 15000
-            }
-        ],
-        "topicSinks": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ]
-    }
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParameters_InvalidName.json b/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParameters_InvalidName.json
deleted file mode 100644 (file)
index 944bc77..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "name": " ",
-    "supervisionScannerIntervalSec": 1000,
-    "participantStateChangeIntervalSec": 1000,
-    "participantClUpdateIntervalSec": 1000,
-    "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "127.0.0.1",
-        "port": 6969,
-        "userName": "admin",
-        "password": "password",
-        "https": false,
-        "aaf": false
-    },
-    "pdpParameters": {
-        "heartBeatMs": 1,
-        "updateParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 1
-        },
-        "stateChangeParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 1
-        }
-    },
-    "databaseProviderParameters": {
-        "name": "PolicyProviderParameterGroup",
-        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-        "databaseDriver": "org.h2.Driver",
-        "databaseUrl": "jdbc:h2:mem:testdb",
-        "databaseUser": "policy",
-        "databasePassword": "P01icY",
-        "persistenceUnit": "PdpGroupTest"
-    }
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParameters_sim.json b/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParameters_sim.json
deleted file mode 100644 (file)
index 47cb748..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-    "name": "Instantiation",
-    "supervisionScannerIntervalSec": 1000,
-    "participantStateChangeIntervalSec": 1000,
-    "participantClUpdateIntervalSec": 1000,
-    "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "127.0.0.1",
-        "port": 6969,
-        "userName": "admin",
-        "password": "password",
-        "https": false,
-        "aaf": false
-    },
-    "pdpParameters": {
-        "heartBeatMs": 10,
-        "updateParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        },
-        "stateChangeParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        }
-    },
-    "databaseProviderParameters": {
-        "name": "PolicyProviderParameterGroup",
-        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-        "databaseDriver": "org.mariadb.jdbc.Driver",
-        "databaseUrl": "jdbc:mariadb://localhost:3306/policyadmin",
-        "databaseUser": "policy",
-        "databasePassword": "UDAxaWNZ",
-        "persistenceUnit": "PolicyMariaDb"
-    },
-    "topicParameterGroup": {
-        "topicSources": [
-            {
-                "topic": "INSTANTIATION",
-                "servers": [
-                    "localhost:6845"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ],
-        "topicSinks": [
-            {
-                "topic": "INSTANTIATION",
-                "servers": [
-                    "localhost:6845"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ]
-    }
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/InvalidParameters.json b/runtime-controlloop/src/test/resources/parameters/InvalidParameters.json
deleted file mode 100644 (file)
index 976ec29..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "name": ""
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/MinimumParametersH2.json b/runtime-controlloop/src/test/resources/parameters/MinimumParametersH2.json
deleted file mode 100644 (file)
index 2be6429..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-    "name": "PapGroup",
-    "supervisionScannerIntervalSec": 1000,
-    "participantStateChangeIntervalSec": 1000,
-    "participantClUpdateIntervalSec": 1000,
-    "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "0.0.0.0",
-        "port": 6969,
-        "userName": "healthcheck",
-        "password": "zb!XztG34"
-    },
-    "pdpParameters": {
-        "heartBeatMs": 1,
-        "updateParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 1
-        },
-        "stateChangeParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 1
-        }
-    },
-    "databaseProviderParameters": {
-        "name": "PolicyProviderParameterGroup",
-        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-        "databaseDriver": "org.h2.Driver",
-        "databaseUrl": "jdbc:h2:mem:testdb",
-        "databaseUser": "policy",
-        "databasePassword": "P01icY",
-        "persistenceUnit": "PdpGroupTest"
-    },
-    "topicParameterGroup": {
-        "topicSources": [
-            {
-                "topic": "POLICY-PDP-PAP",
-                "servers": [
-                    "message-router"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ],
-        "topicSinks": [
-            {
-                "topic": "POLICY-PDP-PAP",
-                "servers": [
-                    "message-router"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ]
-    }
-}
diff --git a/runtime-controlloop/src/test/resources/parameters/NoParameters.json b/runtime-controlloop/src/test/resources/parameters/NoParameters.json
deleted file mode 100644 (file)
index 2c63c08..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-{
-}
index 680e070..07c90d7 100644 (file)
@@ -4,14 +4,6 @@
     "participantStateChangeIntervalSec": 1000,
     "participantClUpdateIntervalSec": 1000,
     "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "0.0.0.0",
-        "port": 6969,
-        "userName": "healthcheck",
-        "password": "zb!XztG34",
-        "https": false,
-        "aaf": false
-    },
     "participantParameters": {
         "heartBeatMs": 120000,
         "updateParameters": {
         "name": "PolicyProviderParameterGroup",
         "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
         "databaseDriver": "org.h2.Driver",
-        "databaseUrl": "jdbc:h2:mem:testdb",
+        "databaseUrl": "${dbName}",
         "databaseUser": "policy",
         "databasePassword": "P01icY",
-        "persistenceUnit": "ToscaConceptTest"
+        "persistenceUnit": "InstantiationTests"
     },
     "topicParameterGroup": {
         "topicSources": [
diff --git a/runtime-controlloop/src/test/resources/parameters/Unreadable.json b/runtime-controlloop/src/test/resources/parameters/Unreadable.json
deleted file mode 100644 (file)
index ddd04ed..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-{
-    "name": "ControlLoopRuntimeGroup",
-    "supervisionScannerIntervalSec": 1000,
-    "participantStateChangeIntervalSec": 1000,
-    "participantClUpdateIntervalSec": 1000,
-    "participantClStateChangeIntervalSec": 1000,
-    "restServerParameters": {
-        "host": "0.0.0.0",
-        "port": 6969,
-        "userName": "healthcheck",
-        "password": "zb!XztG34",
-        "https": false,
-        "aaf": false
-    },
-    "participantParameters": {
-        "heartBeatMs": 120000,
-        "updateParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        },
-        "stateChangeParameters": {
-            "maxRetryCount": 1,
-            "maxWaitMs": 30000
-        }
-    },
-    "databaseProviderParameters": {
-        "name": "PolicyProviderParameterGroup",
-        "implementation": "org.onap.policy.models.provider.impl.DatabasePolicyModelsProviderImpl",
-        "databaseDriver": "org.h2.Driver",
-        "databaseUrl": "jdbc:h2:mem:testdb",
-        "databaseUser": "policy",
-        "databasePassword": "P01icY",
-        "persistenceUnit": "ToscaConceptTest"
-    },
-    "topicParameterGroup": {
-        "topicSources": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap",
-                "fetchTimeout": 15000
-            }
-        ],
-        "topicSinks": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ]
-    }