Added U&IT tests in prh module 49/39049/5
authorwasala <przemyslaw.wasala@nokia.com>
Tue, 27 Mar 2018 11:02:10 +0000 (13:02 +0200)
committerwasala <przemyslaw.wasala@nokia.com>
Wed, 28 Mar 2018 11:52:17 +0000 (13:52 +0200)
We have already added tests in our Module.
In addition some dependencies were added too.
Clean up in pom.xml files

Change-Id: I4217d585293f48f2f00870d147807bb1d5b2b33f
Issue-ID: DCAEGEN2-407
Signed-off-by: wasala <przemyslaw.wasala@nokia.com>
18 files changed:
pom.xml
prh-aai-client/pom.xml
prh-aai-client/src/main/java/services/config/AAIConfig.java [moved from prh-aai-client/src/main/java/services/config/Config.java with 96% similarity]
prh-aai-client/src/main/java/services/config/AAIDmaapProducerConfiguration.java
prh-aai-client/src/main/java/services/config/DmaapConfig.java [deleted file]
prh-app-server/pom.xml
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java
prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTask.java
prh-app-server/src/main/resources/scheduled-context.xml [new file with mode: 0644]
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/junit5/mockito/MockitoExtension.java [new file with mode: 0644]
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/ServerPrhAppTest.java [deleted file]
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTaskSpy.java [moved from prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/config/Config.java with 69% similarity]
prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java [new file with mode: 0644]
prh-dmaap-client/pom.xml
prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/config/DmaapConfig.java
prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/config/DmaapConsumerConfiguration.java
prh-dmaap-client/src/main/java/org/onap/dcaegen2/services/config/DmaapProducerConfiguration.java

diff --git a/pom.xml b/pom.xml
index 3b17ffa..e334c00 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,6 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ ============LICENSE_START=======================================================
+  ~ PROJECT
+  ~ ================================================================================
+  ~ Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+  ~ ================================================================================
+  ~ 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.
+  ~ ============LICENSE_END=========================================================
+  -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.onap.oparent</groupId>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
-    <!-- Java version-->
+    <!-- JAVA VERSION-->
     <java.version>8</java.version>
     <compiler.plugin.version>3.7.0</compiler.plugin.version>
+
+
+    <!-- DEVELOPMENT SETTINGS -->
+    <immutable.version>2.5.6</immutable.version>
+
+    <!-- LOGGING SETTINGS -->
+    <slf4j.version>1.7.25</slf4j.version>
+    <logback.version>1.2.3</logback.version>
+
+    <!--TEST SETTINGS -->
+    <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
     <junit.version>4.12</junit.version>
     <junit.jupiter.version>5.1.0</junit.jupiter.version>
     <junit.vintage.version>5.1.0</junit.vintage.version>
     <junit.platform.version>1.1.0</junit.platform.version>
-    <!--TEST SETTINGS -->
-    <surefire.redirectTestOutputToFile>true</surefire.redirectTestOutputToFile>
+
     <!--PLUGIN SETTINGS -->
     <dependency.locations.enabled>false</dependency.locations.enabled>
     <nexusproxy>https://nexus.onap.org</nexusproxy>
     </repository>
   </repositories>
 
