From a3da541f9914a13e644f638f02b4f44b64028332 Mon Sep 17 00:00:00 2001 From: Jerry Flood Date: Fri, 12 Apr 2019 08:23:22 -0400 Subject: Add robot integration test Produce code coverage for cmso-service Clean up poms Issue-ID: OPTFRA-474 Change-Id: I46a24d99413b5d30387f93c558a7d675410a1064 Signed-off-by: Jerry Flood --- cmso-optimizer/pom.xml | 39 ------ .../cmso-service/etc/startJacocoService.sh | 2 +- cmso-robot/docker/cmso-service/ete_test.sh | 18 ++- cmso-robot/pom.xml | 34 +++++- .../robot/testsuites/AAAwait_for_server.robot | 2 +- .../onap/optf/cmso/it/IT_FullIntegrationTest.java | 131 +++++++++++++++++++++ .../src/test/resources/integration.properties | 5 + cmso-service/pom.xml | 35 ------ cmso-ticketmgt/pom.xml | 37 +----- cmso-topology/pom.xml | 39 ------ 10 files changed, 182 insertions(+), 160 deletions(-) create mode 100644 cmso-robot/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java create mode 100644 cmso-robot/src/test/resources/integration.properties diff --git a/cmso-optimizer/pom.xml b/cmso-optimizer/pom.xml index fa27b8e..80a7805 100644 --- a/cmso-optimizer/pom.xml +++ b/cmso-optimizer/pom.xml @@ -42,7 +42,6 @@ 1.8 1.0.0 - 3.3.9 5.0.10.RELEASE 2.1.3.RELEASE 2.0.0 @@ -158,10 +157,6 @@ org.springframework spring-beans - - org.springframework - spring-beans - org.springframework spring-context @@ -283,36 +278,6 @@ cmso-optimizer - - au.com.dius - pact-jvm-provider-maven_2.11 - ${pact.version} - - - ${BROKER_URL} - pactadmin - pactadmin - 1.0.0 - - - - core - http - ${APP_URL} - ${APP_PORT} - / - - ${BROKER_URL} - - pactadmin - pactadmin - - - - - - maven-dependency-plugin @@ -360,10 +325,6 @@ - - exec-maven-plugin - org.codehaus.mojo - org.springframework.boot spring-boot-maven-plugin diff --git a/cmso-robot/docker/cmso-service/cmso-service/etc/startJacocoService.sh b/cmso-robot/docker/cmso-service/cmso-service/etc/startJacocoService.sh index 0db6f1f..5d65a7f 100644 --- a/cmso-robot/docker/cmso-service/cmso-service/etc/startJacocoService.sh +++ b/cmso-robot/docker/cmso-service/cmso-service/etc/startJacocoService.sh @@ -7,7 +7,7 @@ unzip org.jacoco.agent-0.8.2.jar cp org.jacoco.agent-0.8.2/jacocoagent.jar . ls -l -VM_ARGS="${VM_ARGS} -javaagent:./jacocoagent.jar=destfile=/share/logs/jacoco.exec,dumponexit=true,jmx=true,append=true,output=file,includes=org.onap.optf.cmso.*" +VM_ARGS="${VM_ARGS} -javaagent:./jacocoagent.jar=destfile=/share/logs/service.jacoco.exec,dumponexit=true,jmx=true,append=true,output=file,includes=org.onap.*" echo "VM_ARGS=${VM_ARGS}" diff --git a/cmso-robot/docker/cmso-service/ete_test.sh b/cmso-robot/docker/cmso-service/ete_test.sh index cd77ba5..fce07eb 100755 --- a/cmso-robot/docker/cmso-service/ete_test.sh +++ b/cmso-robot/docker/cmso-service/ete_test.sh @@ -3,23 +3,31 @@ docker-compose up >up.txt 2>&1 & ### Wait for robot to finish sleep 60 -docker exec -it cmso-service_cmso-robot_1 ls +docker exec cmso-service_cmso-robot_1 ls while [ $? -ne 1 ]; do sleep 60 - docker exec -it cmso-service_cmso-robot_1 ls + docker exec cmso-service_cmso-robot_1 ls done ### Shut down java with to give time to write the jacoco_exec file docker exec cmso-service_cmso-service_1 pkill java +docker exec cmso-service_cmso-optimizer_1 pkill java sleep 10 -### wait for cmso-service container to exit -docker exec -it cmso-service_cmso-service_1 ls +### wait for cmso containers to exit and jacoco files written +docker exec cmso-service_cmso-service_1 ls while [ $? -ne 1 ]; do sleep 60 - docker exec -it cmso-service_cmso-service_1 ls + docker exec cmso-service_cmso-service_1 ls done +docker exec cmso-service_cmso-optimizer_1 ls +while [ $? -ne 1 ]; do + sleep 60 + docker exec cmso-service_cmso-optimizer_1 ls +done + + docker ps -a docker-compose down docker ps -a diff --git a/cmso-robot/pom.xml b/cmso-robot/pom.xml index 37ae95b..89c6019 100644 --- a/cmso-robot/pom.xml +++ b/cmso-robot/pom.xml @@ -57,7 +57,18 @@ false - + + + commons-io + commons-io + 2.6 + + + junit + junit + 4.12 + + @@ -130,12 +141,27 @@ jacoco-maven-plugin - disable - none + post-integration-test + post-integration-test + + report + + + ${project.basedir}/target/code-coverage/service.jacoco.exec + ${project.basedir}/target/site/jacoco-it + + service/** + + + **/gen/** + **/generated-sources/** + **/yang-gen/** + **/pax/** + + - optf-cmso-robot diff --git a/cmso-robot/robot/testsuites/AAAwait_for_server.robot b/cmso-robot/robot/testsuites/AAAwait_for_server.robot index 7794602..537035a 100644 --- a/cmso-robot/robot/testsuites/AAAwait_for_server.robot +++ b/cmso-robot/robot/testsuites/AAAwait_for_server.robot @@ -9,7 +9,7 @@ Resource ../resources/scheduler_common.robot *** Test Cases *** Wait For Healthy CMSO - [Tags] ete + [Tags] ete opt_validation Wait Until Keyword Succeeds ${CMSO_STARTUP_WAIT_TIME} 30s CMSO Health Check *** Keywords *** diff --git a/cmso-robot/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java b/cmso-robot/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java new file mode 100644 index 0000000..53aa8d6 --- /dev/null +++ b/cmso-robot/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java @@ -0,0 +1,131 @@ +/* + * ============LICENSE_START============================================== Copyright (c) 2019 AT&T + * Intellectual Property. ======================================================================= + * 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.optf.cmso.it; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import org.apache.commons.io.IOUtils; +import org.junit.Test; + +public class IT_FullIntegrationTest { + + private Properties env = new Properties(); + + @Test + public void runTest() throws IOException { + InputStream is = new FileInputStream(new File("src/test/resources/integration.properties")); + env.load(is); + Process process = null; + try { + ProcessBuilder processBuilder = buildCommand(); + process = processBuilder.start(); + // debug.debug("engine command=" + commandString); + String stdout = IOUtils.toString(process.getInputStream(), "UTF-8"); + String stderr = IOUtils.toString(process.getErrorStream(), "UTF-8"); + System.out.println("stdout=" + stdout); + System.out.println("stderr=" + stderr); + copyJacocoFiles(); + copyClassFiles(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (process.isAlive()) { + process.destroyForcibly(); + } + } + } + + private void copyClassFiles() throws IOException { + File dest = new File(env.getProperty("jacoco.exec.classes")); + dest.mkdirs(); + if (dest.isDirectory()) { + + String[] sourceFolders = env.getProperty("source.classes.folders").split(","); + for (String source : sourceFolders) { + String[] parts = source.split("\\|"); + if (parts.length == 2) { + Path destPath = Paths.get(dest.getAbsolutePath(), parts[0]); + destPath.toFile().mkdirs(); + File sourceFolder = new File(parts[1]); + if (sourceFolder.exists() && sourceFolder.isDirectory()) { + Path srcPath = Paths.get(sourceFolder.getAbsolutePath()); + copyFolder(srcPath, destPath); + } + } + } + } + } + + private void copyJacocoFiles() throws IOException { + File dest = new File(env.getProperty("jacoco.exec.dest")); + dest.mkdirs(); + if (dest.isDirectory()) { + + String[] sourceFiles = env.getProperty("jacoco.exec.source.files").split(","); + for (String source : sourceFiles) { + File sourceFile = new File(source); + if (sourceFile.exists()) { + Path destPath = Paths.get(dest.getAbsolutePath(), sourceFile.getName()); + Path srcPath = Paths.get(sourceFile.getAbsolutePath()); + Files.copy(srcPath, destPath, StandardCopyOption.REPLACE_EXISTING); + } + } + } + } + + private static void copyFolder(Path src, Path dest) { + try { + Files.walk(src).forEach(s -> { + try { + Path d = dest.resolve(src.relativize(s)); + if (Files.isDirectory(s)) { + if (!Files.exists(d)) + Files.createDirectory(d); + return; + } + Files.copy(s, d); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + + private ProcessBuilder buildCommand() { + ProcessBuilder processBuilder = new ProcessBuilder(); + List command = new ArrayList<>(); + String basepath = env.getProperty("base.path", "./"); + File workdir = new File(basepath + "docker/cmso-service"); + command.add("/bin/bash"); + command.add("-x"); + command.add(basepath + "ete_test.sh"); + Map environment = processBuilder.environment(); + processBuilder.directory(workdir); + processBuilder.command(command); + return processBuilder; + } +} diff --git a/cmso-robot/src/test/resources/integration.properties b/cmso-robot/src/test/resources/integration.properties new file mode 100644 index 0000000..8fcc7b5 --- /dev/null +++ b/cmso-robot/src/test/resources/integration.properties @@ -0,0 +1,5 @@ +base.path=./ +jacoco.exec.dest=target/code-coverage +jacoco.exec.classes=target/classes +source.classes.folders=service|../cmso-service/target/classes +jacoco.exec.source.files=docker/cmso-service/cmso-service/logs/service.jacoco.exec \ No newline at end of file diff --git a/cmso-service/pom.xml b/cmso-service/pom.xml index 4081cc3..f4539af 100644 --- a/cmso-service/pom.xml +++ b/cmso-service/pom.xml @@ -53,7 +53,6 @@ 1.8 1.0.0 - 3.3.9 5.0.10.RELEASE 2.1.3.RELEASE 2.0.0 @@ -288,36 +287,6 @@ cmso-service - - au.com.dius - pact-jvm-provider-maven_2.11 - ${pact.version} - - - ${BROKER_URL} - pactadmin - pactadmin - 1.0.0 - - - - core - http - ${APP_URL} - ${APP_PORT} - / - - ${BROKER_URL} - - pactadmin - pactadmin - - - - - - maven-dependency-plugin @@ -365,10 +334,6 @@ - - exec-maven-plugin - org.codehaus.mojo - org.springframework.boot spring-boot-maven-plugin diff --git a/cmso-ticketmgt/pom.xml b/cmso-ticketmgt/pom.xml index 1274360..44b75fc 100644 --- a/cmso-ticketmgt/pom.xml +++ b/cmso-ticketmgt/pom.xml @@ -22,7 +22,7 @@ 1.0.1-SNAPSHOT - org.onap.optf.cmso.tcketmgt + org.onap.optf.cmso.ticketmgt cmso-ticketmgt jar @@ -42,7 +42,6 @@ 1.8 1.0.0 - 3.3.9 5.0.10.RELEASE 2.1.0.RELEASE 2.0.0 @@ -272,36 +271,6 @@ cmso-ticketmgt - - au.com.dius - pact-jvm-provider-maven_2.11 - ${pact.version} - - - ${BROKER_URL} - pactadmin - pactadmin - 1.0.0 - - - - core - http - ${APP_URL} - ${APP_PORT} - / - - ${BROKER_URL} - - pactadmin - pactadmin - - - - - - maven-dependency-plugin @@ -349,10 +318,6 @@ - - exec-maven-plugin - org.codehaus.mojo - org.springframework.boot spring-boot-maven-plugin diff --git a/cmso-topology/pom.xml b/cmso-topology/pom.xml index 553fe91..388016d 100644 --- a/cmso-topology/pom.xml +++ b/cmso-topology/pom.xml @@ -42,7 +42,6 @@ 1.8 1.0.0 - 3.3.9 5.0.10.RELEASE 2.1.3.RELEASE 2.0.0 @@ -149,10 +148,6 @@ org.springframework spring-beans - - org.springframework - spring-beans - org.springframework spring-context @@ -268,36 +263,6 @@ cmso-topology - - au.com.dius - pact-jvm-provider-maven_2.11 - ${pact.version} - - - ${BROKER_URL} - pactadmin - pactadmin - 1.0.0 - - - - core - http - ${APP_URL} - ${APP_PORT} - / - - ${BROKER_URL} - - pactadmin - pactadmin - - - - - - maven-dependency-plugin @@ -345,10 +310,6 @@ - - exec-maven-plugin - org.codehaus.mojo - org.springframework.boot spring-boot-maven-plugin -- cgit 1.2.3-korg