From: Determe, Sebastien (sd378r) Date: Wed, 13 Sep 2017 14:21:38 +0000 (+0200) Subject: Add test to Holmes X-Git-Tag: v1.1.0~80^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=clamp.git;a=commitdiff_plain;h=ff1b29770a38e58c7b8e59e567339c3f7921aa5c 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) --- diff --git a/src/main/java/org/onap/clamp/clds/Application.java b/src/main/java/org/onap/clamp/clds/Application.java index 4fc68e1d..0304a680 100644 --- a/src/main/java/org/onap/clamp/clds/Application.java +++ b/src/main/java/org/onap/clamp/clds/Application.java @@ -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(); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a6655783..854fe737 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -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,34 +92,41 @@ camel.defaultthreadpool.rejectpolicy=CallerRuns kubernetes.namespace=com-att-ajsc #server.port=0 - #Camunda Process Engine DataSource connection Details spring.datasource.camunda.driverClassName=org.mariadb.jdbc.Driver -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.url=jdbc:mariadb://localhost:${docker.mariadb.port.host}/camundabpm?autoReconnect=true spring.datasource.camunda.username=camunda spring.datasource.camunda.password=ndMSpw4CAM 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.camunda.driverClassName=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.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 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 22b3ba0c..02e27ea8 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"); + + 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 aaiMathcingFields = new ArrayList(); + 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 00000000..4737174c --- /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 00000000..7e799aa8 --- /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 b30f6aaf..d34f028a 100644 --- a/src/test/resources/https/https-test.properties +++ b/src/test/resources/https/https-test.properties @@ -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