Catalog alignment
[sdc.git] / asdctool / src / test / java / org / openecomp / sdc / asdctool / impl / validator / utils / ReportManagerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (c) 2019 Samsung
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.openecomp.sdc.asdctool.impl.validator.utils;
23
24 import org.junit.After;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.Mock;
29 import org.mockito.junit.MockitoJUnitRunner;
30 import org.openecomp.sdc.asdctool.impl.validator.config.ValidationConfigManager;
31 import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
32 import org.powermock.core.classloader.annotations.PrepareForTest;
33 import org.powermock.modules.junit4.PowerMockRunner;
34 import org.powermock.modules.junit4.PowerMockRunnerDelegate;
35
36 import java.io.File;
37 import java.util.Arrays;
38 import java.util.List;
39 import java.util.Objects;
40 import java.util.SortedSet;
41 import java.util.TreeSet;
42
43 import static org.junit.Assert.assertEquals;
44 import static org.junit.Assert.assertNotNull;
45 import static org.mockito.Mockito.when;
46
47 @RunWith(PowerMockRunner.class)
48 @PowerMockRunnerDelegate(MockitoJUnitRunner.class)
49 @PrepareForTest({ReportManager.class})
50 public class ReportManagerTest {
51
52     private static final String VERTEX_1_ID = "testID1";
53     private static final String TASK_1_FAILED_NAME = "testFailedTask1";
54     private static final String TASK_1_NAME = "testTask1";
55     private static final String VERTEX_2_ID = "testID2";
56     private static final String TASK_2_NAME = "testTask2";
57     private static final String TASK_2_FAILED_NAME = "testFailedTask2";
58     private static final String UNIQUE_ID = "uniqueID";
59     private static final String DUMMY_MESSAGE = "dummyMessage";
60     private static final String VALIDATOR_NAME = "testValidatorNamed";
61     private static final int COMPONENT_SUM = 0;
62
63     private static final String EXPECTED_CSV_HEADER =
64         "Vertex ID,Task Name,Success,Result Details,Result Description";
65     private static final String EXPECTED_OUTPUT_FILE_HEADER =
66         "-----------------------Validation Tool Results:-------------------------";
67     private static final String EXPECTED_OUTPUT_FILE_SUMMARY =
68         "-----------------------------------Validator Tool Summary-----------------------------------";
69
70     private final SortedSet<String> failedTasksNames =
71         new TreeSet<>(Arrays.asList(TASK_1_FAILED_NAME, TASK_2_FAILED_NAME));
72     private final SortedSet<String> successTasksNames =
73         new TreeSet<>(Arrays.asList(TASK_1_NAME, TASK_2_NAME));
74
75     private VertexResult successResult = new VertexResult();
76
77     @Mock
78     GraphVertex vertexScanned;
79
80         @Before
81     public void setup() {
82         String resourcePath = new File(Objects
83             .requireNonNull(ReportManagerTest.class.getClassLoader().getResource("")).getFile())
84                 .getAbsolutePath();
85         ValidationConfigManager.setOutputFullFilePath(resourcePath);
86         ValidationConfigManager.setCsvReportFilePath(resourcePath);
87         new ReportManager();
88
89         successResult.setStatus(true);
90     }
91
92     @After
93     public void clean() {
94         ReportManagerHelper.cleanReports();
95     }
96
97     @Test
98     public void testReportTaskEnd() {
99         // when
100         ReportManager.reportTaskEnd(VERTEX_1_ID, TASK_1_NAME, successResult);
101         ReportManager.reportTaskEnd(VERTEX_2_ID, TASK_2_NAME, successResult);
102         ReportManager.printAllResults();
103
104         List reportCsvFile = ReportManagerHelper.getReportCsvFileAsList();
105
106         // then
107         assertNotNull(reportCsvFile);
108         assertEquals(EXPECTED_CSV_HEADER, reportCsvFile.get(0));
109         assertEquals(getCsvExpectedResult(VERTEX_1_ID, TASK_1_NAME), reportCsvFile.get(1));
110         assertEquals(getCsvExpectedResult(VERTEX_2_ID, TASK_2_NAME), reportCsvFile.get(2));
111     }
112
113     @Test
114     public void testAddFailedVertex() {
115         // when
116         ReportManager.addFailedVertex(TASK_1_NAME, VERTEX_1_ID);
117         ReportManager.reportEndOfToolRun();
118
119         List reportOutputFile = ReportManagerHelper.getReportOutputFileAsList();
120
121         // then
122         assertNotNull(reportOutputFile);
123
124         assertEquals(EXPECTED_OUTPUT_FILE_HEADER, reportOutputFile.get(0));
125         assertEquals(EXPECTED_OUTPUT_FILE_SUMMARY, reportOutputFile.get(2));
126         assertEquals("Task: " + TASK_1_NAME, reportOutputFile.get(3));
127         assertEquals("FailedVertices: [" + VERTEX_1_ID + "]", reportOutputFile.get(4));
128     }
129
130     @Test
131     public void testPrintValidationTaskStatus() {
132         // given
133         when(vertexScanned.getUniqueId()).thenReturn(UNIQUE_ID);
134
135         // when
136         ReportManager.printValidationTaskStatus(vertexScanned, TASK_1_NAME, false);
137
138         List reportOutputFile = ReportManagerHelper.getReportOutputFileAsList();
139
140         // then
141         assertNotNull(reportOutputFile);
142
143         assertEquals(EXPECTED_OUTPUT_FILE_HEADER, reportOutputFile.get(0));
144         assertEquals("-----------------------Vertex: " + UNIQUE_ID + ", Task " + TASK_1_NAME
145             + " failed-----------------------", reportOutputFile.get(2));
146     }
147
148     @Test
149     public void testWriteReportLineToFile() {
150         // when
151         ReportManager.writeReportLineToFile(DUMMY_MESSAGE);
152
153         List reportOutputFile = ReportManagerHelper.getReportOutputFileAsList();
154
155         // then
156         assertNotNull(reportOutputFile);
157
158         assertEquals(EXPECTED_OUTPUT_FILE_HEADER, reportOutputFile.get(0));
159         assertEquals(DUMMY_MESSAGE, reportOutputFile.get(2));
160     }
161
162     @Test
163     public void testReportValidatorTypeSummary() {
164         // when
165         ReportManager.reportValidatorTypeSummary(VALIDATOR_NAME, failedTasksNames, successTasksNames);
166
167         List reportOutputFile = ReportManagerHelper.getReportOutputFileAsList();
168
169         // then
170         assertNotNull(reportOutputFile);
171         assertEquals(EXPECTED_OUTPUT_FILE_HEADER, reportOutputFile.get(0));
172
173         assertEquals("-----------------------ValidatorExecuter " + VALIDATOR_NAME
174             + " Validation Summary-----------------------", reportOutputFile.get(2));
175         assertEquals("Failed tasks: [" + TASK_1_FAILED_NAME + ", " + TASK_2_FAILED_NAME + "]",
176             reportOutputFile.get(3));
177         assertEquals("Success tasks: [" + TASK_1_NAME + ", " + TASK_2_NAME + "]",
178             reportOutputFile.get(4));
179     }
180
181         @Test
182         public void testReportStartValidatorRun() {
183                 // when
184                 ReportManager.reportStartValidatorRun(VALIDATOR_NAME, COMPONENT_SUM);
185
186                 List reportOutputFile = ReportManagerHelper.getReportOutputFileAsList();
187
188                 // then
189         assertNotNull(reportOutputFile);
190         assertEquals(EXPECTED_OUTPUT_FILE_HEADER, reportOutputFile.get(0));
191         assertEquals("------ValidatorExecuter " + VALIDATOR_NAME + " Validation Started, on "
192             + COMPONENT_SUM + " components---------", reportOutputFile.get(2));
193         }
194
195     @Test
196     public void testReportStartTaskRun() {
197         // given
198         when(vertexScanned.getUniqueId()).thenReturn(UNIQUE_ID);
199
200         // when
201         ReportManager.reportStartTaskRun(vertexScanned, TASK_1_NAME);
202
203         List reportOutputFile = ReportManagerHelper.getReportOutputFileAsList();
204
205         // then
206         assertNotNull(reportOutputFile);
207         assertEquals(EXPECTED_OUTPUT_FILE_HEADER, reportOutputFile.get(0));
208         assertEquals("-----------------------Vertex: " + UNIQUE_ID + ", Task " + TASK_1_NAME
209                 + " Started-----------------------", reportOutputFile.get(2));
210     }
211
212     private String getCsvExpectedResult(String vertexID, String taskID) {
213         return String.join(",", new String[] {vertexID, taskID,
214             String.valueOf(successResult.getStatus()), successResult.getResult()});
215     }
216 }