diff options
author | Jerry Flood <jflood@att.com> | 2019-04-17 14:54:16 -0400 |
---|---|---|
committer | Jerry Flood <jflood@att.com> | 2019-04-17 14:54:27 -0400 |
commit | f51670bdc0a71789176ef7b29c8fb72d0c3e43d5 (patch) | |
tree | 981b74f53f647410871fae8bba94275d1eee2224 /cmso-sonar/src/test | |
parent | 52383d23af47d2c27121486d38d5728b90263e18 (diff) |
Add cmso-sonar to generate jacoco files
Issue-ID: OPTFRA-474
Change-Id: I0a1cd03708fda09255ada655df727acfa7498d09
Signed-off-by: Jerry Flood <jflood@att.com>
Diffstat (limited to 'cmso-sonar/src/test')
-rw-r--r-- | cmso-sonar/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java | 131 | ||||
-rw-r--r-- | cmso-sonar/src/test/resources/integration.properties | 5 |
2 files changed, 136 insertions, 0 deletions
diff --git a/cmso-sonar/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java b/cmso-sonar/src/test/java/org/onap/optf/cmso/it/IT_FullIntegrationTest.java new file mode 100644 index 0000000..d90d85d --- /dev/null +++ b/cmso-sonar/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(env.getProperty("workdir", "./docker/integration")); + 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-sonar/src/test/resources/integration.properties b/cmso-sonar/src/test/resources/integration.properties new file mode 100644 index 0000000..7d2f84c --- /dev/null +++ b/cmso-sonar/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,optimizer +jacoco.exec.source.files=docker/integration/cmso-service/logs/service.jacoco.exec,docker/integration/cmso-service/logs/optimizer.jacoco.exec
\ No newline at end of file |