1 package org.openecomp.sdc.heat.services.tree;
3 import org.junit.Assert;
5 import org.openecomp.core.utilities.file.FileUtils;
6 import org.openecomp.core.utilities.json.JsonUtil;
7 import org.openecomp.sdc.heat.datatypes.structure.HeatStructureTree;
10 import java.io.FileInputStream;
11 import java.io.IOException;
12 import java.util.regex.Pattern;
14 public class ToscaTreeManagerTest {
15 private static final String BASE_DIR = "/mock/toscaTree/";
16 private static final String IN = "in";
17 private static final String OUT = "out";
18 private static final String EXPECTED_TREE_FILE = "/expectedTree.json";
19 private ToscaTreeManager toscaTreeManager = new ToscaTreeManager();
22 public void testTreeWithDiffFileNames() throws IOException {
23 String inputDirectory = BASE_DIR + "diffFileNames/" + IN;
24 String outputFileName = BASE_DIR + "diffFileNames/" + OUT + EXPECTED_TREE_FILE;
26 testTreeManager(inputDirectory, outputFileName);
30 public void testDirectoriesWithSimilarNameUnderDifferentRoots() throws IOException {
31 String inputDirectory = BASE_DIR + "similarDirectoryName/" + IN;
32 String outputFileName = BASE_DIR + "similarDirectoryName/" + OUT + EXPECTED_TREE_FILE;
34 testTreeManager(inputDirectory, outputFileName);
38 public void testTwoFilesUnderSameDirectory() throws IOException {
39 String inputDirectory = BASE_DIR + "twoFilesUnderSameDirectory/" + IN;
40 String outputFileName = BASE_DIR + "twoFilesUnderSameDirectory/" + OUT + EXPECTED_TREE_FILE;
42 testTreeManager(inputDirectory, outputFileName);
45 private void testTreeManager(String inputDirectory, String outputFileName) throws IOException {
46 initTreeManager(inputDirectory);
47 toscaTreeManager.createTree();
48 HeatStructureTree tree = toscaTreeManager.getTree();
50 validateToscaTree(outputFileName, tree);
53 private void validateToscaTree(String outputFileName, HeatStructureTree tree) throws IOException {
54 String actualTree = JsonUtil.object2Json(tree);
55 File expectedTreeFile = new File(this.getClass().getResource(outputFileName).getFile());
58 try(FileInputStream fis = new FileInputStream(expectedTreeFile)) {
59 expectedTree = new String(FileUtils.toByteArray(fis));
61 Assert.assertNotNull(expectedTree);
62 expectedTree = expectedTree.trim().replace("\r", "");
63 Assert.assertEquals(expectedTree, actualTree);
66 private void initTreeManager(String inputDir) throws IOException {
67 String fileName = inputDir.replace("/", File.separator);
68 File directory = new File(this.getClass().getResource(inputDir).getFile());
70 addFilesToTreeManager(fileName, directory.listFiles());
73 private void addFilesToTreeManager(String baseDir, File[] listFiles) throws IOException {
74 for (File file : listFiles) {
75 if (file.isDirectory()) {
76 addFilesToTreeManager(baseDir, file.listFiles());
78 toscaTreeManager.addFile(getFileNameWithoutTestDirectory(baseDir, file.getPath()), new byte[2]);
83 private String getFileNameWithoutTestDirectory(String baseDir, String fileName) {
84 return fileName.split(Pattern.quote(baseDir) + Pattern.quote(File.separator))[1];