diff options
author | Jerry Flood <jflood@att.com> | 2019-04-12 08:23:22 -0400 |
---|---|---|
committer | Jerry Flood <jflood@att.com> | 2019-04-15 06:51:58 -0400 |
commit | a3da541f9914a13e644f638f02b4f44b64028332 (patch) | |
tree | 6e1bc218c4c2aab1743c97dea61edda78b6ad46c /cmso-robot | |
parent | 9c23f5162c9cde34e69f0caa49ae154aeec9ec83 (diff) |
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 <jflood@att.com>
Diffstat (limited to 'cmso-robot')
6 files changed, 181 insertions, 11 deletions
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 @@ <skip.staging.artifacts>false</skip.staging.artifacts>
</properties>
-
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.6</version>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ </dependencies>
<build>
<plugins>
<plugin>
@@ -130,12 +141,27 @@ <artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
- <id>disable</id>
- <phase>none</phase>
+ <id>post-integration-test</id>
+ <phase>post-integration-test</phase>
+ <goals>
+ <goal>report</goal>
+ </goals>
+ <configuration>
+ <dataFile>${project.basedir}/target/code-coverage/service.jacoco.exec</dataFile>
+ <outputDirectory>${project.basedir}/target/site/jacoco-it</outputDirectory>
+ <includes>
+ <include>service/**</include>
+ </includes>
+ <excludes>
+ <exclude>**/gen/**</exclude>
+ <exclude>**/generated-sources/**</exclude>
+ <exclude>**/yang-gen/**</exclude>
+ <exclude>**/pax/**</exclude>
+ </excludes>
+ </configuration>
</execution>
</executions>
</plugin>
-
</plugins>
<finalName>optf-cmso-robot</finalName>
</build>
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<String> 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<String, String> 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 |