Add test to Holmes

New test for holmes and refactor of the application.java class according
to Sonar reports

Change-Id: I2117b403c18e2cb2cd902018db951025a1db9bae
Issue-ID: CLAMP-54
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
index 22b3ba0..02e27ea 100644
--- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
@@ -24,69 +24,65 @@
 package org.onap.clamp.clds.model.prop;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
-import org.junit.Assert;
+import org.junit.Before;
 import org.junit.Test;
 import org.onap.clamp.clds.util.ResourceFileUtil;
 
-
 /**
  * Test org.onap.clamp.ClampDesigner.model.prop package using ModelProperties.
  */
 public class ModelPropertiesTest {
 
-    @Test
-    public void testJsonParse() throws IOException {
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnProp.json");
-        String modelProp = ResourceFileUtil.getResourceAsString("example/modelProp.json");
-        String modName = "example-model-name";
-        String controlName = "example-control-name";
-
-        ModelProperties prop = new ModelProperties(modName, controlName, null, true, modelBpmnProp, modelProp);
-        Assert.assertEquals(modName, prop.getModelName());
-        Assert.assertEquals(controlName, prop.getControlName());
-        Assert.assertEquals(null, prop.getActionCd());
-        Global global = prop.getGlobal();
-        Assert.assertEquals("0f983e18-4603-4bb4-a98c-e29691fb16a1", global.getService());
-        Assert.assertEquals("[SNDGCA64]", global.getLocation().toString());
-        Assert.assertEquals("[6c7aaec2-59eb-41d9-8681-b7f976ab668d]", global.getResourceVf().toString());
-        StringMatch sm = prop.getType(StringMatch.class);
-        Assert.assertEquals("StringMatch_", sm.getId());
-        Policy policy = prop.getType(Policy.class);
-        Assert.assertEquals("Policy_", policy.getId());
-        Assert.assertEquals(null, policy.getTopicPublishes());
-        Assert.assertEquals(null, policy.getTopicSubscribes());
-
-        Tca tca = prop.getType(Tca.class);
-        Assert.assertEquals("Narra", tca.getTcaItems().get(0).getTcaName());
-        Assert.assertEquals(Integer.valueOf(4), tca.getTcaItems().get(0).getTcaThreshholds().get(0).getThreshhold());
+    @Before
+    public void registerNewClasses() {
+        ModelProperties.registerModelElement(Holmes.class, Holmes.getType());
     }
 
     @Test
-    public void testPolicy() throws IOException {
+    public void testHolmes() throws IOException {
 
-        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/modelBpmnPropForPolicy.json");
-        System.out.println(modelBpmnProp);
+        String modelBpmnProp = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmnProp.json");
+        String modelBpmn = ResourceFileUtil.getResourceAsString("example/model-properties/modelBpmn.json");
 
-        String modelProp = ResourceFileUtil.getResourceAsString("example/modelPropForPolicy.json");
-        System.out.println(modelProp);
-        ModelProperties prop = new ModelProperties("example-model-name", "example-control-name",
-                null, true, modelBpmnProp, modelProp);
-        System.out.println("attempting prop.getGlobal()...");
-        Global global = prop.getGlobal();
-        System.out.println("attempting prop.getStringMatch()...");
+        ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn,
+                modelBpmnProp);
+
         StringMatch stringMatch = prop.getType(StringMatch.class);
-        if (stringMatch.isFound()) {
-            System.out.println("stringMatch json object is present...");
-            assertEquals("1", stringMatch.getResourceGroups().get(0).getPolicyId());
-        }
-        System.out.println("attempting prop.getPolicy()...");
+        assertTrue(stringMatch.isFound());
+        assertEquals("1505133578560", stringMatch.getResourceGroups().get(0).getGroupNumber());
+        assertEquals("0", stringMatch.getResourceGroups().get(0).getPolicyId());
+        assertEquals(1, stringMatch.getResourceGroups().get(0).getServiceConfigurations().size());
+        List<String> aaiMathcingFields = new ArrayList<String>();
+        aaiMathcingFields.add("complex.city");
+        assertEquals(aaiMathcingFields,
+                stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getaaiMatchingFields());
+        assertEquals("1600", stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getAgeLimit());
+        assertEquals(1, stringMatch.getResourceGroups().get(0).getServiceConfigurations().get(0).getStringSet().size());
+
+        Collector collector = prop.getType(Collector.class);
+        assertTrue(collector.isFound());
+        assertEquals("DCAE-COLLECTOR-UCSNMP", collector.getTopicPublishes());
+
         Policy policy = prop.getType(Policy.class);
-        if (policy.isFound()) {
-            System.out.println("policy json object is present...");
-            assertEquals("1", policy.getPolicyChains().get(0).getPolicyId());
-        }
+        assertTrue(policy.isFound());
+        assertEquals(1, policy.getPolicyChains().size());
+        assertEquals("0", policy.getPolicyChains().get(0).getPolicyId());
+        assertEquals(1, policy.getPolicyChains().get(0).getPolicyItems().size());
+
+        Tca tca = prop.getType(Tca.class);
+        assertTrue(tca.isFound());
+        assertEquals(1, tca.getTcaItems().size());
+        assertEquals(0, tca.getTcaItems().get(0).getTcaThreshholds().size());
+
+        Holmes holmes = prop.getType(Holmes.class);
+        assertTrue(holmes.isFound());
+        assertEquals("policy1", holmes.getOperationalPolicy());
+        assertEquals("blabla", holmes.getCorrelationLogic());
     }
 }
\ No newline at end of file
diff --git a/src/test/resources/example/model-properties/modelBpmn.json b/src/test/resources/example/model-properties/modelBpmn.json
new file mode 100644
index 0000000..4737174
--- /dev/null
+++ b/src/test/resources/example/model-properties/modelBpmn.json
@@ -0,0 +1,38 @@
+{
+	"collector": [
+		{
+			"id": "Collector_1c72ct5",
+			"from": "StartEvent_1"
+		}
+	],
+	"stringMatch": [
+		{
+			"id": "StringMatch_05arstl",
+			"from": "Collector_1c72ct5"
+		}
+	],
+	"policy": [
+		{
+			"id": "Policy_0honxgv",
+			"from": "TCA_1jy9to4"
+		}
+	],
+	"tca": [
+		{
+			"id": "TCA_1jy9to4",
+			"from": "Holmes_0i4n2mm"
+		}
+	],
+	"holmes": [
+		{
+			"id": "Holmes_0i4n2mm",
+			"from": "VesCollector_0orydnh"
+		}
+	],
+	"vesCollector": [
+		{
+			"id": "VesCollector_0orydnh",
+			"from": "StringMatch_05arstl"
+		}
+	]
+}
\ No newline at end of file
diff --git a/src/test/resources/example/model-properties/modelBpmnProp.json b/src/test/resources/example/model-properties/modelBpmnProp.json
new file mode 100644
index 0000000..7e799aa
--- /dev/null
+++ b/src/test/resources/example/model-properties/modelBpmnProp.json
@@ -0,0 +1,188 @@
+{
+	"Collector_1c72ct5": [
+		{
+			"name": "topicPublishes",
+			"value": "DCAE-COLLECTOR-UCSNMP"
+		}
+	],
+	"StringMatch_05arstl": {
+		"group1": [
+			{
+				"name": "rgname",
+				"value": "1505133578560"
+			},
+			{
+				"name": "rgfriendlyname",
+				"value": "group1"
+			},
+			{
+				"name": "policyName",
+				"value": "policy1"
+			},
+			{
+				"name": "policyId",
+				"value": "0"
+			},
+			{
+				"serviceConfigurations": [
+					[
+						{
+							"name": "aaiMatchingFields",
+							"value": [
+								"complex.city"
+							]
+						},
+						{
+							"name": "aaiSendFields",
+							"value": [
+								"cloud-region.identity-url"
+							]
+						},
+						{
+							"name": "timeWindow",
+							"value": [
+								"0"
+							]
+						},
+						{
+							"name": "ageLimit",
+							"value": [
+								"1600"
+							]
+						},
+						{
+							"name": "createClosedLoopEventId",
+							"value": [
+								"Initial"
+							]
+						},
+						{
+							"name": "outputEventName",
+							"value": [
+								""
+							]
+						},
+						{
+							"stringSet": [
+								{
+									
+								},
+								{
+									"name": "eventSeverity",
+									"value": [
+										"NORMAL"
+									]
+								},
+								{
+									"name": "eventSourceType",
+									"value": [
+										""
+									]
+								}
+							]
+						}
+					]
+				]
+			}
+		]
+	},
+	"Policy_0honxgv": {
+		"policy1": [
+			{
+				"name": "pname",
+				"value": "policy1"
+			},
+			{
+				"name": "pid",
+				"value": "0"
+			},
+			{
+				"name": "timeout",
+				"value": "345"
+			},
+			{
+				"policyConfigurations": [
+					[
+						{
+							"name": "maxRetries",
+							"value": [
+								"3"
+							]
+						},
+						{
+							"name": "retryTimeLimit",
+							"value": [
+								"180"
+							]
+						},
+						{
+							"name": "_id",
+							"value": [
+								"dGLuNqg"
+							]
+						},
+						{
+							"name": "parentPolicy",
+							"value": [
+								""
+							]
+						}
+					]
+				]
+			}
+		]
+	},
+	"TCA_1jy9to4": {
+		"tca1": [
+			{
+				"name": "tname",
+				"value": "tca1"
+			},
+			{
+				"name": "tuuid",
+				"value": "f43e3499-8c9c-teed-bb41-a0cb38ebf0d3"
+			},
+			{
+				"name": "tnfc",
+				"value": ""
+			},
+			{
+				"name": "tcaEnab",
+				"value": "on"
+			},
+			{
+				"name": "tcaPol",
+				"value": "policy1"
+			},
+			{
+				"name": "tcaPolId",
+				"value": "0"
+			},
+			{
+				"name": "tcaInt",
+				"value": "1"
+			},
+			{
+				"name": "tcaSev",
+				"value": "NORMAL"
+			},
+			{
+				"name": "tcaVio",
+				"value": "1"
+			},
+			{
+				"serviceConfigurations": []
+			}
+		]
+	},
+	"Holmes_0i4n2mm": [
+		{
+			"name": "correlationalLogic",
+			"value": "blabla"
+		},
+		{
+			"name": "operationalPolicy",
+			"value": "policy1"
+		}
+	]
+}
\ No newline at end of file
diff --git a/src/test/resources/https/https-test.properties b/src/test/resources/https/https-test.properties
index b30f6aa..d34f028 100644
--- a/src/test/resources/https/https-test.properties
+++ b/src/test/resources/https/https-test.properties
@@ -64,7 +64,6 @@
 #Modified engine-rest applicationpath
 spring.jersey.application-path=/engine-rest
 spring.profiles.active=clamp-default,clamp-spring-authentication
-spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
 
 #The max number of active threads in this pool
 server.tomcat.max-threads=200
@@ -93,35 +92,42 @@
 kubernetes.namespace=com-att-ajsc
 
 #server.port=0
-
 #Camunda Process Engine DataSource connection Details
-spring.datasource.camunda.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/camundabpm?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100
+spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver
+spring.datasource.camunda.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true
 spring.datasource.camunda.username=camunda
 spring.datasource.camunda.password=ndMSpw4CAM
-spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver
 spring.datasource.camunda.validationQuery=SELECT 1
 spring.datasource.camunda.validationQueryTimeout=20000
-spring.datasource.camunda.validationInterval=60000
+spring.datasource.camunda.validationInterval=30000
 spring.datasource.camunda.testWhileIdle = true
+spring.datasource.camunda.minIdle = 0
+spring.datasource.camunda.initialSize=0
 # Automatically test whether a connection provided is good or not
 spring.datasource.camunda.testOnBorrow=true
+spring.datasource.camunda.ignoreExceptionOnPreLoad=true
+
 
 #Camunda application properties
 #Camunda history level
-camunda.bpm.history-level=auto
+camunda.bpm.history-level=none
+camunda.bpm.database.type=mariadb
+camunda.bpm.database.schema-update=false
 
 #clds datasource connection details
-spring.datasource.cldsdb.driver-class-name=org.mariadb.jdbc.Driver
-spring.datasource.cldsdb.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100
+spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver
+spring.datasource.cldsdb.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true
 spring.datasource.cldsdb.username=clds
 spring.datasource.cldsdb.password=sidnnd83K
-spring.datasource.cldsdb.driverClassName=com.mysql.jdbc.Driver
 spring.datasource.cldsdb.validationQuery=SELECT 1
 spring.datasource.cldsdb.validationQueryTimeout=20000
-spring.datasource.cldsdb.validationInterval=60000
+spring.datasource.cldsdb.validationInterval=30000
 spring.datasource.cldsdb.testWhileIdle = true
+spring.datasource.cldsdb.minIdle = 0
+spring.datasource.cldsdb.initialSize=0
 # Automatically test whether a connection provided is good or not
 spring.datasource.cldsdb.testOnBorrow=true
+spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true
 
 #Async Executor default Parameters
 async.core.pool.size=10