aboutsummaryrefslogtreecommitdiffstats
path: root/cmso-robot
diff options
context:
space:
mode:
authorJerry Flood <jflood@att.com>2019-04-12 08:23:22 -0400
committerJerry Flood <jflood@att.com>2019-04-15 06:51:58 -0400
commita3da541f9914a13e644f638f02b4f44b64028332 (patch)
tree6e1bc218c4c2aab1743c97dea61edda78b6ad46c /cmso-robot
parent9c23f5162c9cde34e69f0caa49ae154aeec9ec83 (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')
-rw-r--r--cmso-robot/docker/cmso-service/cmso-service/etc/startJacocoService.sh2
-rwxr-xr-xcmso-robot/docker/cmso-service/ete_test.sh18
-rw-r--r--cmso-robot/pom.xml34
-rw-r--r--cmso-robot/robot/testsuites/AAAwait_for_server.robot2
-rw-r--r--cmso-robot/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java131
-rw-r--r--cmso-robot/src/test/resources/integration.properties5
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