add tosca parser verification step
[sdc.git] / test-apis-ci / src / main / java / org / openecomp / sdc / ci / tests / utils / CsarToscaTester.java
1 package org.openecomp.sdc.ci.tests.utils;
2
3 import org.openecomp.sdc.tosca.parser.api.ISdcCsarHelper;
4 import org.openecomp.sdc.tosca.parser.exceptions.SdcToscaParserException;
5 import org.openecomp.sdc.tosca.parser.impl.SdcToscaParserFactory;
6 import org.openecomp.sdc.tosca.parser.impl.SdcTypes;
7 import org.openecomp.sdc.toscaparser.api.Group;
8 import org.openecomp.sdc.toscaparser.api.NodeTemplate;
9 import org.openecomp.sdc.toscaparser.api.elements.Metadata;
10 import org.openecomp.sdc.toscaparser.api.parameters.Input;
11 import org.openecomp.sdc.toscaparser.api.utils.ThreadLocalsHolder;
12
13 import java.io.File;
14 import java.io.FileWriter;
15 import java.io.IOException;
16 import java.text.SimpleDateFormat;
17 import java.util.Arrays;
18 import java.util.Date;
19 import java.util.List;
20 import java.util.Map;
21
22 public class CsarToscaTester {
23         public static void main(String[] args) throws Exception {
24                 System.out.println("CsarToscaParser - path to CSAR's Directory is " + Arrays.toString(args));
25                 SdcToscaParserFactory factory = SdcToscaParserFactory.getInstance();
26
27                 File folder = new File(args[0]);
28                 File[] listOfFiles = folder.listFiles();
29                 Date now = new Date();
30                 SimpleDateFormat dateFormat = new SimpleDateFormat("d-MM-y-HH_mm_ss");
31                 String time = dateFormat.format(now);
32                 String csarsDir = args[1] + "/csar-reports-" + time;
33                 File dir = new File(csarsDir);
34                 dir.mkdir();
35
36
37                 for (File file : listOfFiles) {
38                         if (file.isFile()) {  
39                                 System.out.println("File  " + file.getAbsolutePath());
40                                 String name = file.getName();
41                                 String currentCsarDir = csarsDir+"/"+name+"-"+time;
42                                 dir = new File(currentCsarDir);
43                                 dir.mkdir();
44                                 try {
45                                         processCsar(factory, file);
46                                 } catch (SdcToscaParserException e){
47                                         System.out.println("SdcToscaParserException caught. Code: "+e.getCode()+", message: "+ e.getMessage());
48                                 }
49                                 List<String> notAnalyzedReport = ThreadLocalsHolder.getCollector().getNotAnalyzedExceptionsReport();
50                                 System.out.println("NOT ANALYZED during CSAR parsing are: " + (notAnalyzedReport != null ? notAnalyzedReport.toString() : "none"));
51                                 List<String> warningsReport = ThreadLocalsHolder.getCollector().getWarningsReport();
52                                 //System.out.println("WARNINGS during CSAR parsing are: " + (warningsReport != null ? warningsReport.toString() : "none"));
53                                 List<String> criticalsReport = ThreadLocalsHolder.getCollector().getCriticalsReport();
54                                 System.out.println("CRITICALS during CSAR parsing are: " + (criticalsReport != null ? criticalsReport.toString() : "none"));
55
56                                 try {
57                                         generateReport(time, name, currentCsarDir, criticalsReport, "critical");
58                                         generateReport(time, name, currentCsarDir, warningsReport, "warning");
59                                         generateReport(time, name, currentCsarDir, notAnalyzedReport, "notAnalyzed");
60
61                                 } catch (IOException ex) {
62                                         ex.printStackTrace();
63                                 }
64                         }
65
66                 }               
67         }
68
69         public static void processCsar(SdcToscaParserFactory factory, File file) throws SdcToscaParserException {
70                 ISdcCsarHelper sdcCsarHelper = factory.getSdcCsarHelper(file.getAbsolutePath());
71                 processCsarImpl(sdcCsarHelper);
72                 
73         }
74
75         public static void processCsar(ISdcCsarHelper sdcCsarHelper) throws SdcToscaParserException {
76                 processCsarImpl(sdcCsarHelper);
77
78         }
79
80         private static void processCsarImpl(ISdcCsarHelper sdcCsarHelper) {
81
82                 //Service level
83                 System.out.println("Invoking sdc-tosca methods on this CSAR....");
84                 String conformanceLevel = sdcCsarHelper.getConformanceLevel();
85                 System.out.println("getConformanceLevel() - conformance level is "+conformanceLevel);
86                 String serviceSubstitutionMappingsTypeName = sdcCsarHelper.getServiceSubstitutionMappingsTypeName();
87                 System.out.println("serviceSubstitutionMappingsTypeName() - subst mappings type of service is "+serviceSubstitutionMappingsTypeName);
88                 List<Input> serviceInputs = sdcCsarHelper.getServiceInputs();
89                 System.out.println("getServiceInputs() - service inputs are "+serviceInputs);
90                 Metadata serviceMetadata = sdcCsarHelper.getServiceMetadata();
91                 System.out.println("getServiceMetadata() - service metadata is "+serviceMetadata);
92                 Map<String, Object> serviceMetadataProperties = sdcCsarHelper.getServiceMetadataProperties();
93                 System.out.println("getServiceMetadataProperties() - service metadata properties is "+serviceMetadataProperties);
94                 List<NodeTemplate> allottedResources = sdcCsarHelper.getAllottedResources();
95                 System.out.println("getAllottedResources() - service allotted resources are "+allottedResources);
96                 List<NodeTemplate> serviceVfList = sdcCsarHelper.getServiceVfList();
97                 System.out.println("getServiceVfList() - VF list is "+serviceVfList);
98                 List<NodeTemplate> serviceNodeTemplateBySdcType = sdcCsarHelper.getServiceNodeTemplateBySdcType(SdcTypes.VF);
99                 System.out.println("getServiceNodeTemplateBySdcType() - VF list is "+serviceNodeTemplateBySdcType);
100                 List<NodeTemplate> serviceNodeTemplates = sdcCsarHelper.getServiceNodeTemplates();
101                 System.out.println("getServiceNodeTemplates() - all node templates list of service is "+serviceNodeTemplates);
102
103                 serviceVfList.forEach(x -> {
104                         String nodeTemplateCustomizationUuid = sdcCsarHelper.getNodeTemplateCustomizationUuid(x);
105                         System.out.println("getNodeTemplateCustomizationUuid() - VF ID is "+nodeTemplateCustomizationUuid);
106                         String typeOfNodeTemplate = sdcCsarHelper.getTypeOfNodeTemplate(x);
107                         System.out.println("getTypeOfNodeTemplate() - VF tosca type is "+typeOfNodeTemplate);
108                         List<Group> vfModulesByVf = sdcCsarHelper.getVfModulesByVf(nodeTemplateCustomizationUuid);
109                         System.out.println("getVfModulesByVf() - VF modules list is "+vfModulesByVf);
110                         vfModulesByVf.forEach(y -> {
111                                 List<NodeTemplate> membersOfVfModule = sdcCsarHelper.getMembersOfVfModule(x, y);
112                                 System.out.println("getMembersOfVfModule() - members of VfModule are "+membersOfVfModule);
113                         });
114                         List<NodeTemplate> vfcListByVf = sdcCsarHelper.getVfcListByVf(nodeTemplateCustomizationUuid);
115                         System.out.println("getVfcListByVf() - VFC list is "+vfcListByVf);
116                         vfcListByVf.forEach(z -> {
117                                 List<NodeTemplate> nodeTemplateBySdcType = sdcCsarHelper.getNodeTemplateBySdcType(z, SdcTypes.CP);
118                                 System.out.println("getNodeTemplateBySdcType() - CP children node templates of this VFC are "+nodeTemplateBySdcType);
119                                 Map<String, Map<String, Object>> cpPropertiesFromVfcAsObject = sdcCsarHelper.getCpPropertiesFromVfcAsObject(z);
120                                 System.out.println("getCpPropertiesFromVfcAsObject() - consolidated CP properties for this VFC are "+cpPropertiesFromVfcAsObject);
121                                 boolean hasTopology = sdcCsarHelper.hasTopology(z);
122                                 System.out.println("hasTopology() - this VFC is "+(hasTopology ? "nested" : "not nested"));
123                         });
124                 });
125         }
126
127         private static void generateReport(String time, String name, String currentCsarDir, List<String> criticalsReport, String type)
128                         throws IOException {
129                 FileWriter fw;
130                 fw = new FileWriter(new File(currentCsarDir + "/" + criticalsReport.size() + "-"+type+"-" + name +"-"+time + ".txt"));
131                 for (String exception : criticalsReport) {
132                         fw.write(exception);
133                         fw.write("\r\n");
134                 }
135                 fw.close();
136         }
137 }