Convert controlloop runtime to springboot framework

Issue-ID: POLICY-3355
Change-Id: Ie1667b749eed28b7e526cd4695f45d8ed736c4e7
Signed-off-by: FrancescoFioraEst <francesco.fiora@est.tech>
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java
index 956b5e9..fdddcf9 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/CommissioningProviderTest.java
@@ -22,26 +22,23 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.ArrayList;
 import java.util.List;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
 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.PolicyModelsProviderParameters;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeTemplate;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaNodeType;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 
-public class CommissioningProviderTest {
+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";
@@ -49,7 +46,6 @@
     private static final YamlJsonTranslator yamlTranslator = new YamlJsonTranslator();
     private static int dbNum = 0;
     private static final Object lockit = new Object();
-    private PolicyModelsProviderParameters databaseProviderParameters;
 
     private static String getParameterGroupAsString() {
         dbNum++;
@@ -58,15 +54,13 @@
     }
 
     /**
-     * Sets up db provider parameters before each test.
+     * return a Cl Runtime Parameters.
      *
      * @throws CoderException .
      */
-    @Before
-    public void setupDbProviderParameters() throws CoderException {
+    public ClRuntimeParameterGroup getClRuntimeParameterGroup() throws CoderException {
         synchronized (lockit) {
-            databaseProviderParameters = CODER.decode(getParameterGroupAsString(), ClRuntimeParameterGroup.class)
-                    .getDatabaseProviderParameters();
+            return CODER.decode(getParameterGroupAsString(), ClRuntimeParameterGroup.class);
         }
     }
 
@@ -76,14 +70,13 @@
      * @throws Exception .
      */
     @Test
-    public void testGetControlLoopDefinitions() throws Exception {
+    void testGetControlLoopDefinitions() throws Exception {
         List<ToscaNodeTemplate> listOfTemplates;
+        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
 
-        try (CommissioningProvider provider = new CommissioningProvider(databaseProviderParameters)) {
-            ToscaServiceTemplate serviceTemplate = yamlTranslator
-                    .fromYaml(ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML),
-                            ToscaServiceTemplate.class);
-
+        try (var provider = new CommissioningProvider(clRuntimeParameterGroup)) {
+            ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(
+                    ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML), ToscaServiceTemplate.class);
 
             listOfTemplates = provider.getControlLoopDefinitions(null, null);
             assertThat(listOfTemplates).isEmpty();
@@ -92,16 +85,16 @@
             listOfTemplates = provider.getControlLoopDefinitions(null, null);
             assertThat(listOfTemplates).hasSize(2);
 
-            //Test Filtering
-            listOfTemplates = provider.getControlLoopDefinitions("org.onap.domain.pmsh.PMSHControlLoopDefinition",
-                    "1.2.3");
+            // Test Filtering
+            listOfTemplates =
+                    provider.getControlLoopDefinitions("org.onap.domain.pmsh.PMSHControlLoopDefinition", "1.2.3");
             assertThat(listOfTemplates).hasSize(1);
             for (ToscaNodeTemplate template : listOfTemplates) {
-                //Other CL elements contain PMSD instead of PMSH in their name
-                assertFalse(template.getName().contains("PMSD"));
+                // Other CL elements contain PMSD instead of PMSH in their name
+                assertThat(template.getName()).doesNotContain("PMSD");
             }
 
-            //Test Wrong Name
+            // Test Wrong Name
             listOfTemplates = provider.getControlLoopDefinitions("WrongControlLoopName", "0.0.0");
             assertThat(listOfTemplates).isEmpty();
         }
@@ -113,18 +106,18 @@
      * @throws Exception .
      */
     @Test
-    public void testCreateControlLoopDefinitions() throws Exception {
+    void testCreateControlLoopDefinitions() throws Exception {
         List<ToscaNodeTemplate> listOfTemplates;
+        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
 
-        try (CommissioningProvider provider = new CommissioningProvider(databaseProviderParameters)) {
-            //Test Service template is null
+        try (var provider = new CommissioningProvider(clRuntimeParameterGroup)) {
+            // Test Service template is null
             assertThatThrownBy(() -> provider.createControlLoopDefinitions(null)).hasMessageMatching(TEMPLATE_IS_NULL);
             listOfTemplates = provider.getControlLoopDefinitions(null, null);
             assertThat(listOfTemplates).isEmpty();
 
-            ToscaServiceTemplate serviceTemplate = yamlTranslator
-                    .fromYaml(ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML),
-                            ToscaServiceTemplate.class);
+            ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(
+                    ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML), ToscaServiceTemplate.class);
 
             // Response should return the number of node templates present in the service template
             List<ToscaConceptIdentifier> affectedDefinitions =
@@ -141,13 +134,13 @@
      * @throws Exception .
      */
     @Test
-    public void testDeleteControlLoopDefinitions() throws Exception {
+    void testDeleteControlLoopDefinitions() throws Exception {
         List<ToscaNodeTemplate> listOfTemplates;
+        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
 
-        try (CommissioningProvider provider = new CommissioningProvider(databaseProviderParameters)) {
-            ToscaServiceTemplate serviceTemplate = yamlTranslator
-                    .fromYaml(ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML),
-                            ToscaServiceTemplate.class);
+        try (var provider = new CommissioningProvider(clRuntimeParameterGroup)) {
+            ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(
+                    ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML), ToscaServiceTemplate.class);
 
             listOfTemplates = provider.getControlLoopDefinitions(null, null);
             assertThat(listOfTemplates).isEmpty();
@@ -168,17 +161,17 @@
      * @throws Exception .
      */
     @Test
-    public void testGetControlLoopElementDefinitions() throws Exception {
-        try (CommissioningProvider provider = new CommissioningProvider(databaseProviderParameters)) {
-            ToscaServiceTemplate serviceTemplate = yamlTranslator
-                    .fromYaml(ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML),
-                            ToscaServiceTemplate.class);
+    void testGetControlLoopElementDefinitions() throws Exception {
+        ClRuntimeParameterGroup clRuntimeParameterGroup = getClRuntimeParameterGroup();
+        try (var provider = new CommissioningProvider(clRuntimeParameterGroup)) {
+            ToscaServiceTemplate serviceTemplate = yamlTranslator.fromYaml(
+                    ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML), ToscaServiceTemplate.class);
 
             provider.getControlLoopDefinitions(null, null);
 
             provider.createControlLoopDefinitions(serviceTemplate);
-            List<ToscaNodeTemplate> controlLoopDefinitionList = provider.getControlLoopDefinitions(
-                    "org.onap.domain.pmsh.PMSHControlLoopDefinition", "1.2.3");
+            List<ToscaNodeTemplate> controlLoopDefinitionList =
+                    provider.getControlLoopDefinitions("org.onap.domain.pmsh.PMSHControlLoopDefinition", "1.2.3");
 
             List<ToscaNodeTemplate> controlLoopElementNodeTemplates =
                     provider.getControlLoopElementDefinitions(controlLoopDefinitionList.get(0));
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java
index f7749e1..85bb2d1 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/commissioning/rest/CommissioningControllerTest.java
@@ -21,27 +21,38 @@
 package org.onap.policy.clamp.controlloop.runtime.commissioning.rest;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.List;
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.client.Invocation;
 import javax.ws.rs.core.Response;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.onap.policy.clamp.controlloop.models.messages.rest.commissioning.CommissioningResponse;
+import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
 import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
 import org.onap.policy.common.utils.coder.YamlJsonTranslator;
 import org.onap.policy.common.utils.resources.ResourceUtils;
 import org.onap.policy.models.provider.PolicyModelsProvider;
 import org.onap.policy.models.provider.PolicyModelsProviderFactory;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-public class CommissioningControllerTest extends CommonRestController {
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@TestPropertySource(locations = {"classpath:application_test.properties"})
+class CommissioningControllerTest extends CommonRestController {
 
     private static final String TOSCA_SERVICE_TEMPLATE_YAML =
             "src/test/resources/rest/servicetemplates/pmsh_multiple_cl_tosca.yaml";
@@ -49,62 +60,67 @@
     private static final String COMMISSIONING_ENDPOINT = "commission";
     private static ToscaServiceTemplate serviceTemplate = new ToscaServiceTemplate();
 
+    @Autowired
+    private ClRuntimeParameterGroup clRuntimeParameterGroup;
+
+    @LocalServerPort
+    private int randomServerPort;
+
     /**
      * starts Main and inserts a commissioning template.
      *
      * @throws Exception if an error occurs
      */
-    @BeforeClass
+    @BeforeAll
     public static void setUpBeforeClass() throws Exception {
-        CommonRestController.setUpBeforeClass("CommissioningApi");
 
         serviceTemplate = yamlTranslator.fromYaml(ResourceUtils.getResourceAsString(TOSCA_SERVICE_TEMPLATE_YAML),
                 ToscaServiceTemplate.class);
     }
 
-    @AfterClass
-    public static void teardownAfterClass() {
-        CommonRestController.teardownAfterClass();
+    @BeforeEach
+    public void setUpPort() {
+        super.setHttpPrefix(randomServerPort);
     }
 
     @Test
-    public void testSwagger() throws Exception {
+    void testSwagger() throws Exception {
         super.testSwagger(COMMISSIONING_ENDPOINT);
     }
 
     @Test
-    public void testUnauthorizedCreate() throws Exception {
+    void testUnauthorizedCreate() throws Exception {
         assertUnauthorizedPost(COMMISSIONING_ENDPOINT, Entity.json(serviceTemplate));
     }
 
     @Test
-    public void testUnauthorizedQuery() throws Exception {
+    void testUnauthorizedQuery() throws Exception {
         assertUnauthorizedGet(COMMISSIONING_ENDPOINT);
     }
 
     @Test
-    public void testUnauthorizedQueryElements() throws Exception {
+    void testUnauthorizedQueryElements() throws Exception {
         assertUnauthorizedGet(COMMISSIONING_ENDPOINT + "/elements");
     }
 
     @Test
-    public void testUnauthorizedDelete() throws Exception {
+    void testUnauthorizedDelete() throws Exception {
         assertUnauthorizedDelete(COMMISSIONING_ENDPOINT);
     }
 
     @Test
-    public void testCreateBadRequest() throws Exception {
+    void testCreateBadRequest() throws Exception {
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
         Response resp = invocationBuilder.post(Entity.json("NotToscaServiceTempalte"));
 
-        assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
+        assertThat(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode()).isEqualTo(resp.getStatus());
         CommissioningResponse commissioningResponse = resp.readEntity(CommissioningResponse.class);
-        assertNotNull(commissioningResponse.getErrorDetails());
-        assertNull(commissioningResponse.getAffectedControlLoopDefinitions());
+        assertThat(commissioningResponse.getErrorDetails()).isNotNull();
+        assertThat(commissioningResponse.getAffectedControlLoopDefinitions()).isNull();
     }
 
     @Test
-    public void testCreate() throws Exception {
+    void testCreate() throws Exception {
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
         Response resp = invocationBuilder.post(Entity.json(serviceTemplate));
         assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
@@ -121,7 +137,7 @@
     }
 
     @Test
-    public void testQuery_NoResultWithThisName() throws Exception {
+    void testQuery_NoResultWithThisName() throws Exception {
         createEntryInDB();
 
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "?name=noResultWithThisName");
@@ -132,7 +148,7 @@
     }
 
     @Test
-    public void testQuery() throws Exception {
+    void testQuery() throws Exception {
         createEntryInDB();
 
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
@@ -144,7 +160,7 @@
     }
 
     @Test
-    public void testQueryElementsBadRequest() throws Exception {
+    void testQueryElementsBadRequest() throws Exception {
         createEntryInDB();
 
         //Call get elements with no info
@@ -154,7 +170,7 @@
     }
 
     @Test
-    public void testQueryElements() throws Exception {
+    void testQueryElements() throws Exception {
         createEntryInDB();
 
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "/elements"
@@ -167,17 +183,17 @@
     }
 
     @Test
-    public void testDeleteBadRequest() throws Exception {
+    void testDeleteBadRequest() throws Exception {
         createEntryInDB();
 
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT);
         //Call delete with no info
         Response resp = invocationBuilder.delete();
-        assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), resp.getStatus());
+        assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
     }
 
     @Test
-    public void testDelete() throws Exception {
+    void testDelete() throws Exception {
         createEntryInDB();
 
         Invocation.Builder invocationBuilder = super.sendRequest(COMMISSIONING_ENDPOINT + "?name="
@@ -187,7 +203,7 @@
         assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
 
         try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory()
-                .createPolicyModelsProvider(CommonRestController.getParameters())) {
+                .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) {
             List<ToscaServiceTemplate> templatesInDB = modelsProvider.getServiceTemplateList(null, null);
             assertThat(templatesInDB).isEmpty();
         }
@@ -195,7 +211,7 @@
 
     private synchronized void createEntryInDB() throws Exception {
         try (PolicyModelsProvider modelsProvider = new PolicyModelsProviderFactory()
-                .createPolicyModelsProvider(CommonRestController.getParameters())) {
+                .createPolicyModelsProvider(clRuntimeParameterGroup.getDatabaseProviderParameters())) {
             modelsProvider.createServiceTemplate(serviceTemplate);
         }
     }
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java
index ccc54b9..b93bd0f 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/ControlLoopInstantiationProviderTest.java
@@ -26,9 +26,8 @@
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
@@ -36,19 +35,20 @@
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
 import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
 import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
-import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningHandler;
+import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider;
+import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
+import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
 import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
 import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
 import org.onap.policy.common.endpoints.event.comm.TopicSink;
 import org.onap.policy.models.base.PfModelException;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 
 /**
  * Class to perform unit test of {@link ControlLoopInstantiationProvider}}.
  *
  */
-public class ControlLoopInstantiationProviderTest {
+class ControlLoopInstantiationProviderTest {
 
     private static final String CL_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/controlloops/ControlLoops.json";
     private static final String CL_INSTANTIATION_UPDATE_JSON =
@@ -66,10 +66,10 @@
     private static final String ORDERED_STATE_INVALID = "ordered state invalid or not specified on command";
     private static final String CONTROLLOOP_ELEMENT_NAME_NOT_FOUND =
             "\"ControlLoops\" INVALID, item has status INVALID\n"
-            + "  \"entry org.onap.domain.pmsh.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
-            + "    \"entry org.onap.domain.pmsh.DCAEMicroservice\" INVALID, Not FOUND\n"
-            + "  \"entry org.onap.domain.pmsh.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
-            + "    \"entry org.onap.domain.pmsh.DCAEMicroservice\" INVALID, Not FOUND\n";
+                    + "  \"entry org.onap.domain.pmsh.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
+                    + "    \"entry org.onap.domain.pmsh.DCAEMicroservice\" INVALID, Not FOUND\n"
+                    + "  \"entry org.onap.domain.pmsh.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
+                    + "    \"entry org.onap.domain.pmsh.DCAEMicroservice\" INVALID, Not FOUND\n";
 
     private static final String CONTROLLOOP_DEFINITION_NOT_FOUND = "\"ControlLoops\" INVALID, item has status INVALID\n"
             + "  \"entry org.onap.domain.PMSHControlLoopDefinition\" INVALID, item has status INVALID\n"
@@ -79,62 +79,61 @@
             + "    item \"ControlLoop\" value \"org.onap.domain.PMSHControlLoopDefinition\" INVALID,"
             + " Commissioned control loop definition not FOUND\n";
 
-    private static PolicyModelsProviderParameters databaseProviderParameters;
+    private static ClRuntimeParameterGroup controlLoopParameters;
     private static SupervisionHandler supervisionHandler;
-    private static CommissioningHandler commissioningHandler;
+    private static CommissioningProvider commissioningProvider;
 
     /**
      * setup Db Provider Parameters.
      *
      * @throws PfModelException if an error occurs
      */
-    @BeforeClass
+    @BeforeAll
     public static void setupDbProviderParameters() throws PfModelException {
-        databaseProviderParameters =
-                CommonTestData.geParameterGroup(0, "instantproviderdb").getDatabaseProviderParameters();
-        commissioningHandler = new CommissioningHandler(CommonTestData.geParameterGroup(0, "instantproviderdb"));
-        commissioningHandler.startProviders();
-        supervisionHandler = new SupervisionHandler(CommonTestData.geParameterGroup(0, "instantproviderdb"));
+        controlLoopParameters = CommonTestData.geParameterGroup(0, "instantproviderdb");
+        commissioningProvider = new CommissioningProvider(controlLoopParameters);
+        var monitoringProvider = new MonitoringProvider(controlLoopParameters);
+        supervisionHandler = new SupervisionHandler(controlLoopParameters, monitoringProvider, commissioningProvider);
         supervisionHandler.startProviders();
         supervisionHandler.startAndRegisterPublishers(Collections.singletonList(Mockito.mock(TopicSink.class)));
     }
 
     @Test
-    public void testInstantiationCrud() throws Exception {
+    void testInstantiationCrud() throws Exception {
         ControlLoops controlLoopsCreate =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Crud");
         ControlLoops controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate);
         assertThat(controlLoopsDb.getControlLoopList()).isEmpty();
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
 
             // to validate control Loop, it needs to define ToscaServiceTemplate
-            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, databaseProviderParameters);
+            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider);
 
             InstantiationResponse instantiationResponse = instantiationProvider.createControlLoops(controlLoopsCreate);
             InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsCreate);
 
             controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate);
             assertThat(controlLoopsDb.getControlLoopList()).isNotEmpty();
-            Assert.assertEquals(controlLoopsCreate, controlLoopsDb);
+            assertThat(controlLoopsCreate).isEqualTo(controlLoopsDb);
 
             for (ControlLoop controlLoop : controlLoopsCreate.getControlLoopList()) {
                 ControlLoops controlLoopsGet =
                         instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion());
                 assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
-                Assert.assertEquals(controlLoop, controlLoopsGet.getControlLoopList().get(0));
+                assertThat(controlLoop).isEqualTo(controlLoopsGet.getControlLoopList().get(0));
             }
 
             ControlLoops controlLoopsUpdate =
                     InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Crud");
-            Assert.assertNotEquals(controlLoopsUpdate, controlLoopsDb);
+            assertThat(controlLoopsUpdate).isNotEqualTo(controlLoopsDb);
 
             instantiationResponse = instantiationProvider.updateControlLoops(controlLoopsUpdate);
             InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsUpdate);
 
             controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate);
             assertThat(controlLoopsDb.getControlLoopList()).isNotEmpty();
-            Assert.assertEquals(controlLoopsUpdate, controlLoopsDb);
+            assertThat(controlLoopsUpdate).isEqualTo(controlLoopsDb);
 
             InstantiationCommand instantiationCommand =
                     InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Crud");
@@ -145,8 +144,8 @@
                 ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(toscaConceptIdentifier.getName(),
                         toscaConceptIdentifier.getVersion());
                 assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
-                Assert.assertEquals(instantiationCommand.getOrderedState(),
-                        controlLoopsGet.getControlLoopList().get(0).getOrderedState());
+                assertThat(instantiationCommand.getOrderedState())
+                        .isEqualTo(controlLoopsGet.getControlLoopList().get(0).getOrderedState());
             }
 
             // in order to delete a controlLoop the state must be UNINITIALISED
@@ -166,8 +165,8 @@
         ControlLoops controlLoopsDb = new ControlLoops();
         controlLoopsDb.setControlLoopList(new ArrayList<>());
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
 
             for (ControlLoop controlLoop : controlLoopsSource.getControlLoopList()) {
                 ControlLoops controlLoopsFromDb =
@@ -179,22 +178,22 @@
     }
 
     @Test
-    public void testInstantiationDelete() throws Exception {
+    void testInstantiationDelete() throws Exception {
         ControlLoops controlLoops =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Delete");
         assertThat(getControlLoopsFromDb(controlLoops).getControlLoopList()).isEmpty();
 
         ControlLoop controlLoop0 = controlLoops.getControlLoopList().get(0);
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
 
             // to validate control Loop, it needs to define ToscaServiceTemplate
-            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, databaseProviderParameters);
+            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider);
 
             assertThatThrownBy(
                     () -> instantiationProvider.deleteControlLoop(controlLoop0.getName(), controlLoop0.getVersion()))
-                    .hasMessageMatching(CONTROL_LOOP_NOT_FOUND);
+                            .hasMessageMatching(CONTROL_LOOP_NOT_FOUND);
 
             InstantiationUtils.assertInstantiationResponse(instantiationProvider.createControlLoops(controlLoops),
                     controlLoops);
@@ -225,29 +224,29 @@
 
         controlLoop.setState(state);
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
 
             instantiationProvider.updateControlLoops(controlLoops);
             assertThatThrownBy(
                     () -> instantiationProvider.deleteControlLoop(controlLoop.getName(), controlLoop.getVersion()))
-                    .hasMessageMatching(String.format(DELETE_BAD_REQUEST, state));
+                            .hasMessageMatching(String.format(DELETE_BAD_REQUEST, state));
         }
     }
 
     @Test
-    public void testCreateControlLoops_NoDuplicates() throws Exception {
+    void testCreateControlLoops_NoDuplicates() throws Exception {
         ControlLoops controlLoopsCreate =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "NoDuplicates");
 
         ControlLoops controlLoopsDb = getControlLoopsFromDb(controlLoopsCreate);
         assertThat(controlLoopsDb.getControlLoopList()).isEmpty();
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
 
             // to validate control Loop, it needs to define ToscaServiceTemplate
-            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, databaseProviderParameters);
+            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider);
 
             InstantiationResponse instantiationResponse = instantiationProvider.createControlLoops(controlLoopsCreate);
             InstantiationUtils.assertInstantiationResponse(instantiationResponse, controlLoopsCreate);
@@ -262,15 +261,15 @@
     }
 
     @Test
-    public void testCreateControlLoops_CommissionedClElementNotFound() throws Exception {
+    void testCreateControlLoops_CommissionedClElementNotFound() throws Exception {
         ControlLoops controlLoops = InstantiationUtils
                 .getControlLoopsFromResource(CL_INSTANTIATION_DEFINITION_NAME_NOT_FOUND_JSON, "ClElementNotFound");
 
-        try (ControlLoopInstantiationProvider provider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider provider = new ControlLoopInstantiationProvider(controlLoopParameters,
+                commissioningProvider, supervisionHandler)) {
 
             // to validate control Loop, it needs to define ToscaServiceTemplate
-            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, databaseProviderParameters);
+            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider);
 
             assertThat(getControlLoopsFromDb(controlLoops).getControlLoopList()).isEmpty();
 
@@ -280,41 +279,41 @@
     }
 
     @Test
-    public void testCreateControlLoops_CommissionedClNotFound() throws Exception {
+    void testCreateControlLoops_CommissionedClNotFound() throws Exception {
         ControlLoops controlLoops = InstantiationUtils
                 .getControlLoopsFromResource(CL_INSTANTIATION_CONTROLLOOP_DEFINITION_NOT_FOUND_JSON, "ClNotFound");
 
         assertThat(getControlLoopsFromDb(controlLoops).getControlLoopList()).isEmpty();
 
-        try (ControlLoopInstantiationProvider provider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider provider = new ControlLoopInstantiationProvider(controlLoopParameters,
+                commissioningProvider, supervisionHandler)) {
             assertThatThrownBy(() -> provider.createControlLoops(controlLoops))
                     .hasMessageMatching(CONTROLLOOP_DEFINITION_NOT_FOUND);
         }
     }
 
     @Test
-    public void testIssueControlLoopCommand_OrderedStateInvalid() throws ControlLoopRuntimeException, IOException {
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+    void testIssueControlLoopCommand_OrderedStateInvalid() throws ControlLoopRuntimeException, IOException {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
             assertThatThrownBy(() -> instantiationProvider.issueControlLoopCommand(new InstantiationCommand()))
                     .hasMessageMatching(ORDERED_STATE_INVALID);
         }
     }
 
     @Test
-    public void testInstantiationVersions() throws Exception {
+    void testInstantiationVersions() throws Exception {
 
         // create controlLoops V1
         ControlLoops controlLoopsV1 =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "V1");
         assertThat(getControlLoopsFromDb(controlLoopsV1).getControlLoopList()).isEmpty();
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                     new ControlLoopInstantiationProvider(databaseProviderParameters)) {
+        try (ControlLoopInstantiationProvider instantiationProvider = new ControlLoopInstantiationProvider(
+                controlLoopParameters, commissioningProvider, supervisionHandler)) {
 
             // to validate control Loop, it needs to define ToscaServiceTemplate
-            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, databaseProviderParameters);
+            InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider);
 
             InstantiationUtils.assertInstantiationResponse(instantiationProvider.createControlLoops(controlLoopsV1),
                     controlLoopsV1);
@@ -331,7 +330,7 @@
                 ControlLoops controlLoopsGet =
                         instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion());
                 assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
-                Assert.assertEquals(controlLoop, controlLoopsGet.getControlLoopList().get(0));
+                assertThat(controlLoop).isEqualTo(controlLoopsGet.getControlLoopList().get(0));
             }
 
             // DELETE controlLoops V1
@@ -351,7 +350,7 @@
                 ControlLoops controlLoopsGet =
                         instantiationProvider.getControlLoops(controlLoop.getName(), controlLoop.getVersion());
                 assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
-                Assert.assertEquals(controlLoop, controlLoopsGet.getControlLoopList().get(0));
+                assertThat(controlLoop).isEqualTo(controlLoopsGet.getControlLoopList().get(0));
             }
 
             // DELETE controlLoops V2
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java
index 958d91d..9a9fc16 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/InstantiationUtils.java
@@ -20,25 +20,22 @@
 
 package org.onap.policy.clamp.controlloop.runtime.instantiation;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.File;
-import org.junit.Assert;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
 import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
 import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
+import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider;
 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.base.PfModelException;
-import org.onap.policy.models.provider.PolicyModelsProvider;
-import org.onap.policy.models.provider.PolicyModelsProviderFactory;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate;
 
@@ -91,9 +88,9 @@
      * @param controlLoops ControlLoops
      */
     public static void assertInstantiationResponse(InstantiationResponse response, ControlLoops controlLoops) {
-        assertNotNull(response);
-        Assert.assertNull(response.getErrorDetails());
-        assertEquals(response.getAffectedControlLoops().size(), controlLoops.getControlLoopList().size());
+        assertThat(response).isNotNull();
+        assertThat(response.getErrorDetails()).isNull();
+        assertThat(response.getAffectedControlLoops().size()).isEqualTo(controlLoops.getControlLoopList().size());
         for (ControlLoop controlLoop : controlLoops.getControlLoopList()) {
             assertTrue(response.getAffectedControlLoops().stream()
                     .filter(ac -> ac.equals(controlLoop.getKey().asIdentifier())).findAny().isPresent());
@@ -107,7 +104,7 @@
      * @param command InstantiationCommand
      */
     public static void assertInstantiationResponse(InstantiationResponse response, InstantiationCommand command) {
-        assertNotNull(response);
+        assertThat(response).isNotNull();
         assertEquals(response.getAffectedControlLoops().size(), command.getControlLoopIdentifierList().size());
         for (ToscaConceptIdentifier toscaConceptIdentifier : command.getControlLoopIdentifierList()) {
             assertTrue(response.getAffectedControlLoops().stream()
@@ -122,8 +119,8 @@
      * @param controlLoop ControlLoop
      */
     public static void assertInstantiationResponse(InstantiationResponse response, ControlLoop controlLoop) {
-        assertNotNull(response);
-        Assert.assertNull(response.getErrorDetails());
+        assertThat(response).isNotNull();
+        assertThat(response.getErrorDetails()).isNull();
         assertEquals(1, response.getAffectedControlLoops().size());
         assertEquals(0, response.getAffectedControlLoops().get(0).compareTo(controlLoop.getKey().asIdentifier()));
     }
@@ -132,18 +129,15 @@
      * Store ToscaServiceTemplate from resource to DB.
      *
      * @param path path of the resource
-     * @param parameters The parameters for the implementation of the PolicyModelProvider
+     * @param commissioningProvider The CommissioningProvider
      * @throws PfModelException if an error occurs
      */
-    public static void storeToscaServiceTemplate(String path, PolicyModelsProviderParameters parameters)
+    public static void storeToscaServiceTemplate(String path, CommissioningProvider commissioningProvider)
             throws PfModelException {
 
         ToscaServiceTemplate template =
                 yamlTranslator.fromYaml(ResourceUtils.getResourceAsString(path), ToscaServiceTemplate.class);
 
-        try (PolicyModelsProvider modelsProvider =
-                new PolicyModelsProviderFactory().createPolicyModelsProvider(parameters)) {
-            modelsProvider.createServiceTemplate(template);
-        }
+        commissioningProvider.createControlLoopDefinitions(template);
     }
 }
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java
index 71e7624..6c9674d 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/instantiation/rest/InstantiationControllerTest.java
@@ -21,30 +21,41 @@
 package org.onap.policy.clamp.controlloop.runtime.instantiation.rest;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.client.Invocation;
 import javax.ws.rs.core.Response;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoops;
 import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationCommand;
 import org.onap.policy.clamp.controlloop.models.messages.rest.instantiation.InstantiationResponse;
+import org.onap.policy.clamp.controlloop.runtime.commissioning.CommissioningProvider;
 import org.onap.policy.clamp.controlloop.runtime.instantiation.ControlLoopInstantiationProvider;
 import org.onap.policy.clamp.controlloop.runtime.instantiation.InstantiationUtils;
+import org.onap.policy.clamp.controlloop.runtime.main.rest.InstantiationController;
 import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 
 /**
  * Class to perform unit test of {@link InstantiationController}}.
  *
  */
-public class InstantiationControllerTest extends CommonRestController {
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@TestPropertySource(locations = {"classpath:application_test.properties"})
+class InstantiationControllerTest extends CommonRestController {
 
     private static final String CL_INSTANTIATION_CREATE_JSON = "src/test/resources/rest/controlloops/ControlLoops.json";
 
@@ -61,38 +72,38 @@
 
     private static final String INSTANTIATION_COMMAND_ENDPOINT = "instantiation/command";
 
+    @Autowired
+    private ControlLoopInstantiationProvider instantiationProvider;
+
+    @Autowired
+    private CommissioningProvider commissioningProvider;
+
+    @LocalServerPort
+    private int randomServerPort;
+
     /**
      * starts Main and inserts a commissioning template.
      *
      * @throws Exception if an error occurs
      */
-    @BeforeClass
-    public static void setUpBeforeClass() throws Exception {
-        CommonRestController.setUpBeforeClass("InstApi");
-
+    @BeforeEach
+    public void setUpBeforeClass() throws Exception {
         // to validate control Loop, it needs to define ToscaServiceTemplate
-        InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, getParameters());
-
-        ControlLoops controlLoops =
-                InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Command");
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            instantiationProvider.createControlLoops(controlLoops);
-        }
+        InstantiationUtils.storeToscaServiceTemplate(TOSCA_TEMPLATE_YAML, commissioningProvider);
     }
 
-    @AfterClass
-    public static void teardownAfterClass() {
-        CommonRestController.teardownAfterClass();
+    @BeforeEach
+    public void setUpPort() {
+        super.setHttpPrefix(randomServerPort);
     }
 
     @Test
-    public void testSwagger() throws Exception {
+    void testSwagger() throws Exception {
         super.testSwagger(INSTANTIATION_ENDPOINT);
     }
 
     @Test
-    public void testCreate_Unauthorized() throws Exception {
+    void testCreate_Unauthorized() throws Exception {
         ControlLoops controlLoops =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Unauthorized");
 
@@ -100,12 +111,12 @@
     }
 
     @Test
-    public void testQuery_Unauthorized() throws Exception {
+    void testQuery_Unauthorized() throws Exception {
         assertUnauthorizedGet(INSTANTIATION_ENDPOINT);
     }
 
     @Test
-    public void testUpdate_Unauthorized() throws Exception {
+    void testUpdate_Unauthorized() throws Exception {
         ControlLoops controlLoops =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Unauthorized");
 
@@ -113,12 +124,12 @@
     }
 
     @Test
-    public void testDelete_Unauthorized() throws Exception {
+    void testDelete_Unauthorized() throws Exception {
         assertUnauthorizedDelete(INSTANTIATION_ENDPOINT);
     }
 
     @Test
-    public void testCommand_Unauthorized() throws Exception {
+    void testCommand_Unauthorized() throws Exception {
         InstantiationCommand instantiationCommand = InstantiationUtils
                 .getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Unauthorized");
 
@@ -126,7 +137,7 @@
     }
 
     @Test
-    public void testCreate() throws Exception {
+    void testCreate() throws Exception {
         ControlLoops controlLoopsFromRsc =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Create");
 
@@ -136,21 +147,18 @@
         InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
         InstantiationUtils.assertInstantiationResponse(instResponse, controlLoopsFromRsc);
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
-                ControlLoops controlLoopsFromDb = instantiationProvider.getControlLoops(
-                        controlLoopFromRsc.getKey().getName(), controlLoopFromRsc.getKey().getVersion());
+        for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
+            ControlLoops controlLoopsFromDb = instantiationProvider
+                    .getControlLoops(controlLoopFromRsc.getKey().getName(), controlLoopFromRsc.getKey().getVersion());
 
-                assertNotNull(controlLoopsFromDb);
-                assertThat(controlLoopsFromDb.getControlLoopList()).hasSize(1);
-                assertEquals(controlLoopFromRsc, controlLoopsFromDb.getControlLoopList().get(0));
-            }
+            assertNotNull(controlLoopsFromDb);
+            assertThat(controlLoopsFromDb.getControlLoopList()).hasSize(1);
+            assertEquals(controlLoopFromRsc, controlLoopsFromDb.getControlLoopList().get(0));
         }
     }
 
     @Test
-    public void testCreateBadRequest() throws Exception {
+    void testCreateBadRequest() throws Exception {
         ControlLoops controlLoopsFromRsc =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "CreateBadRequest");
 
@@ -167,7 +175,7 @@
     }
 
     @Test
-    public void testQuery_NoResultWithThisName() throws Exception {
+    void testQuery_NoResultWithThisName() throws Exception {
         Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name=noResultWithThisName");
         Response rawresp = invocationBuilder.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
@@ -176,14 +184,10 @@
     }
 
     @Test
-    public void testQuery() throws Exception {
+    void testQuery() throws Exception {
         // inserts a ControlLoops to DB
-        ControlLoops controlLoops =
-                InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Query");
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            instantiationProvider.createControlLoops(controlLoops);
-        }
+        var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Query");
+        instantiationProvider.createControlLoops(controlLoops);
 
         for (ControlLoop controlLoopFromRsc : controlLoops.getControlLoopList()) {
             Invocation.Builder invocationBuilder =
@@ -198,37 +202,32 @@
     }
 
     @Test
-    public void testUpdate() throws Exception {
+    void testUpdate() throws Exception {
         ControlLoops controlLoopsCreate =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Update");
 
-        ControlLoops controlLoops =
-                InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Update");
+        var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_UPDATE_JSON, "Update");
+        instantiationProvider.createControlLoops(controlLoopsCreate);
 
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            instantiationProvider.createControlLoops(controlLoopsCreate);
+        Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT);
+        Response resp = invocationBuilder.put(Entity.json(controlLoops));
+        assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
 
-            Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT);
-            Response resp = invocationBuilder.put(Entity.json(controlLoops));
-            assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
+        InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
+        InstantiationUtils.assertInstantiationResponse(instResponse, controlLoops);
 
-            InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
-            InstantiationUtils.assertInstantiationResponse(instResponse, controlLoops);
+        for (ControlLoop controlLoopUpdate : controlLoops.getControlLoopList()) {
+            ControlLoops controlLoopsFromDb = instantiationProvider
+                    .getControlLoops(controlLoopUpdate.getKey().getName(), controlLoopUpdate.getKey().getVersion());
 
-            for (ControlLoop controlLoopUpdate : controlLoops.getControlLoopList()) {
-                ControlLoops controlLoopsFromDb = instantiationProvider
-                        .getControlLoops(controlLoopUpdate.getKey().getName(), controlLoopUpdate.getKey().getVersion());
-
-                assertNotNull(controlLoopsFromDb);
-                assertThat(controlLoopsFromDb.getControlLoopList()).hasSize(1);
-                assertEquals(controlLoopUpdate, controlLoopsFromDb.getControlLoopList().get(0));
-            }
+            assertNotNull(controlLoopsFromDb);
+            assertThat(controlLoopsFromDb.getControlLoopList()).hasSize(1);
+            assertEquals(controlLoopUpdate, controlLoopsFromDb.getControlLoopList().get(0));
         }
     }
 
     @Test
-    public void testDelete_NoResultWithThisName() throws Exception {
+    void testDelete_NoResultWithThisName() throws Exception {
         Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name=noResultWithThisName");
         Response resp = invocationBuilder.delete();
         assertEquals(Response.Status.NOT_FOUND.getStatusCode(), resp.getStatus());
@@ -238,56 +237,51 @@
     }
 
     @Test
-    public void testDelete() throws Exception {
+    void testDelete() throws Exception {
         ControlLoops controlLoopsFromRsc =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Delete");
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            instantiationProvider.createControlLoops(controlLoopsFromRsc);
 
-            for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
-                Invocation.Builder invocationBuilder =
-                        super.sendRequest(INSTANTIATION_ENDPOINT + "?name=" + controlLoopFromRsc.getKey().getName()
-                                + "&version=" + controlLoopFromRsc.getKey().getVersion());
-                Response resp = invocationBuilder.delete();
-                assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
-                InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
-                InstantiationUtils.assertInstantiationResponse(instResponse, controlLoopFromRsc);
+        instantiationProvider.createControlLoops(controlLoopsFromRsc);
 
-                ControlLoops controlLoopsFromDb = instantiationProvider.getControlLoops(
-                        controlLoopFromRsc.getKey().getName(), controlLoopFromRsc.getKey().getVersion());
-                assertThat(controlLoopsFromDb.getControlLoopList()).isEmpty();
-            }
+        for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
+            Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_ENDPOINT + "?name="
+                    + controlLoopFromRsc.getKey().getName() + "&version=" + controlLoopFromRsc.getKey().getVersion());
+            Response resp = invocationBuilder.delete();
+            assertEquals(Response.Status.OK.getStatusCode(), resp.getStatus());
+            InstantiationResponse instResponse = resp.readEntity(InstantiationResponse.class);
+            InstantiationUtils.assertInstantiationResponse(instResponse, controlLoopFromRsc);
+
+            ControlLoops controlLoopsFromDb = instantiationProvider
+                    .getControlLoops(controlLoopFromRsc.getKey().getName(), controlLoopFromRsc.getKey().getVersion());
+            assertThat(controlLoopsFromDb.getControlLoopList()).isEmpty();
         }
     }
 
     @Test
-    public void testDeleteBadRequest() throws Exception {
+    void testDeleteBadRequest() throws Exception {
         ControlLoops controlLoopsFromRsc =
                 InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "DelBadRequest");
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            instantiationProvider.createControlLoops(controlLoopsFromRsc);
 
-            for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
-                Invocation.Builder invocationBuilder =
-                        super.sendRequest(INSTANTIATION_ENDPOINT + "?name=" + controlLoopFromRsc.getKey().getName());
-                Response resp = invocationBuilder.delete();
-                // should be BAD_REQUEST
-                assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), resp.getStatus());
-            }
+        instantiationProvider.createControlLoops(controlLoopsFromRsc);
+
+        for (ControlLoop controlLoopFromRsc : controlLoopsFromRsc.getControlLoopList()) {
+            Invocation.Builder invocationBuilder =
+                    super.sendRequest(INSTANTIATION_ENDPOINT + "?name=" + controlLoopFromRsc.getKey().getName());
+            Response resp = invocationBuilder.delete();
+            // should be BAD_REQUEST
+            assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), resp.getStatus());
         }
     }
 
     @Test
-    public void testCommand_NotFound1() throws Exception {
+    void testCommand_NotFound1() throws Exception {
         Invocation.Builder invocationBuilder = super.sendRequest(INSTANTIATION_COMMAND_ENDPOINT);
         Response resp = invocationBuilder.put(Entity.json(new InstantiationCommand()));
         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), resp.getStatus());
     }
 
     @Test
-    public void testCommand_NotFound2() throws Exception {
+    void testCommand_NotFound2() throws Exception {
         InstantiationCommand command =
                 InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Command");
         command.setOrderedState(null);
@@ -298,7 +292,10 @@
     }
 
     @Test
-    public void testCommand() throws Exception {
+    void testCommand() throws Exception {
+        var controlLoops = InstantiationUtils.getControlLoopsFromResource(CL_INSTANTIATION_CREATE_JSON, "Command");
+        instantiationProvider.createControlLoops(controlLoops);
+
         InstantiationCommand command =
                 InstantiationUtils.getInstantiationCommandFromResource(CL_INSTANTIATION_CHANGE_STATE_JSON, "Command");
 
@@ -309,14 +306,11 @@
         InstantiationUtils.assertInstantiationResponse(instResponse, command);
 
         // check passive state on DB
-        try (ControlLoopInstantiationProvider instantiationProvider =
-                new ControlLoopInstantiationProvider(getParameters())) {
-            for (ToscaConceptIdentifier toscaConceptIdentifier : command.getControlLoopIdentifierList()) {
-                ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(toscaConceptIdentifier.getName(),
-                        toscaConceptIdentifier.getVersion());
-                assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
-                assertEquals(command.getOrderedState(), controlLoopsGet.getControlLoopList().get(0).getOrderedState());
-            }
+        for (ToscaConceptIdentifier toscaConceptIdentifier : command.getControlLoopIdentifierList()) {
+            ControlLoops controlLoopsGet = instantiationProvider.getControlLoops(toscaConceptIdentifier.getName(),
+                    toscaConceptIdentifier.getVersion());
+            assertThat(controlLoopsGet.getControlLoopList()).hasSize(1);
+            assertEquals(command.getOrderedState(), controlLoopsGet.getControlLoopList().get(0).getOrderedState());
         }
     }
 }
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/RestControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/RestControllerTest.java
deleted file mode 100644
index 4f68b4f..0000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/rest/RestControllerTest.java
+++ /dev/null
@@ -1,71 +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.rest;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.util.UUID;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import org.junit.Test;
-
-/**
- * Class to perform unit test of {@link RestController}}.
- *
- */
-public class RestControllerTest {
-
-    @Test
-    public void testProduces() {
-        Produces annotation = RestController.class.getAnnotation(Produces.class);
-        assertNotNull(annotation);
-        assertThat(annotation.value()).contains(MediaType.APPLICATION_JSON)
-                        .contains(RestController.APPLICATION_YAML);
-    }
-
-    @Test
-    public void testAddVersionControlHeaders() {
-        RestController ctlr = new RestController();
-        Response resp = ctlr.addVersionControlHeaders(Response.status(Response.Status.OK)).build();
-        assertEquals("0", resp.getHeaderString(RestController.VERSION_MINOR_NAME));
-        assertEquals("0", resp.getHeaderString(RestController.VERSION_PATCH_NAME));
-        assertEquals("1.0.0", resp.getHeaderString(RestController.VERSION_LATEST_NAME));
-    }
-
-    @Test
-    public void testAddLoggingHeaders_Null() {
-        RestController ctlr = new RestController();
-        Response resp = ctlr.addLoggingHeaders(Response.status(Response.Status.OK), null).build();
-        assertNotNull(resp.getHeaderString(RestController.REQUEST_ID_NAME));
-    }
-
-    @Test
-    public void testAddLoggingHeaders_NonNull() {
-        UUID uuid = UUID.randomUUID();
-        RestController ctlr = new RestController();
-        Response resp = ctlr.addLoggingHeaders(Response.status(Response.Status.OK), uuid).build();
-        assertEquals(uuid.toString(), resp.getHeaderString(RestController.REQUEST_ID_NAME));
-    }
-
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivatorTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivatorTest.java
index da71c23..7eb5672 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivatorTest.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/ClRuntimeActivatorTest.java
@@ -20,63 +20,46 @@
 
 package org.onap.policy.clamp.controlloop.runtime.main.startstop;
 
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
 import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import org.junit.Test;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
 import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
 import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterHandler;
-import org.onap.policy.common.utils.services.Registry;
+import org.onap.policy.clamp.controlloop.runtime.supervision.SupervisionHandler;
 
 /**
  * Class to perform unit test of {@link ClRuntimeActivator}}.
  *
  */
-public class ClRuntimeActivatorTest {
+class ClRuntimeActivatorTest {
 
     @Test
-    public void testStartAndStop() throws Exception {
-        Registry.newRegistry();
-        final String[] configParameters = {"-c", "src/test/resources/parameters/TestParameters.json"};
-        final ClRuntimeCommandLineArguments arguments = new ClRuntimeCommandLineArguments();
-        arguments.parse(configParameters);
-        ClRuntimeParameterGroup parameterGroup = new ClRuntimeParameterHandler().getParameters(arguments);
-        ClRuntimeActivator activator = new ClRuntimeActivator(parameterGroup);
-        activator.isAlive();
+    void testStartAndStop() throws Exception {
+        final String path = "src/test/resources/parameters/TestParameters.json";
+        ClRuntimeParameterGroup parameterGroup = new ClRuntimeParameterHandler().getParameters(path);
+        var supervisionHandler = Mockito.mock(SupervisionHandler.class);
 
-        assertFalse(activator.isAlive());
-        activator.start();
-        assertTrue(activator.isAlive());
-        assertTrue(activator.getParameterGroup().isValid());
-        assertEquals(activator.getParameterGroup().getName(),
-                activator.getParameterGroup().getRestServerParameters().getName());
+        try (var activator = new ClRuntimeActivator(parameterGroup, supervisionHandler)) {
 
-        // repeat start - should throw an exception
-        assertThatIllegalStateException().isThrownBy(() -> activator.start());
-        assertTrue(activator.isAlive());
-        assertTrue(activator.getParameterGroup().isValid());
+            assertFalse(activator.isAlive());
+            activator.start();
+            assertTrue(activator.isAlive());
+            assertTrue(activator.getParameterGroup().isValid());
 
-        activator.stop();
-        assertFalse(activator.isAlive());
+            // repeat start - should throw an exception
+            assertThatIllegalStateException().isThrownBy(() -> activator.start());
+            assertTrue(activator.isAlive());
+            assertTrue(activator.getParameterGroup().isValid());
 
-        // repeat stop - should throw an exception
-        assertThatIllegalStateException().isThrownBy(() -> activator.stop());
-        assertFalse(activator.isAlive());
-    }
+            activator.stop();
+            assertFalse(activator.isAlive());
 
-    @Test
-    public void testNull() {
-        assertThatExceptionOfType(ControlLoopRuntimeException.class).isThrownBy(() -> new ClRuntimeActivator(null));
-    }
-
-    @Test
-    public void testNotValid() {
-        ClRuntimeParameterGroup parameterGroup = new ClRuntimeParameterGroup("name");
-        assertThatExceptionOfType(ControlLoopRuntimeException.class)
-                .isThrownBy(() -> new ClRuntimeActivator(parameterGroup));
+            // repeat stop - should throw an exception
+            assertThatIllegalStateException().isThrownBy(() -> activator.stop());
+            assertFalse(activator.isAlive());
+        }
     }
 }
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/MainTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/MainTest.java
deleted file mode 100644
index b06383c..0000000
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/main/startstop/MainTest.java
+++ /dev/null
@@ -1,157 +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.startstop;
-
-import static org.assertj.core.api.Assertions.assertThatCode;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.onap.policy.clamp.controlloop.common.ControlLoopConstants;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException;
-import org.onap.policy.common.utils.resources.MessageConstants;
-import org.onap.policy.common.utils.services.Registry;
-
-/**
- * Class to perform unit test of {@link Main}}.
- *
- */
-public class MainTest {
-
-    public static final String POLICY_CLAMP_FAILURE_MSG =
-            String.format(MessageConstants.START_FAILURE_MSG, MessageConstants.POLICY_CLAMP);
-
-    /**
-     * Set up.
-     */
-    @BeforeClass
-    public static void setUp() {
-        Registry.newRegistry();
-    }
-
-    /**
-     * Shuts "main" down.
-     *
-     * @throws Exception if an error occurs
-     */
-    @AfterClass
-    public static void tearDown() throws Exception {
-        // shut down activator
-        final ClRuntimeActivator activator =
-                Registry.getOrDefault(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, ClRuntimeActivator.class, null);
-        if (activator != null && activator.isAlive()) {
-            activator.shutdown();
-        }
-    }
-
-    @Test
-    public void testMain_Help() {
-        final String[] configParameters = {"-h"};
-        Main main = new Main(configParameters);
-        assertFalse(main.isRunning());
-    }
-
-    @Test
-    public void testMain_Version() {
-        final String[] configParameters = {"-v"};
-        Main main = new Main(configParameters);
-        assertFalse(main.isRunning());
-    }
-
-    @Test
-    public void testMain_Valid() {
-        final String[] configParameters = {"-c", "src/test/resources/parameters/TestParameters.json"};
-        Main main = new Main(configParameters);
-        assertTrue(main.isRunning());
-
-        // ensure items were added to the registry
-        assertNotNull(Registry.get(ControlLoopConstants.REG_CLRUNTIME_ACTIVATOR, ClRuntimeActivator.class));
-
-        assertThatCode(() -> main.shutdown()).doesNotThrowAnyException();
-
-        assertFalse(main.isRunning());
-    }
-
-    @Test
-    public void testMain_NoParameter() {
-        assertThatConfigParameterThrownException(new String[] {});
-    }
-
-    @Test
-    public void testMain_FilePathNotDefined() {
-        assertThatConfigParameterThrownException(new String[] {"-c"});
-    }
-
-    @Test
-    public void testMain_TooManyCommand() {
-        assertThatConfigParameterThrownException(new String[] {"-h", "d"});
-    }
-
-    @Test
-    public void testMain_WrongParameter() {
-        assertThatConfigParameterThrownException(new String[] {"-d"});
-    }
-
-    private void assertThatConfigParameterThrownException(final String[] configParameters) {
-        assertThatThrownBy(() -> Main.main(configParameters)).isInstanceOf(ControlLoopRuntimeException.class)
-                .hasMessage(POLICY_CLAMP_FAILURE_MSG);
-    }
-
-    @Test
-    public void testParticipant_NoFileWithThisName() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/NoFileWithThisName.json");
-    }
-
-    @Test
-    public void testParticipant_NotValidFile() {
-        assertThatConfigFileThrownException("src/test/resources/parameters");
-    }
-
-    @Test
-    public void testParticipant_FileEmpty() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/EmptyParameters.json");
-    }
-
-    @Test
-    public void testParticipant_NoParameters() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/NoParameters.json");
-    }
-
-    @Test
-    public void testParticipant_InvalidParameters() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/InvalidParameters.json");
-    }
-
-    @Test
-    public void testParticipant_WrongJsonFormat() {
-        assertThatConfigFileThrownException("src/test/resources/parameters/Unreadable.json");
-    }
-
-    private void assertThatConfigFileThrownException(final String configFilePath) {
-        final String[] configParameters = new String[] {"-c", configFilePath};
-        assertThatThrownBy(() -> new Main(configParameters)).isInstanceOf(ControlLoopRuntimeException.class)
-                .hasMessage(String.format(POLICY_CLAMP_FAILURE_MSG));
-    }
-}
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java
index 56735ae..580b30f 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/TestMonitoringProvider.java
@@ -22,7 +22,7 @@
 
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.when;
 
 import java.io.File;
@@ -32,31 +32,31 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatisticsList;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatisticsList;
 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.models.provider.PolicyModelsProviderParameters;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
 
-public class TestMonitoringProvider {
+class TestMonitoringProvider {
 
     private static final String CL_PARTICIPANT_STATISTICS_JSON =
-        "src/test/resources/rest/monitoring/TestParticipantStatistics.json";
+            "src/test/resources/rest/monitoring/TestParticipantStatistics.json";
     private static final String INVALID_PARTICIPANT_JSON_INPUT =
-        "src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json";
+            "src/test/resources/rest/monitoring/TestParticipantStatistics_Invalid.json";
     private static final String CL_ELEMENT_STATISTICS_JSON =
-        "src/test/resources/rest/monitoring/TestClElementStatistics.json";
+            "src/test/resources/rest/monitoring/TestClElementStatistics.json";
     private static final String INVALID_CL_ELEMENT_JSON_INPUT =
-        "src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json";
+            "src/test/resources/rest/monitoring/TestClElementStatistics_Invalid.json";
     private static final Coder CODER = new StandardCoder();
 
     private static final String CL_PROVIDER_FIELD = "controlLoopProvider";
@@ -67,21 +67,20 @@
     private static ClElementStatisticsList inputClElementStatistics;
     private static ClElementStatisticsList invalidClElementInput;
 
-    @BeforeClass
+    @BeforeAll
     public static void beforeSetupStatistics() throws CoderException {
         // Reading input json for statistics data
         inputParticipantStatistics =
-            CODER.decode(new File(CL_PARTICIPANT_STATISTICS_JSON), ParticipantStatisticsList.class);
+                CODER.decode(new File(CL_PARTICIPANT_STATISTICS_JSON), ParticipantStatisticsList.class);
         invalidParticipantInput =
-            CODER.decode(new File(INVALID_PARTICIPANT_JSON_INPUT), ParticipantStatisticsList.class);
+                CODER.decode(new File(INVALID_PARTICIPANT_JSON_INPUT), ParticipantStatisticsList.class);
         inputClElementStatistics = CODER.decode(new File(CL_ELEMENT_STATISTICS_JSON), ClElementStatisticsList.class);
         invalidClElementInput = CODER.decode(new File(INVALID_CL_ELEMENT_JSON_INPUT), ClElementStatisticsList.class);
     }
 
     @Test
-    public void testCreateParticipantStatistics() throws Exception {
-        PolicyModelsProviderParameters parameters =
-            CommonTestData.geParameterGroup(0, "createparStat").getDatabaseProviderParameters();
+    void testCreateParticipantStatistics() throws Exception {
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "createparStat");
 
         try (MonitoringProvider provider = new MonitoringProvider(parameters)) {
             // Creating statistics data in db with null input
@@ -95,18 +94,17 @@
 
             // Creating statistics data from input json
             ParticipantStatisticsList createResponse =
-                provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
+                    provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
 
             assertThat(createResponse.getStatisticsList()).hasSize(3);
             assertEquals(createResponse.getStatisticsList().toString().replaceAll("\\s+", ""),
-                inputParticipantStatistics.getStatisticsList().toString().replaceAll("\\s+", ""));
+                    inputParticipantStatistics.getStatisticsList().toString().replaceAll("\\s+", ""));
         }
     }
 
     @Test
-    public void testGetParticipantStatistics() throws Exception {
-        PolicyModelsProviderParameters parameters =
-            CommonTestData.geParameterGroup(0, "getparStat").getDatabaseProviderParameters();
+    void testGetParticipantStatistics() throws Exception {
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getparStat");
         try (MonitoringProvider provider = new MonitoringProvider(parameters)) {
             ParticipantStatisticsList getResponse;
 
@@ -120,24 +118,24 @@
             getResponse = provider.fetchFilteredParticipantStatistics("name2", "1.001", 1, null, null);
             assertThat(getResponse.getStatisticsList()).hasSize(1);
             assertEquals(getResponse.getStatisticsList().get(0).toString().replaceAll("\\s+", ""),
-                inputParticipantStatistics.getStatisticsList().get(2).toString().replaceAll("\\s+", ""));
+                    inputParticipantStatistics.getStatisticsList().get(2).toString().replaceAll("\\s+", ""));
 
             // Fetch statistics using timestamp
             getResponse = provider.fetchFilteredParticipantStatistics("name1", "1.001", 0, null,
-                Instant.parse("2021-01-10T15:00:00.000Z"));
+                    Instant.parse("2021-01-10T15:00:00.000Z"));
             assertThat(getResponse.getStatisticsList()).hasSize(1);
 
             getResponse = provider.fetchFilteredParticipantStatistics("name1", "1.001", 0,
-                Instant.parse("2021-01-11T12:00:00.000Z"), Instant.parse("2021-01-11T16:00:00.000Z"));
+                    Instant.parse("2021-01-11T12:00:00.000Z"), Instant.parse("2021-01-11T16:00:00.000Z"));
 
             assertThat(getResponse.getStatisticsList()).isEmpty();
         }
     }
 
     @Test
-    public void testCreateClElementStatistics() throws Exception {
-        PolicyModelsProviderParameters parameters =
-            CommonTestData.geParameterGroup(0, "createelemstat").getDatabaseProviderParameters();
+    void testCreateClElementStatistics() throws Exception {
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "createelemstat");
+
         try (MonitoringProvider provider = new MonitoringProvider(parameters)) {
             // Creating statistics data in db with null input
             assertThatThrownBy(() -> {
@@ -150,18 +148,18 @@
 
             // Creating clElement statistics data from input json
             ClElementStatisticsList createResponse =
-                provider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
+                    provider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
 
             assertThat(createResponse.getClElementStatistics()).hasSize(4);
             assertEquals(createResponse.getClElementStatistics().toString().replaceAll("\\s+", ""),
-                inputClElementStatistics.getClElementStatistics().toString().replaceAll("\\s+", ""));
+                    inputClElementStatistics.getClElementStatistics().toString().replaceAll("\\s+", ""));
         }
     }
 
     @Test
-    public void testGetClElementStatistics() throws Exception {
-        PolicyModelsProviderParameters parameters =
-            CommonTestData.geParameterGroup(0, "getelemstat").getDatabaseProviderParameters();
+    void testGetClElementStatistics() throws Exception {
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getelemstat");
+
         try (MonitoringProvider provider = new MonitoringProvider(parameters)) {
             ClElementStatisticsList getResponse;
 
@@ -175,24 +173,24 @@
 
             assertThat(getResponse.getClElementStatistics()).hasSize(2);
             assertEquals(getResponse.getClElementStatistics().get(0).toString().replaceAll("\\s+", ""),
-                inputClElementStatistics.getClElementStatistics().get(0).toString().replaceAll("\\s+", ""));
+                    inputClElementStatistics.getClElementStatistics().get(0).toString().replaceAll("\\s+", ""));
 
             // Fetch specific statistics record with name, id and record count
             getResponse = provider.fetchFilteredClElementStatistics("name1", "1.001",
-                "709c62b3-8918-41b9-a747-d21eb79c6c20", null, null, 0);
+                    "709c62b3-8918-41b9-a747-d21eb79c6c20", null, null, 0);
             assertThat(getResponse.getClElementStatistics()).hasSize(2);
 
             // Fetch statistics using timestamp
             getResponse = provider.fetchFilteredClElementStatistics("name1", "1.001", null,
-                Instant.parse("2021-01-10T13:45:00.000Z"), null, 0);
+                    Instant.parse("2021-01-10T13:45:00.000Z"), null, 0);
             assertThat(getResponse.getClElementStatistics()).hasSize(2);
         }
     }
 
     @Test
-    public void testGetParticipantStatsPerCL() throws Exception {
-        PolicyModelsProviderParameters parameters =
-            CommonTestData.geParameterGroup(0, "getparStatCL").getDatabaseProviderParameters();
+    void testGetParticipantStatsPerCL() throws Exception {
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getparStatCL");
+
         try (MonitoringProvider provider = Mockito.spy(new MonitoringProvider(parameters))) {
 
             provider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
@@ -204,23 +202,23 @@
             getResponse = provider.fetchParticipantStatsPerControlLoop("testName", "1.001");
             assertThat(getResponse.getStatisticsList()).hasSize(2);
             assertEquals(getResponse.getStatisticsList().get(0).toString().replaceAll("\\s+", ""),
-                inputParticipantStatistics.getStatisticsList().get(0).toString().replaceAll("\\s+", ""));
+                    inputParticipantStatistics.getStatisticsList().get(0).toString().replaceAll("\\s+", ""));
             assertThat(provider.fetchParticipantStatsPerControlLoop("invalidCLName", "1.002").getStatisticsList())
-                .isEmpty();
+                    .isEmpty();
         }
 
     }
 
     @Test
-    public void testClElementStatsPerCL() throws Exception {
-        PolicyModelsProviderParameters parameters =
-            CommonTestData.geParameterGroup(0, "getelemstatPerCL").getDatabaseProviderParameters();
+    void testClElementStatsPerCL() throws Exception {
+        ClRuntimeParameterGroup parameters = CommonTestData.geParameterGroup(0, "getelemstatPerCL");
+
         // Setup a dummy Control loop data
         ControlLoopElement mockClElement = new ControlLoopElement();
         mockClElement.setId(inputClElementStatistics.getClElementStatistics().get(0).getId());
         mockClElement.setParticipantId(new ToscaConceptIdentifier(
-            inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getName(),
-            inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getVersion()));
+                inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getName(),
+                inputClElementStatistics.getClElementStatistics().get(0).getParticipantId().getVersion()));
         ControlLoop mockCL = new ControlLoop();
         mockCL.setElements(new LinkedHashMap<>());
         mockCL.getElements().put(mockClElement.getId(), mockClElement);
@@ -240,16 +238,15 @@
 
             assertThat(getResponse.getClElementStatistics()).hasSize(2);
             assertEquals(getResponse.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""),
-                inputClElementStatistics.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""));
+                    inputClElementStatistics.getClElementStatistics().get(1).toString().replaceAll("\\s+", ""));
 
-            assertThat(
-                monitoringProvider.fetchClElementStatsPerControlLoop("invalidCLName", "1.002").getClElementStatistics())
-                    .isEmpty();
+            assertThat(monitoringProvider.fetchClElementStatsPerControlLoop("invalidCLName", "1.002")
+                    .getClElementStatistics()).isEmpty();
 
             Map<String, ToscaConceptIdentifier> clElementIds =
-                monitoringProvider.getAllClElementsIdPerControlLoop("testCLName", "1.001");
+                    monitoringProvider.getAllClElementsIdPerControlLoop("testCLName", "1.001");
             assertThat(clElementIds)
-                .containsKey(inputClElementStatistics.getClElementStatistics().get(0).getId().toString());
+                    .containsKey(inputClElementStatistics.getClElementStatistics().get(0).getId().toString());
         }
     }
 }
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java
index a846d93..95b2113 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/monitoring/rest/MonitoringQueryControllerTest.java
@@ -21,29 +21,40 @@
 package org.onap.policy.clamp.controlloop.runtime.monitoring.rest;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.File;
 import java.time.Instant;
 import javax.ws.rs.client.Invocation;
 import javax.ws.rs.core.Response;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ClElementStatisticsList;
 import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantStatisticsList;
+import org.onap.policy.clamp.controlloop.runtime.main.parameters.ClRuntimeParameterGroup;
 import org.onap.policy.clamp.controlloop.runtime.monitoring.MonitoringProvider;
 import org.onap.policy.clamp.controlloop.runtime.util.rest.CommonRestController;
 import org.onap.policy.common.utils.coder.Coder;
 import org.onap.policy.common.utils.coder.StandardCoder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
+import org.springframework.boot.web.server.LocalServerPort;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-public class MonitoringQueryControllerTest extends CommonRestController {
+@ExtendWith(SpringExtension.class)
+@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
+@TestPropertySource(locations = {"classpath:application_test.properties"})
+class MonitoringQueryControllerTest extends CommonRestController {
 
     private static final String CL_PARTICIPANT_STATISTICS_JSON =
-        "src/test/resources/rest/monitoring/TestParticipantStatistics.json";
+            "src/test/resources/rest/monitoring/TestParticipantStatistics.json";
     private static final String CL_ELEMENT_STATISTICS_JSON =
-        "src/test/resources/rest/monitoring/TestClElementStatistics.json";
+            "src/test/resources/rest/monitoring/TestClElementStatistics.json";
 
     private static final Coder CODER = new StandardCoder();
 
@@ -51,64 +62,68 @@
     private static ClElementStatisticsList inputClElementStatistics;
 
     private static ParticipantStatisticsList participantStatisticsList;
-    private static  ClElementStatisticsList clElementStatisticsList;
+    private static ClElementStatisticsList clElementStatisticsList;
 
     private static final String CLELEMENT_STATS_ENDPOINT = "monitoring/clelement";
     private static final String PARTICIPANT_STATS_ENDPOINT = "monitoring/participant";
     private static final String PARTICIPANT_STATS_PER_CL_ENDPOINT = "monitoring/participants/controlloop";
     private static final String CLELEMENT_STATS_PER_CL_ENDPOINT = "monitoring/clelements/controlloop";
 
+    @Autowired
+    private ClRuntimeParameterGroup clRuntimeParameterGroup;
+
+    @LocalServerPort
+    private int randomServerPort;
 
     /**
      * starts Main.
      *
      * @throws Exception if an error occurs
      */
-    @BeforeClass
-    public static void setUpBeforeClass() throws Exception {
-        CommonRestController.setUpBeforeClass("testStatisticsQuery");
-        inputParticipantStatistics = CODER.decode(new File(CL_PARTICIPANT_STATISTICS_JSON),
-            ParticipantStatisticsList.class);
-        inputClElementStatistics = CODER.decode(new File(CL_ELEMENT_STATISTICS_JSON),
-            ClElementStatisticsList.class);
+    @BeforeAll
+    public static void setUpBeforeAll() throws Exception {
 
-        try (MonitoringProvider monitoringProvider = new MonitoringProvider(getParameters())) {
+        inputParticipantStatistics =
+                CODER.decode(new File(CL_PARTICIPANT_STATISTICS_JSON), ParticipantStatisticsList.class);
+        inputClElementStatistics = CODER.decode(new File(CL_ELEMENT_STATISTICS_JSON), ClElementStatisticsList.class);
+    }
+
+    @BeforeEach
+    public void setUpBeforeEach() throws Exception {
+        super.setHttpPrefix(randomServerPort);
+
+        try (var monitoringProvider = new MonitoringProvider(clRuntimeParameterGroup)) {
             // Insert Participant statistics to DB
-            participantStatisticsList = monitoringProvider.createParticipantStatistics(inputParticipantStatistics
-                .getStatisticsList());
+            participantStatisticsList =
+                    monitoringProvider.createParticipantStatistics(inputParticipantStatistics.getStatisticsList());
             // Insert CL Element statistics to DB
-            clElementStatisticsList = monitoringProvider.createClElementStatistics(inputClElementStatistics
-                .getClElementStatistics());
+            clElementStatisticsList =
+                    monitoringProvider.createClElementStatistics(inputClElementStatistics.getClElementStatistics());
         }
     }
 
-    @AfterClass
-    public static void teardownAfterClass() {
-        CommonRestController.teardownAfterClass();
-    }
-
     @Test
-    public void testQuery_Unauthorized_for_ClElementStats() throws Exception {
+    void testQuery_Unauthorized_for_ClElementStats() throws Exception {
         assertUnauthorizedGet(CLELEMENT_STATS_ENDPOINT);
     }
 
     @Test
-    public void testQuery_Unauthorized_for_ClParticipantStats() throws Exception {
+    void testQuery_Unauthorized_for_ClParticipantStats() throws Exception {
         assertUnauthorizedGet(PARTICIPANT_STATS_ENDPOINT);
     }
 
     @Test
-    public void testQuery_Unauthorized_for_ParticipantStatsPerCl() throws Exception {
+    void testQuery_Unauthorized_for_ParticipantStatsPerCl() throws Exception {
         assertUnauthorizedGet(PARTICIPANT_STATS_PER_CL_ENDPOINT);
     }
 
     @Test
-    public void testQuery_Unauthorized_for_ClElementStatsPerCl() throws Exception {
+    void testQuery_Unauthorized_for_ClElementStatsPerCl() throws Exception {
         assertUnauthorizedGet(CLELEMENT_STATS_PER_CL_ENDPOINT);
     }
 
     @Test
-    public void testSwagger_ClStats() throws Exception {
+    void testSwagger_ClStats() throws Exception {
         super.testSwagger(CLELEMENT_STATS_ENDPOINT);
         super.testSwagger(PARTICIPANT_STATS_ENDPOINT);
         super.testSwagger(CLELEMENT_STATS_PER_CL_ENDPOINT);
@@ -116,13 +131,12 @@
     }
 
     @Test
-    public void testClElementStatisticsEndpoint() throws Exception {
+    void testClElementStatisticsEndpoint() throws Exception {
         // Filter statistics only based on participant Id and UUID
-        Invocation.Builder invokeRequest1 =
-            super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name=" + clElementStatisticsList
-                .getClElementStatistics().get(0).getParticipantId().getName() + "&version=" + clElementStatisticsList
-                .getClElementStatistics().get(0).getParticipantId().getVersion() + "&id=" + clElementStatisticsList
-                .getClElementStatistics().get(0).getId().toString());
+        Invocation.Builder invokeRequest1 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name="
+                + clElementStatisticsList.getClElementStatistics().get(0).getParticipantId().getName() + "&version="
+                + clElementStatisticsList.getClElementStatistics().get(0).getParticipantId().getVersion() + "&id="
+                + clElementStatisticsList.getClElementStatistics().get(0).getId().toString());
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
 
@@ -130,55 +144,49 @@
 
         assertNotNull(result1);
         assertThat(result1.getClElementStatistics()).hasSize(2);
-        assertEquals(result1.getClElementStatistics().get(0), clElementStatisticsList
-            .getClElementStatistics().get(0));
+        assertEquals(result1.getClElementStatistics().get(0), clElementStatisticsList.getClElementStatistics().get(0));
 
         // Filter statistics based on timestamp
-        Invocation.Builder invokeRequest2 =
-            super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name=" + clElementStatisticsList
-                .getClElementStatistics().get(1).getParticipantId().getName() + "&version=" + clElementStatisticsList
-                .getClElementStatistics().get(1).getParticipantId().getVersion() + "&startTime="
-                + Instant.parse("2021-01-10T13:00:00.000Z") + "&endTime=" + Instant.parse("2021-01-10T14:00:00.000Z"));
+        Invocation.Builder invokeRequest2 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?name="
+                + clElementStatisticsList.getClElementStatistics().get(1).getParticipantId().getName() + "&version="
+                + clElementStatisticsList.getClElementStatistics().get(1).getParticipantId().getVersion()
+                + "&startTime=" + Instant.parse("2021-01-10T13:00:00.000Z") + "&endTime="
+                + Instant.parse("2021-01-10T14:00:00.000Z"));
         Response response2 = invokeRequest2.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), response2.getStatus());
         ClElementStatisticsList result2 = response2.readEntity(ClElementStatisticsList.class);
 
         assertNotNull(result2);
         assertThat(result2.getClElementStatistics()).hasSize(1);
-        assertEquals(result1.getClElementStatistics().get(0), clElementStatisticsList
-            .getClElementStatistics().get(0));
+        assertEquals(result1.getClElementStatistics().get(0), clElementStatisticsList.getClElementStatistics().get(0));
     }
 
     @Test
-    public void testClElementStats_BadRequest() throws Exception {
-        Invocation.Builder invokeRequest1 =
-            super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?version=1.0.0");
+    void testClElementStats_BadRequest() throws Exception {
+        Invocation.Builder invokeRequest1 = super.sendRequest(CLELEMENT_STATS_ENDPOINT + "?version=1.0.0");
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
     }
 
     @Test
-    public void testParticipantStatisticsEndpoint() throws Exception {
+    void testParticipantStatisticsEndpoint() throws Exception {
 
         // Filter statistics only based on participant Id
-        Invocation.Builder invokeRequest1 =
-            super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name=" + participantStatisticsList
-                .getStatisticsList().get(0).getParticipantId().getName() + "&version=" + participantStatisticsList
-                .getStatisticsList().get(0).getParticipantId().getVersion());
+        Invocation.Builder invokeRequest1 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name="
+                + participantStatisticsList.getStatisticsList().get(0).getParticipantId().getName() + "&version="
+                + participantStatisticsList.getStatisticsList().get(0).getParticipantId().getVersion());
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
         ParticipantStatisticsList result1 = response1.readEntity(ParticipantStatisticsList.class);
 
         assertNotNull(result1);
         assertThat(result1.getStatisticsList()).hasSize(2);
-        assertEquals(result1.getStatisticsList().get(0), participantStatisticsList
-            .getStatisticsList().get(0));
+        assertEquals(result1.getStatisticsList().get(0), participantStatisticsList.getStatisticsList().get(0));
 
         // Filter statistics based on timestamp
-        Invocation.Builder invokeRequest2 =
-            super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name=" + participantStatisticsList
-                .getStatisticsList().get(1).getParticipantId().getName() + "&version=" + participantStatisticsList
-                .getStatisticsList().get(1).getParticipantId().getVersion() + "&startTime="
+        Invocation.Builder invokeRequest2 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?name="
+                + participantStatisticsList.getStatisticsList().get(1).getParticipantId().getName() + "&version="
+                + participantStatisticsList.getStatisticsList().get(1).getParticipantId().getVersion() + "&startTime="
                 + Instant.parse("2021-01-10T13:00:00.000Z") + "&endTime=" + Instant.parse("2021-01-10T14:00:00.000Z"));
         Response response2 = invokeRequest2.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), response2.getStatus());
@@ -186,22 +194,20 @@
 
         assertNotNull(result2);
         assertThat(result2.getStatisticsList()).hasSize(1);
-        assertEquals(result1.getStatisticsList().get(0), participantStatisticsList
-            .getStatisticsList().get(0));
+        assertEquals(result1.getStatisticsList().get(0), participantStatisticsList.getStatisticsList().get(0));
     }
 
     @Test
-    public void testParticipantStats_BadRequest() throws Exception {
-        Invocation.Builder invokeRequest1 =
-            super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?version=0.0");
+    void testParticipantStats_BadRequest() throws Exception {
+        Invocation.Builder invokeRequest1 = super.sendRequest(PARTICIPANT_STATS_ENDPOINT + "?version=0.0");
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
     }
 
     @Test
-    public void testParticipantStatsPerClEndpoint() throws Exception {
+    void testParticipantStatsPerClEndpoint() throws Exception {
         Invocation.Builder invokeRequest1 =
-            super.sendRequest(PARTICIPANT_STATS_PER_CL_ENDPOINT + "?name=dummyName&version=1.001");
+                super.sendRequest(PARTICIPANT_STATS_PER_CL_ENDPOINT + "?name=dummyName&version=1.001");
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
         ParticipantStatisticsList result1 = response1.readEntity(ParticipantStatisticsList.class);
@@ -209,17 +215,16 @@
     }
 
     @Test
-    public void testParticipantStatsPerCl_BadRequest() throws Exception {
-        Invocation.Builder invokeRequest1 =
-            super.sendRequest(PARTICIPANT_STATS_PER_CL_ENDPOINT);
+    void testParticipantStatsPerCl_BadRequest() throws Exception {
+        Invocation.Builder invokeRequest1 = super.sendRequest(PARTICIPANT_STATS_PER_CL_ENDPOINT);
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
     }
 
     @Test
-    public void testClElementStatisticsPerClEndpoint() throws Exception {
+    void testClElementStatisticsPerClEndpoint() throws Exception {
         Invocation.Builder invokeRequest1 =
-            super.sendRequest(CLELEMENT_STATS_PER_CL_ENDPOINT + "?name=dummyName&version=1.001");
+                super.sendRequest(CLELEMENT_STATS_PER_CL_ENDPOINT + "?name=dummyName&version=1.001");
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.OK.getStatusCode(), response1.getStatus());
         ClElementStatisticsList result1 = response1.readEntity(ClElementStatisticsList.class);
@@ -227,9 +232,8 @@
     }
 
     @Test
-    public void testClElementStatsPerCl_BadRequest() throws Exception {
-        Invocation.Builder invokeRequest1 =
-            super.sendRequest(CLELEMENT_STATS_PER_CL_ENDPOINT);
+    void testClElementStatsPerCl_BadRequest() throws Exception {
+        Invocation.Builder invokeRequest1 = super.sendRequest(CLELEMENT_STATS_PER_CL_ENDPOINT);
         Response response1 = invokeRequest1.buildGet().invoke();
         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response1.getStatus());
     }
diff --git a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java
index 00b9c67..eebaa52 100644
--- a/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java
+++ b/runtime-controlloop/src/test/java/org/onap/policy/clamp/controlloop/runtime/util/rest/CommonRestController.java
@@ -20,14 +20,9 @@
 
 package org.onap.policy.clamp.controlloop.runtime.util.rest;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Entity;
@@ -37,15 +32,8 @@
 import javax.ws.rs.core.Response;
 import org.glassfish.jersey.client.ClientProperties;
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
-import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException;
-import org.onap.policy.clamp.controlloop.runtime.main.startstop.Main;
-import org.onap.policy.clamp.controlloop.runtime.util.CommonTestData;
 import org.onap.policy.common.gson.GsonMessageBodyHandler;
 import org.onap.policy.common.utils.network.NetworkUtil;
-import org.onap.policy.common.utils.services.Registry;
-import org.onap.policy.models.provider.PolicyModelsProviderParameters;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Class to perform Rest unit tests.
@@ -53,46 +41,10 @@
  */
 public class CommonRestController {
 
-    private static final String CONFIG_FILE = "src/test/resources/parameters/RuntimeConfigParameters%d.json";
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(CommonRestController.class);
-
     public static final String SELF = NetworkUtil.getHostname();
     public static final String ENDPOINT_PREFIX = "onap/controlloop/v2/";
 
-    private static int port;
     private static String httpPrefix;
-    private static Main main;
-
-    /**
-     * Allocates a port for the server, writes a config file, and then starts Main.
-     *
-     * @param dbName database name
-     * @throws Exception if an error occurs
-     */
-    public static void setUpBeforeClass(final String dbName) throws Exception {
-        port = NetworkUtil.allocPort();
-
-        httpPrefix = "http://" + SELF + ":" + port + "/";
-
-        makeConfigFile(dbName);
-        startMain();
-    }
-
-    /**
-     * Stops Main.
-     */
-    public static void teardownAfterClass() {
-        try {
-            stopMain();
-        } catch (Exception ex) {
-            LOGGER.error("cannot stop main", ex);
-        }
-    }
-
-    protected static PolicyModelsProviderParameters getParameters() {
-        return main.getParameters().getDatabaseProviderParameters();
-    }
 
     /**
      * Verifies that an endpoint appears within the swagger response.
@@ -101,71 +53,10 @@
      * @throws Exception if an error occurs
      */
     protected void testSwagger(final String endpoint) throws Exception {
-        final Invocation.Builder invocationBuilder = sendFqeRequest(httpPrefix + "swagger.yaml", true);
+        final Invocation.Builder invocationBuilder = sendRequest("api-docs");
         final String resp = invocationBuilder.get(String.class);
 
-        assertTrue(resp.contains(ENDPOINT_PREFIX + endpoint + ":"));
-    }
-
-    /**
-     * Makes a parameter configuration file.
-     *
-     * @param dbName database name
-     * @throws IOException if an error occurs writing the configuration file
-     * @throws FileNotFoundException if an error occurs writing the configuration file
-     */
-    private static void makeConfigFile(final String dbName) throws FileNotFoundException, IOException {
-        String json = CommonTestData.getParameterGroupAsString(port, dbName);
-
-        File file = new File(String.format(CONFIG_FILE, port));
-        file.deleteOnExit();
-
-        try (FileOutputStream output = new FileOutputStream(file)) {
-            output.write(json.getBytes(StandardCharsets.UTF_8));
-        }
-    }
-
-    /**
-     * Starts the "Main".
-     *
-     * @throws InterruptedException if the NetworkUtil method calls are interrupted
-     * @throws IllegalStateException if a controller cannot be started on the requested port
-     */
-    protected static void startMain() throws InterruptedException {
-        Registry.newRegistry();
-
-        // make sure port is available
-        if (NetworkUtil.isTcpPortOpen(SELF, port, 1, 1L)) {
-            throw new IllegalStateException("port " + port + " is not available");
-        }
-
-        final String[] configParameters = {"-c", String.format(CONFIG_FILE, port)};
-
-        main = new Main(configParameters);
-
-        if (!NetworkUtil.isTcpPortOpen(SELF, port, 40, 250L)) {
-            throw new IllegalStateException("server is not listening on port " + port);
-        }
-    }
-
-    /**
-     * Stops the "Main".
-     *
-     * @throws ControlLoopException if an error occurs shutting down the controller
-     * @throws InterruptedException if the NetworkUtil method calls are interrupted
-     * @throws IllegalStateException if a controller cannot be started on the requested port
-     */
-    private static void stopMain() throws ControlLoopException, InterruptedException {
-        if (main != null) {
-            Main main2 = main;
-            main = null;
-
-            main2.shutdown();
-        }
-        // make sure port is close
-        if (NetworkUtil.isTcpPortOpen(SELF, port, 1, 1L)) {
-            throw new IllegalStateException("port " + port + " is still in use");
-        }
+        assertThat(resp).contains(endpoint);
     }
 
     /**
@@ -211,7 +102,7 @@
 
         final WebTarget webTarget = client.target(fullyQualifiedEndpoint);
 
-        return webTarget.request(MediaType.APPLICATION_JSON);
+        return webTarget.request(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON);
     }
 
     /**
@@ -259,4 +150,13 @@
         Response rawresp = sendNoAuthRequest(endPoint).delete();
         assertEquals(Response.Status.UNAUTHORIZED.getStatusCode(), rawresp.getStatus());
     }
+
+    /**
+     * Set Up httpPrefix.
+     *
+     * @param port the port
+     */
+    protected void setHttpPrefix(int port) {
+        httpPrefix = "http://" + SELF + ":" + port + "/";
+    }
 }
diff --git a/runtime-controlloop/src/test/resources/application_test.properties b/runtime-controlloop/src/test/resources/application_test.properties
new file mode 100644
index 0000000..fc24ea2
--- /dev/null
+++ b/runtime-controlloop/src/test/resources/application_test.properties
@@ -0,0 +1,9 @@
+spring.security.user.name=healthcheck
+spring.security.user.password=zb!XztG34
+security.enable-csrf=false
+
+server.port=6969
+server.servlet.context-path=/onap/controlloop
+server.error.path=/error
+
+runtime.file=src/test/resources/parameters/TestParameters.json
diff --git a/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json b/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json
index 3d5a7df..06f4370 100644
--- a/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json
+++ b/runtime-controlloop/src/test/resources/parameters/InstantiationConfigParametersStd.json
@@ -6,8 +6,7 @@
     "participantClStateChangeIntervalSec": 1000,
     "restServerParameters": {
         "host": "0.0.0.0",
-        "port": ${port
-        },
+        "port": ${port},
         "userName": "healthcheck",
         "password": "zb!XztG34",
         "https": false,
diff --git a/runtime-controlloop/src/test/resources/parameters/TestParametersMariaDB.json b/runtime-controlloop/src/test/resources/parameters/TestParametersMariaDB.json
deleted file mode 100644
index 3a009f8..0000000
--- a/runtime-controlloop/src/test/resources/parameters/TestParametersMariaDB.json
+++ /dev/null
@@ -1,63 +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://localhost:3306/controlloop",
-        "databaseUser": "policy",
-        "databasePassword": "P01icY",
-        "persistenceUnit": "CommissioningMariaDb"
-    },
-    "topicParameterGroup": {
-        "topicSources": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap",
-                "fetchTimeout": 15000
-            }
-        ],
-        "topicSinks": [
-            {
-                "topic": "POLICY-CLRUNTIME-PARTICIPANT",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            },
-            {
-                "topic": "POLICY-NOTIFICATION",
-                "servers": [
-                    "localhost"
-                ],
-                "topicCommInfrastructure": "dmaap"
-            }
-        ]
-    }
-}