-  <dependencies>
-    <dependency>
-      <groupId>org.immutables</groupId>
-      <artifactId>value</artifactId>
-      <version>2.5.6</version>
-    </dependency>
-
-    <!-- LOGGING dependencies> -->
-
-
-    <!-- Testing tools dependencies -->
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <version>${junit.jupiter.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>${junit.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <version>${junit.jupiter.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <version>${junit.vintage.version}</version>
-      <scope>test</scope>
-    </dependency>
-    <!-- Only required to run tests in an IDE that bundles an older version -->
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-launcher</artifactId>
-      <version>${junit.platform.version}</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
   <build>
 
     <extensions>
           </executions>
         </plugin>
 
-        <!-- MAVEN AUTO RUN PLUGIN -->
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-antrun-plugin</artifactId>
-          <version>1.8</version>
-        </plugin>
-
         <!--  maven-surefire-plugin which is used during the test phase of build lifecycle -->
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
     </plugins>
   </reporting>
 
+  <dependencyManagement>
+    <dependencies>
+
+      <!-- DEVELOPMENT TOOLS DEPENDENCIES -->
+      <dependency>
+        <groupId>org.immutables</groupId>
+        <artifactId>value</artifactId>
+        <version>${immutable.version}</version>
+        <scope>provided</scope>
+      </dependency>
+
+      <!-- LOGGING dependencies> -->
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-api</artifactId>
+        <version>${slf4j.version}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>ch.qos.logback</groupId>
+        <artifactId>logback-core</artifactId>
+        <version>${logback.version}</version>
+        <scope>provided</scope>
+      </dependency>
+      <dependency>
+        <groupId>ch.qos.logback</groupId>
+        <artifactId>logback-classic</artifactId>
+        <version>${logback.version}</version>
+        <scope>provided</scope>
+      </dependency>
+
+      <!-- TESTING TOOLS DEPENDENCIES -->
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-api</artifactId>
+        <version>${junit.jupiter.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>${junit.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-engine</artifactId>
+        <version>${junit.jupiter.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.junit.vintage</groupId>
+        <artifactId>junit-vintage-engine</artifactId>
+        <version>${junit.vintage.version}</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-test</artifactId>
+        <version>5.0.4.RELEASE</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.mockito</groupId>
+        <artifactId>mockito-core</artifactId>
+        <version>2.16.0</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.testng</groupId>
+        <artifactId>testng</artifactId>
+        <version>6.14.2</version>
+        <scope>test</scope>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-test</artifactId>
+        <version>2.0.0.RELEASE</version>
+        <scope>test</scope>
+      </dependency>
+
+
+      <!-- ONLY REQUIRED TO RUN TESTS IN AN IDE THAT BUNDLES AN OLDER VERSION -->
+      <dependency>
+        <groupId>org.junit.platform</groupId>
+        <artifactId>junit-platform-launcher</artifactId>
+        <version>${junit.platform.version}</version>
+        <scope>test</scope>
+      </dependency>
+
+    </dependencies>
+  </dependencyManagement>
+
   <modules>
     <module>prh-app-server</module>
     <module>prh-aai-client</module>
index 5ac67ce..8efa0a3 100644 (file)
@@ -1,14 +1,89 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ ============LICENSE_START=======================================================
+  ~ PROJECT
+  ~ ================================================================================
+  ~ Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+  ~ ================================================================================
+  ~ 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.
+  ~ ============LICENSE_END=========================================================
+  -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
+  <modelVersion>4.0.0</modelVersion>
+
   <parent>
     <artifactId>prh</artifactId>
     <groupId>org.onap.dcaegen2.services</groupId>
     <version>1.0.0-SNAPSHOT</version>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
 
   <artifactId>prh-aai-client</artifactId>
+  <groupId>org.onap.dcaegen2.services.prh</groupId>
+  <packaging>jar</packaging>
+
+
+  <properties>
+    <main.basedir>${project.parent.basedir}</main.basedir>
+  </properties>
+
+  <dependencies>
+    
+    <!-- DEVELOPMENT DEPENDENCIES -->
+    <dependency>
+      <groupId>org.immutables</groupId>
+      <artifactId>value</artifactId>
+    </dependency>
+
+    <!-- LOGGING DEPENDENCIES-->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-core</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+
+    <!-- TEST DEPENDENCIES-->
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+
+  </dependencies>
 </project>
\ No newline at end of file
@@ -24,6 +24,6 @@ import java.io.Serializable;
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
  */
-interface Config extends Serializable {
+interface AAIConfig extends Serializable {
 
 }
index 396a78b..a7b0aac 100644 (file)
@@ -27,15 +27,29 @@ import org.immutables.value.Value;
  */
 @Value.Immutable(prehash = true)
 @Value.Style(stagedBuilder = true)
-public abstract class AAIDmaapProducerConfiguration extends DmaapConfig {
+public abstract class AAIDmaapProducerConfiguration implements AAIConfig {
 
     private static final long serialVersionUID = 1L;
 
-    private String aaiHost;
-    private Integer aaiHostPortNumber;
-    private String aaiProtocol;
-    private String aaiUserName;
-    private String aaiUserPassword;
-    private URL aaiProxyURL;
-    private boolean aaiIgnoreSSLCertificateErrors;
+    @Value.Parameter
+    public abstract String aaiHost();
+
+    @Value.Parameter
+    public abstract Integer aaiHostPortNumber();
+
+    @Value.Parameter
+    public abstract String aaiProtocol();
+
+    @Value.Parameter
+    public abstract String aaiUserName();
+
+    @Value.Parameter
+    public abstract String aaiUserPassword();
+
+    @Value.Parameter
+    public abstract URL aaiProxyURL();
+
+    @Value.Parameter
+    public abstract boolean aaiIgnoreSSLCertificateErrors();
+
 }
diff --git a/prh-aai-client/src/main/java/services/config/DmaapConfig.java b/prh-aai-client/src/main/java/services/config/DmaapConfig.java
deleted file mode 100644 (file)
index 0ddaea2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PROJECT
- * ================================================================================
- * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-package services.config;
-
-/**
- * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
- */
-public abstract class DmaapConfig implements Config {
-
-    private String dmmaphostName;
-    private Integer dmmapportNumber;
-    private String dmmaptopicName;
-    private String dmmapprotocol;
-    private String dmmapuserName;
-    private String dmmapuserPassword;
-    private String dmmapcontentType;
-}
index 513b511..a03e27f 100644 (file)
@@ -10,6 +10,7 @@
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>prh-app-server</artifactId>
+  <groupId>org.onap.dcaegen2.services.prh</groupId>
   <packaging>jar</packaging>
 
   <build>
@@ -25,7 +26,8 @@
     </plugins>
   </build>
   <dependencies>
-    <!--Development tools dependencies-->
+
+    <!--DEVELOPMENT DEPENDENCIES-->
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-webflux</artifactId>
     </dependency>
+
+    <!-- LOGGING DEPENDENCIES-->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-core</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+
+    <!--TESTS DEPENDENCIES -->
     <dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-commons</artifactId>
       <version>RELEASE</version>
     </dependency>
-    
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-test</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.testng</groupId>
+      <artifactId>testng</artifactId>
+    </dependency>
+
   </dependencies>
   <dependencyManagement>
     <dependencies>
       <dependency>
-        <!-- Import dependency management from Spring Boot -->
+        <!-- IMPORT DEPENDENCY MANAGEMENT FROM SPRING BOOT -->
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-dependencies</artifactId>
         <version>2.0.0.RELEASE</version>
index ebdf1bb..b66af99 100644 (file)
@@ -33,7 +33,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
 @ComponentScan
 @EnableScheduling
 public class MainApp {
-
     public static void main(String[] args) {
         SpringApplication.run(MainApp.class, args);
     }
index 0d7ec22..91ed602 100644 (file)
@@ -39,7 +39,20 @@ public class DmaapConsumerTask implements DmaapTask {
         logger.info("Start task DmaapConsumerTask::execute() :: Execution Time - {}", dateTimeFormatter.format(
             LocalDateTime.now()));
         //TODO: ADD implementation for executing request to consume topic from dmaap
-
+        //DmappConsumerRunner dmappConsumerRunner = consumer.play()
+        //if(dmappConsumerRunner != null){
+          //AAIProcess aaiProcess = new AAiPRocess(dmappConsumerRunner)
+        /*
+        try{
+        aaiProcess.Execute()
+        }
+        catch(Exception e(){
+            Log
+            return
+        }
+        DmaapConsumerPost post;
+        */
+        //}
         logger.info("End task DmaapConsumerTask::execute() :: Execution Time - {}",
             dateTimeFormatter.format(LocalDateTime.now()));
     }
index 006d44e..5ed3c8c 100644 (file)
@@ -34,25 +34,26 @@ import org.springframework.stereotype.Component;
 @Component
 public class ScheduledTask {
 
-    private static final int FIXED_DELAY = 1000;
+    private static final int SCHEDULING_DELAY = 1000;
     private static final Logger logger = LoggerFactory.getLogger(ScheduledTask.class);
     private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
 
     private final DmaapTask dmaapConsumerTask;
 
     @Autowired
-    public ScheduledTask(DmaapConsumerTask dmaapConsumerTask) {
+    public ScheduledTask(DmaapTask dmaapConsumerTask) {
         this.dmaapConsumerTask = dmaapConsumerTask;
     }
 
 
-    @Scheduled(fixedDelay = FIXED_DELAY)
+    @Scheduled(fixedDelay = SCHEDULING_DELAY)
     public void scheduledTaskAskingDMaaPOfConsumeEvent() {
         logger.info("Task scheduledTaskAskingDMaaPOfConsumeEvent() :: Execution Time - {}", dateTimeFormatter.format(
             LocalDateTime.now()));
         try {
             dmaapConsumerTask.execute();
-        } catch (AAINotFoundException e) {
+
+        } catch (AAINotFoundException | RuntimeException e) {
             logger.warn("Task scheduledTaskAskingDMaaPOfConsumeEvent()::AAINotFoundException :: Execution Time - {}:{}",
                 dateTimeFormatter.format(
                     LocalDateTime.now()), e.getMessage());
diff --git a/prh-app-server/src/main/resources/scheduled-context.xml b/prh-app-server/src/main/resources/scheduled-context.xml
new file mode 100644 (file)
index 0000000..1c60df8
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:task="http://www.springframework.org/schema/task"
+  xmlns:context="http://www.springframework.org/schema/context"
+  xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd
+               http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+               http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
+
+  <context:component-scan
+    base-package="org.onap.dcaegen2.services.prh"/>
+  <task:scheduled-tasks>
+    <task:scheduled ref="scheduledTask" method="scheduledTaskAskingDMaaPOfConsumeEvent"
+      fixed-rate="1000"/>
+  </task:scheduled-tasks>
+</beans>
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/junit5/mockito/MockitoExtension.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/IT/junit5/mockito/MockitoExtension.java
new file mode 100644 (file)
index 0000000..c1e2d75
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PROJECT
+ * ================================================================================
+ * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcaegen2.services.prh.IT.junit5.mockito;
+
+import static org.mockito.Mockito.mock;
+
+import java.lang.reflect.Parameter;
+
+import org.junit.jupiter.api.extension.ExtensionContext;
+import org.junit.jupiter.api.extension.ExtensionContext.Namespace;
+import org.junit.jupiter.api.extension.ExtensionContext.Store;
+import org.junit.jupiter.api.extension.ParameterContext;
+import org.junit.jupiter.api.extension.ParameterResolver;
+import org.junit.jupiter.api.extension.TestInstancePostProcessor;
+import org.mockito.MockitoAnnotations;
+import org.mockito.Mock;
+
+/**
+ * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/27/18
+ *
+ * {@code MockitoExtension} showcases the {@link TestInstancePostProcessor} and {@link ParameterResolver} extension APIs
+ * of JUnit 5 by providing dependency injection support at the field level and at the method parameter level via Mockito
+ * 2.x's {@link Mock @Mock} annotation.
+ */
+public class MockitoExtension implements TestInstancePostProcessor, ParameterResolver {
+
+    @Override
+    public void postProcessTestInstance(Object testInstance, ExtensionContext context) {
+        MockitoAnnotations.initMocks(testInstance);
+    }
+
+    @Override
+    public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
+        return parameterContext.getParameter().isAnnotationPresent(Mock.class);
+    }
+
+    @Override
+    public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) {
+        return getMock(parameterContext.getParameter(), extensionContext);
+    }
+
+    private Object getMock(Parameter parameter, ExtensionContext extensionContext) {
+        Class<?> mockType = parameter.getType();
+        Store mocks = extensionContext.getStore(Namespace.create(MockitoExtension.class, mockType));
+        String mockName = getMockName(parameter);
+
+        if (mockName != null) {
+            return mocks.getOrComputeIfAbsent(mockName, key -> mock(mockType, mockName));
+        } else {
+            return mocks.getOrComputeIfAbsent(mockType.getCanonicalName(), key -> mock(mockType));
+        }
+    }
+
+    private String getMockName(Parameter parameter) {
+        String explicitMockName = parameter.getAnnotation(Mock.class).name().trim();
+        if (!explicitMockName.isEmpty()) {
+            return explicitMockName;
+        } else if (parameter.isNamePresent()) {
+            return parameter.getName();
+        }
+        return null;
+    }
+
+
+}
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/ServerPrhAppTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/ServerPrhAppTest.java
deleted file mode 100644 (file)
index 4373a50..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * PROJECT
- * ================================================================================
- * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * ============LICENSE_END=========================================================
- */
-
-package org.onap.dcaegen2.services.prh;
-
-import org.junit.jupiter.api.Test;
-
-class MainAppTest {
-
-    @Test
-    void justAnExample() {
-        System.out.println("This test method should be run");
-    }
-}
\ No newline at end of file
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
-package org.onap.dcaegen2.services.config;
+package org.onap.dcaegen2.services.prh.tasks;
 
-import java.io.Serializable;
+import static org.mockito.Mockito.spy;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
 
 /**
- * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
+ * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/27/18
  */
-interface Config extends Serializable {
+@Configuration
+public class DmaapConsumerTaskSpy {
 
+    @Bean
+    @Primary
+    public DmaapConsumerTask registerSimpleDmaapConsumerTask() {
+        return spy(new DmaapConsumerTask());
+    }
 }
diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java
new file mode 100644 (file)
index 0000000..14e83c6
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * PROJECT
+ * ================================================================================
+ * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.dcaegen2.services.prh.tasks;
+
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.verify;
+
+import org.junit.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.runner.RunWith;
+import org.onap.dcaegen2.services.prh.IT.junit5.mockito.MockitoExtension;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
+
+/**
+ * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/27/18
+ */
+
+@Configuration
+@ComponentScan
+@RunWith(SpringRunner.class)
+@ExtendWith(MockitoExtension.class)
+@ContextConfiguration(locations = {"classpath:scheduled-context.xml"})
+public class ScheduledXmlContextITest extends AbstractTestNGSpringContextTests {
+
+    private static final int WAIT_FOR_SCHEDULING = 1000;
+
+    @Autowired
+    private DmaapConsumerTask dmaapConsumerTaskSpy;
+
+
+    @Test
+    public void testScheduling() throws InterruptedException {
+        Thread.sleep(WAIT_FOR_SCHEDULING);
+        verify(dmaapConsumerTaskSpy, atLeast(2)).execute();
+    }
+}
+
+
index 6817064..e3efc20 100644 (file)
@@ -1,4 +1,23 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ ============LICENSE_START=======================================================
+  ~ PROJECT
+  ~ ================================================================================
+  ~ Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+  ~ ================================================================================
+  ~ 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.
+  ~ ============LICENSE_END=========================================================
+  -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>prh-dmaap-client</artifactId>
+  <groupId>org.onap.dcaegen2.services.prh</groupId>
+  <packaging>jar</packaging>
 
+
+  <properties>
+    <main.basedir>${project.parent.basedir}</main.basedir>
+  </properties>
+
+  <dependencies>
+
+    <!-- DEVELOPMENT DEPENDENCIES -->
+    <dependency>
+      <groupId>org.immutables</groupId>
+      <artifactId>value</artifactId>
+    </dependency>
+
+    <!-- LOGGING DEPENDENCIES -->
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-core</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+
+
+    <!-- TEST DEPENDENCIES-->
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.vintage</groupId>
+      <artifactId>junit-vintage-engine</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 </project>
\ No newline at end of file
index 3b485cd..0d77c05 100644 (file)
  */
 package org.onap.dcaegen2.services.config;
 
+import java.io.Serializable;
+
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
  */
-public abstract class DmaapConfig implements Config {
+interface DmaapConfig extends Serializable {
 
-    private String dmmaphostName;
-    private Integer dmmapportNumber;
-    private String dmmaptopicName;
-    private String dmmapprotocol;
-    private String dmmapuserName;
-    private String dmmapuserPassword;
-    private String dmmapcontentType;
 }
index d36104b..f2a2f06 100644 (file)
@@ -26,12 +26,40 @@ import org.immutables.value.Value;
  */
 @Value.Immutable(prehash = true)
 @Value.Style(stagedBuilder = true)
-public abstract class DmaapConsumerConfiguration extends DmaapConfig {
+public abstract class DmaapConsumerConfiguration implements DmaapConfig {
 
     private static final long serialVersionUID = 1L;
 
-    private String consumerId;
-    private String consumerGroup;
-    private Integer timeoutMS;
-    private Integer messageLimit;
+    @Value.Parameter
+    public abstract String consumerId();
+
+    @Value.Parameter
+    public abstract String consumerGroup();
+
+    @Value.Parameter
+    public abstract Integer timeoutMS();
+
+    @Value.Parameter
+    public abstract Integer messageLimit();
+
+    @Value.Parameter
+    public abstract String dmmaphostName();
+
+    @Value.Parameter
+    public abstract Integer dmmapportNumber();
+
+    @Value.Parameter
+    public abstract String dmmaptopicName();
+
+    @Value.Parameter
+    public abstract String dmmapprotocol();
+
+    @Value.Parameter
+    public abstract String dmmapuserName();
+
+    @Value.Parameter
+    public abstract String dmmapuserPassword();
+
+    @Value.Parameter
+    public abstract String dmmapcontentType();
 }
\ No newline at end of file
index f5749a3..a0f29e4 100644 (file)
  */
 package org.onap.dcaegen2.services.config;
 
+import org.immutables.value.Value;
+
 /**
  * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 3/23/18
  */
-public class DmaapProducerConfiguration extends DmaapConfig {
+@Value.Immutable(prehash = true)
+@Value.Style(stagedBuilder = true)
+public abstract class DmaapProducerConfiguration implements DmaapConfig {
 
     private static final long serialVersionUID = 1L;
 
+    @Value.Parameter
+    public abstract String dmmaphostName();
+
+    @Value.Parameter
+    public abstract Integer dmmapportNumber();
+
+    @Value.Parameter
+    public abstract String dmmaptopicName();
+
+    @Value.Parameter
+    public abstract String dmmapprotocol();
+
+    @Value.Parameter
+    public abstract String dmmapuserName();
+
+    @Value.Parameter
+    public abstract String dmmapuserPassword();
+
+    @Value.Parameter
+    public abstract String dmmapcontentType();
 }