Add test to Holmes 21/12221/1
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Wed, 13 Sep 2017 14:21:38 +0000 (16:21 +0200)
committerDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Wed, 13 Sep 2017 14:21:38 +0000 (16:21 +0200)
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>
src/main/java/org/onap/clamp/clds/Application.java
src/main/resources/application.properties
src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
src/test/resources/example/model-properties/modelBpmn.json [new file with mode: 0644]
src/test/resources/example/model-properties/modelBpmnProp.json [new file with mode: 0644]
src/test/resources/https/https-test.properties

index 4fc68e1..0304a68 100644 (file)
@@ -36,6 +36,8 @@ import javax.ws.rs.client.ClientBuilder;
 import org.apache.camel.component.servlet.CamelHttpTransportServlet;
 import org.apache.catalina.connector.Connector;
 import org.camunda.bpm.spring.boot.starter.webapp.CamundaBpmWebappAutoConfiguration;
+import org.onap.clamp.clds.model.prop.Holmes;
+import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.SpringApplication;
@@ -43,6 +45,7 @@ import org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoC
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
 import org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration;
 import org.springframework.boot.builder.SpringApplicationBuilder;
@@ -57,8 +60,8 @@ import org.springframework.scheduling.annotation.EnableAsync;
 
 @SpringBootApplication
 @ComponentScan(basePackages = { "org.onap.clamp.clds", "com.att.ajsc" })
-@EnableAutoConfiguration(exclude = { CamundaBpmWebappAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
-        JpaRepositoriesAutoConfiguration.class, SecurityAutoConfiguration.class,
+@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, CamundaBpmWebappAutoConfiguration.class,
+        HibernateJpaAutoConfiguration.class, JpaRepositoriesAutoConfiguration.class, SecurityAutoConfiguration.class,
         ManagementWebSecurityAutoConfiguration.class })
 @EnableAsync
 public class Application extends SpringBootServletInitializer {
@@ -92,11 +95,19 @@ public class Application extends SpringBootServletInitializer {
         return application.sources(Application.class);
     }
 
-    public static void main(String[] args) throws Exception {
+    public static void main(String[] args) {
+        // This is to load the system.properties file parameters
         SystemPropertiesLoader.addSystemProperties();
+        // This is to initialize some Onap Clamp components
+        initializeComponents();
+        // Start the Spring application
         SpringApplication.run(Application.class, args); // NOSONAR
     }
 
+    private static void initializeComponents() {
+        ModelProperties.registerModelElement(Holmes.class, Holmes.getType());
+    }
+
     @Bean
     public ServletRegistrationBean servletRegistrationBean() {
         ServletRegistrationBean registration = new ServletRegistrationBean();
index a665578..854fe73 100644 (file)
@@ -64,7 +64,6 @@ server.contextPath=/
 #Modified engine-rest applicationpath\r
 spring.jersey.application-path=/engine-rest\r
 spring.profiles.active=clamp-default,clamp-spring-authentication\r
-spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration\r
 \r
 #The max number of active threads in this pool\r
 server.tomcat.max-threads=200\r
@@ -93,34 +92,41 @@ camel.defaultthreadpool.rejectpolicy=CallerRuns
 kubernetes.namespace=com-att-ajsc\r
 \r
 #server.port=0\r
-\r
 #Camunda Process Engine DataSource connection Details\r
 spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver\r
-spring.datasource.camunda.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/camundabpm?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100\r
+spring.datasource.camunda.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true\r
 spring.datasource.camunda.username=camunda\r
 spring.datasource.camunda.password=ndMSpw4CAM\r
 spring.datasource.camunda.validationQuery=SELECT 1\r
 spring.datasource.camunda.validationQueryTimeout=20000\r
-spring.datasource.camunda.validationInterval=60000\r
+spring.datasource.camunda.validationInterval=30000\r
 spring.datasource.camunda.testWhileIdle = true\r
+spring.datasource.camunda.minIdle = 0\r
+spring.datasource.camunda.initialSize=0\r
 # Automatically test whether a connection provided is good or not\r
 spring.datasource.camunda.testOnBorrow=true\r
+spring.datasource.camunda.ignoreExceptionOnPreLoad=true\r
 \r
 #Camunda application properties\r
 #Camunda history level\r
-camunda.bpm.history-level=auto\r
+camunda.bpm.history-level=none\r
+camunda.bpm.database.type=mariadb\r
+camunda.bpm.database.schema-update=false\r
 \r
 #clds datasource connection details\r
-spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver\r
-spring.datasource.cldsdb.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/cldsdb4?verifyServerCertificate=false&useSSL=false&requireSSL=false&autoReconnect=true&maxReconnects=100\r
+spring.datasource.cldsdb.driverClassName=org.mariadb.jdbc.Driver\r
+spring.datasource.cldsdb.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/cldsdb4?autoReconnect=true\r
 spring.datasource.cldsdb.username=clds\r
 spring.datasource.cldsdb.password=sidnnd83K\r
 spring.datasource.cldsdb.validationQuery=SELECT 1\r
 spring.datasource.cldsdb.validationQueryTimeout=20000\r
-spring.datasource.cldsdb.validationInterval=60000\r
+spring.datasource.cldsdb.validationInterval=30000\r
 spring.datasource.cldsdb.testWhileIdle = true\r
+spring.datasource.cldsdb.minIdle = 0\r
+spring.datasource.cldsdb.initialSize=0\r
 # Automatically test whether a connection provided is good or not\r
 spring.datasource.cldsdb.testOnBorrow=true\r
+spring.datasource.cldsdb.ignoreExceptionOnPreLoad=true\r
 \r
 #Async Executor default Parameters\r
 async.core.pool.size=10\r
index 22b3ba0..02e27ea 100644 (file)
 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");
+
+        ModelProperties prop = new ModelProperties("example-model-name", "example-control-name", null, true, modelBpmn,
+                modelBpmnProp);
 
-        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()...");
         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 (file)
index 0000000..4737174
--- /dev/null
@@ -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 (file)
index 0000000..7e799aa
--- /dev/null
@@ -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
index b30f6aa..d34f028 100644 (file)
@@ -64,7 +64,6 @@ server.contextPath=/
 #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 @@ camel.defaultthreadpool.rejectpolicy=CallerRuns
 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