1 package org.openecomp.sdc.healing.healers.util;
3 import org.junit.Assert;
4 import org.openecomp.core.utilities.json.JsonUtil;
5 import org.openecomp.sdc.logging.api.Logger;
6 import org.openecomp.sdc.logging.api.LoggerFactory;
7 import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel;
8 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
9 import org.openecomp.sdc.tosca.services.ToscaExtensionYamlUtil;
10 import org.openecomp.sdc.tosca.services.ToscaUtil;
13 import java.io.FileInputStream;
14 import java.io.FileNotFoundException;
15 import java.io.IOException;
16 import java.io.InputStream;
18 import java.nio.file.NotDirectoryException;
19 import java.util.Collection;
20 import java.util.HashMap;
23 public class TestUtil {
24 private final static Logger log = (Logger) LoggerFactory.getLogger
25 (TestUtil.class.getName());
27 public static ToscaServiceModel loadToscaServiceModel(String serviceTemplatesPath,
28 String globalServiceTemplatesPath,
29 String entryDefinitionServiceTemplate)
31 ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil();
32 Map<String, ServiceTemplate> serviceTemplates = new HashMap<>();
33 if (entryDefinitionServiceTemplate == null) {
34 entryDefinitionServiceTemplate = "MainServiceTemplate.yaml";
37 loadServiceTemplates(serviceTemplatesPath, toscaExtensionYamlUtil, serviceTemplates);
38 if (globalServiceTemplatesPath != null) {
39 loadServiceTemplates(globalServiceTemplatesPath, toscaExtensionYamlUtil, serviceTemplates);
42 return new ToscaServiceModel(null, serviceTemplates, entryDefinitionServiceTemplate);
45 private static void loadServiceTemplates(String serviceTemplatesPath,
46 ToscaExtensionYamlUtil toscaExtensionYamlUtil,
47 Map<String, ServiceTemplate> serviceTemplates)
49 URL urlFile = TestUtil.class.getResource(serviceTemplatesPath);
50 if (urlFile != null) {
51 File pathFile = new File(urlFile.getFile());
52 Collection<File> files = org.apache.commons.io.FileUtils.listFiles(pathFile, null, true);
54 addServiceTemplateFiles(serviceTemplates, files, toscaExtensionYamlUtil);
56 throw new NotDirectoryException(serviceTemplatesPath);
59 throw new NotDirectoryException(serviceTemplatesPath);
63 private static void addServiceTemplateFiles(Map<String, ServiceTemplate> serviceTemplates,
64 Collection<File> files,
65 ToscaExtensionYamlUtil toscaExtensionYamlUtil)
67 for (File file : files) {
68 try (InputStream yamlFile = new FileInputStream(file)) {
69 ServiceTemplate serviceTemplateFromYaml =
70 toscaExtensionYamlUtil.yamlToObject(yamlFile, ServiceTemplate.class);
71 serviceTemplates.put(ToscaUtil.getServiceTemplateFileName(serviceTemplateFromYaml), serviceTemplateFromYaml);
74 } catch (IOException ignore) {
77 } catch (FileNotFoundException exception) {
79 } catch (IOException exception) {
85 public static void compareToscaServiceModels(String expectedServiceModelPath,
86 ToscaServiceModel actualServiceModel)
88 ToscaServiceModel expectedServiceModel =
89 loadToscaServiceModel(expectedServiceModelPath, null, null);
91 Map<String, ServiceTemplate> expectedServiceTemplates =
92 new HashMap<>(expectedServiceModel.getServiceTemplates());
93 Map<String, ServiceTemplate> actualServiceTemplates =
94 new HashMap<>(actualServiceModel.getServiceTemplates());
96 for (Map.Entry<String, ServiceTemplate> expectedServiceTemplateEntry : expectedServiceTemplates.entrySet()) {
97 String serviceTemplateName = expectedServiceTemplateEntry.getKey();
98 ServiceTemplate actualServiceTemplate =
99 actualServiceTemplates.get(serviceTemplateName);
101 Assert.assertNotNull("Missing service template in service model : " + serviceTemplateName, actualServiceTemplate);
102 org.junit.Assert.assertEquals("Difference in file " + serviceTemplateName,
103 JsonUtil.object2Json(expectedServiceTemplateEntry.getValue()),
104 JsonUtil.object2Json(actualServiceTemplate));