<java.version>1.8</java.version>
<eelf.version>1.0.0</eelf.version>
- <pact.version>3.3.9</pact.version>
<spring.version>5.0.10.RELEASE</spring.version>
<spring.boot.version>2.1.3.RELEASE</spring.boot.version>
<swagger.core.version>2.0.0</swagger.core.version>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<build>
<finalName>cmso-optimizer</finalName>
<plugins>
- <plugin>
- <groupId>au.com.dius</groupId>
- <artifactId>pact-jvm-provider-maven_2.11</artifactId>
- <version>${pact.version}</version>
- <configuration>
- <!--pactBrokerUrl,user name,password and project version required only
- for consumer -->
- <pactBrokerUrl>${BROKER_URL}</pactBrokerUrl>
- <pactBrokerUsername>pactadmin</pactBrokerUsername>
- <pactBrokerPassword>pactadmin</pactBrokerPassword>
- <projectVersion>1.0.0</projectVersion>
- <!-- service provider required only for producer -->
- <serviceProviders>
- <serviceProvider>
- <name>core</name>
- <protocol>http</protocol>
- <host>${APP_URL}</host>
- <port>${APP_PORT}</port>
- <path>/</path>
- <pactBroker>
- <url>${BROKER_URL}</url>
- <authentication>
- <username>pactadmin</username>
- <password>pactadmin</password>
- </authentication>
- </pactBroker>
- </serviceProvider>
- </serviceProviders>
- </configuration>
- </plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</execution>
</executions>
</plugin>
- <plugin>
- <artifactId>exec-maven-plugin</artifactId>
- <groupId>org.codehaus.mojo</groupId>
- </plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
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}"
### 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
<skip.staging.artifacts>false</skip.staging.artifacts>\r
\r
</properties>\r
-\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>commons-io</groupId>\r
+ <artifactId>commons-io</artifactId>\r
+ <version>2.6</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>junit</groupId>\r
+ <artifactId>junit</artifactId>\r
+ <version>4.12</version>\r
+ </dependency>\r
+ </dependencies>\r
<build>\r
<plugins>\r
<plugin>\r
<artifactId>jacoco-maven-plugin</artifactId>\r
<executions>\r
<execution>\r
- <id>disable</id>\r
- <phase>none</phase>\r
+ <id>post-integration-test</id>\r
+ <phase>post-integration-test</phase>\r
+ <goals>\r
+ <goal>report</goal>\r
+ </goals>\r
+ <configuration>\r
+ <dataFile>${project.basedir}/target/code-coverage/service.jacoco.exec</dataFile>\r
+ <outputDirectory>${project.basedir}/target/site/jacoco-it</outputDirectory>\r
+ <includes>\r
+ <include>service/**</include>\r
+ </includes>\r
+ <excludes>\r
+ <exclude>**/gen/**</exclude>\r
+ <exclude>**/generated-sources/**</exclude>\r
+ <exclude>**/yang-gen/**</exclude>\r
+ <exclude>**/pax/**</exclude>\r
+ </excludes>\r
+ </configuration>\r
</execution>\r
</executions>\r
</plugin>\r
-\r
</plugins>\r
<finalName>optf-cmso-robot</finalName>\r
</build>\r
*** 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 ***
--- /dev/null
+/*
+ * ============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;
+ }
+}
--- /dev/null
+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
\r
<java.version>1.8</java.version>\r
<eelf.version>1.0.0</eelf.version>\r
- <pact.version>3.3.9</pact.version>\r
<spring.version>5.0.10.RELEASE</spring.version>\r
<spring.boot.version>2.1.3.RELEASE</spring.boot.version>\r
<swagger.core.version>2.0.0</swagger.core.version>\r
<build>\r
<finalName>cmso-service</finalName>\r
<plugins>\r
- <plugin>\r
- <groupId>au.com.dius</groupId>\r
- <artifactId>pact-jvm-provider-maven_2.11</artifactId>\r
- <version>${pact.version}</version>\r
- <configuration>\r
- <!--pactBrokerUrl,user name,password and project version required only \r
- for consumer -->\r
- <pactBrokerUrl>${BROKER_URL}</pactBrokerUrl>\r
- <pactBrokerUsername>pactadmin</pactBrokerUsername>\r
- <pactBrokerPassword>pactadmin</pactBrokerPassword>\r
- <projectVersion>1.0.0</projectVersion>\r
- <!-- service provider required only for producer -->\r
- <serviceProviders>\r
- <serviceProvider>\r
- <name>core</name>\r
- <protocol>http</protocol>\r
- <host>${APP_URL}</host>\r
- <port>${APP_PORT}</port>\r
- <path>/</path>\r
- <pactBroker>\r
- <url>${BROKER_URL}</url>\r
- <authentication>\r
- <username>pactadmin</username>\r
- <password>pactadmin</password>\r
- </authentication>\r
- </pactBroker>\r
- </serviceProvider>\r
- </serviceProviders>\r
- </configuration>\r
- </plugin>\r
<plugin>\r
<artifactId>maven-dependency-plugin</artifactId>\r
</plugin>\r
</execution>\r
</executions>\r
</plugin>\r
- <plugin>\r
- <artifactId>exec-maven-plugin</artifactId>\r
- <groupId>org.codehaus.mojo</groupId>\r
- </plugin>\r
<plugin>\r
<groupId>org.springframework.boot</groupId>\r
<artifactId>spring-boot-maven-plugin</artifactId>\r
<version>1.0.1-SNAPSHOT</version>
</parent>
- <groupId>org.onap.optf.cmso.tcketmgt</groupId>
+ <groupId>org.onap.optf.cmso.ticketmgt</groupId>
<artifactId>cmso-ticketmgt</artifactId>
<packaging>jar</packaging>
<java.version>1.8</java.version>
<eelf.version>1.0.0</eelf.version>
- <pact.version>3.3.9</pact.version>
<spring.version>5.0.10.RELEASE</spring.version>
<spring.boot.version>2.1.0.RELEASE</spring.boot.version>
<swagger.core.version>2.0.0</swagger.core.version>
<build>
<finalName>cmso-ticketmgt</finalName>
<plugins>
- <plugin>
- <groupId>au.com.dius</groupId>
- <artifactId>pact-jvm-provider-maven_2.11</artifactId>
- <version>${pact.version}</version>
- <configuration>
- <!--pactBrokerUrl,user name,password and project version required only
- for consumer -->
- <pactBrokerUrl>${BROKER_URL}</pactBrokerUrl>
- <pactBrokerUsername>pactadmin</pactBrokerUsername>
- <pactBrokerPassword>pactadmin</pactBrokerPassword>
- <projectVersion>1.0.0</projectVersion>
- <!-- service provider required only for producer -->
- <serviceProviders>
- <serviceProvider>
- <name>core</name>
- <protocol>http</protocol>
- <host>${APP_URL}</host>
- <port>${APP_PORT}</port>
- <path>/</path>
- <pactBroker>
- <url>${BROKER_URL}</url>
- <authentication>
- <username>pactadmin</username>
- <password>pactadmin</password>
- </authentication>
- </pactBroker>
- </serviceProvider>
- </serviceProviders>
- </configuration>
- </plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</execution>
</executions>
</plugin>
- <plugin>
- <artifactId>exec-maven-plugin</artifactId>
- <groupId>org.codehaus.mojo</groupId>
- </plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<java.version>1.8</java.version>
<eelf.version>1.0.0</eelf.version>
- <pact.version>3.3.9</pact.version>
<spring.version>5.0.10.RELEASE</spring.version>
<spring.boot.version>2.1.3.RELEASE</spring.boot.version>
<swagger.core.version>2.0.0</swagger.core.version>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<build>
<finalName>cmso-topology</finalName>
<plugins>
- <plugin>
- <groupId>au.com.dius</groupId>
- <artifactId>pact-jvm-provider-maven_2.11</artifactId>
- <version>${pact.version}</version>
- <configuration>
- <!--pactBrokerUrl,user name,password and project version required only
- for consumer -->
- <pactBrokerUrl>${BROKER_URL}</pactBrokerUrl>
- <pactBrokerUsername>pactadmin</pactBrokerUsername>
- <pactBrokerPassword>pactadmin</pactBrokerPassword>
- <projectVersion>1.0.0</projectVersion>
- <!-- service provider required only for producer -->
- <serviceProviders>
- <serviceProvider>
- <name>core</name>
- <protocol>http</protocol>
- <host>${APP_URL}</host>
- <port>${APP_PORT}</port>
- <path>/</path>
- <pactBroker>
- <url>${BROKER_URL}</url>
- <authentication>
- <username>pactadmin</username>
- <password>pactadmin</password>
- </authentication>
- </pactBroker>
- </serviceProvider>
- </serviceProviders>
- </configuration>
- </plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
</execution>
</executions>
</plugin>
- <plugin>
- <artifactId>exec-maven-plugin</artifactId>
- <groupId>org.codehaus.mojo</groupId>
- </plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>