summaryrefslogtreecommitdiffstats
path: root/cmso-sonar/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'cmso-sonar/src/test')
-rw-r--r--cmso-sonar/src/test/java/org/onap/optf/cmso/it/ItFullIntegrationTest.java152
-rw-r--r--cmso-sonar/src/test/resources/integration.properties7
2 files changed, 159 insertions, 0 deletions
diff --git a/cmso-sonar/src/test/java/org/onap/optf/cmso/it/ItFullIntegrationTest.java b/cmso-sonar/src/test/java/org/onap/optf/cmso/it/ItFullIntegrationTest.java
new file mode 100644
index 0000000..aa3779a
--- /dev/null
+++ b/cmso-sonar/src/test/java/org/onap/optf/cmso/it/ItFullIntegrationTest.java
@@ -0,0 +1,152 @@
+/*
+ * ============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.Properties;
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+
+public class ItFullIntegrationTest {
+
+ 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();
+ copyForSonar();
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ if (process.isAlive()) {
+ process.destroyForcibly();
+ }
+ }
+ }
+
+ private void copyForSonar() throws IOException {
+ String[] jacocoFiles = env.getProperty("copy.jacoco.for.sonar").split(",");
+ for (String jacocoFile : jacocoFiles) {
+ String[] parts = jacocoFile.split("\\|");
+ if (parts.length == 2) {
+ File source = new File(parts[0]);
+ File dest = new File(parts[1]);
+ if (source.exists() && source.isFile() && dest.getParentFile().isDirectory()) {
+ Path srcFile = Paths.get(source.getAbsolutePath());
+ Path dstFile = Paths.get(dest.getAbsolutePath());
+ Files.copy(srcFile, dstFile, StandardCopyOption.REPLACE_EXISTING);
+ } else {
+ System.out.println("Skipping " + jacocoFile);
+ }
+ } else {
+ System.out.println("Skipping " + jacocoFile);
+ }
+
+ }
+ }
+
+ 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 dpath = dest.resolve(src.relativize(s));
+ if (Files.isDirectory(s)) {
+ if (!Files.exists(dpath)) {
+ Files.createDirectory(dpath);
+ }
+ return;
+ }
+ Files.copy(s, dpath);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private ProcessBuilder buildCommand() {
+ List<String> command = new ArrayList<>();
+ String basepath = env.getProperty("base.path", "./");
+ command.add("/bin/bash");
+ command.add("-x");
+ command.add(basepath + "ete_test.sh");
+ File workdir = new File(env.getProperty("workdir", "./docker/integration"));
+ ProcessBuilder processBuilder = new ProcessBuilder();
+ processBuilder.directory(workdir);
+ processBuilder.command(command);
+ return processBuilder;
+ }
+}
diff --git a/cmso-sonar/src/test/resources/integration.properties b/cmso-sonar/src/test/resources/integration.properties
new file mode 100644
index 0000000..48957a0
--- /dev/null
+++ b/cmso-sonar/src/test/resources/integration.properties
@@ -0,0 +1,7 @@
+base.path=./
+jacoco.exec.dest=target/code-coverage
+jacoco.exec.classes=target/classes
+source.classes.folders=service|../cmso-service/target/classes,optimizer|../cmso-optimizer/target/classes
+jacoco.exec.source.files=docker/integration/cmso-service/logs/service.jacoco.exec,docker/integration/cmso-optimizer/logs/optimizer.jacoco.exec
+
+copy.jacoco.for.sonar=docker/integration/cmso-service/logs/service.jacoco.exec|../cmso-service/target/jacoco-it.exec,docker/integration/cmso-optimizer/logs/optimizer.jacoco.exec|../cmso-optimizer/target/jacoco-it.exec \ No newline at end of file