Merge "Reorder modifiers"
[so.git] / asdc-controller / src / test / java / org / openecomp / mso / asdc / tenantIsolation / WatchdogDistributionTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.mso.asdc.tenantIsolation;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25 import static org.junit.Assert.fail;
26 import static org.mockito.Matchers.any;
27 import static org.mockito.Mockito.doNothing;
28 import static org.mockito.Mockito.mock;
29 import static org.mockito.Mockito.times;
30 import static org.mockito.Mockito.verify;
31 import static org.mockito.Mockito.when;
32
33 import java.util.ArrayList;
34 import java.util.List;
35
36 import org.junit.AfterClass;
37 import org.junit.Before;
38 import org.junit.Ignore;
39 import org.junit.Test;
40 import org.openecomp.mso.asdc.client.ASDCConfiguration;
41 import org.openecomp.mso.client.aai.AAIResourcesClient;
42 import org.openecomp.mso.client.aai.entities.uri.AAIResourceUri;
43 import org.openecomp.mso.db.catalog.CatalogDatabase;
44 import org.openecomp.mso.db.catalog.beans.Service;
45 import org.openecomp.mso.properties.MsoJavaProperties;
46 import org.openecomp.mso.properties.MsoPropertiesException;
47 import org.openecomp.mso.properties.MsoPropertiesFactory;
48 import org.openecomp.mso.requestsdb.WatchdogComponentDistributionStatus;
49 import org.openecomp.mso.requestsdb.WatchdogComponentDistributionStatusDb;
50 import org.openecomp.mso.requestsdb.WatchdogDistributionStatusDb;
51 import org.openecomp.mso.requestsdb.WatchdogServiceModVerIdLookupDb;
52
53 public class WatchdogDistributionTest {
54         
55         public static final String ASDC_PROP = MsoJavaProperties.class.getClassLoader().getResource("mso.asdc.json").toString().substring(5);
56         
57         private static MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();
58         
59         @Before
60         public final void initBeforeEachTest() throws MsoPropertiesException {
61                 // load the config
62                 msoPropertiesFactory.removeAllMsoProperties();
63                 msoPropertiesFactory.initializeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC, ASDC_PROP);
64         }
65
66         @AfterClass
67         public static final void kill () throws MsoPropertiesException {
68
69                 msoPropertiesFactory.removeMsoProperties(ASDCConfiguration.MSO_PROP_ASDC);
70         }
71
72         @Test
73         @Ignore // 1802 merge
74         public void testGetOverallDistributionStatusSuccess() {
75                 WatchdogDistribution distribution = new WatchdogDistribution();
76                 WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class);
77                 WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class);
78                 
79                 distribution.setWatchdogDistDb(watchdogDisdb);
80                 distribution.setWatchdogCompDistDb(watchdogComp);
81                 try {
82                         WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus();
83                         watchDogDisStatus1.setComponentDistributionStatus("SUCCESS");
84                         watchDogDisStatus1.setComponentName("AAI");
85                         
86                         WatchdogComponentDistributionStatus watchDogDisStatus2 = new WatchdogComponentDistributionStatus();
87                         watchDogDisStatus2.setComponentDistributionStatus("SUCCESS");
88                         watchDogDisStatus2.setComponentName("APP");
89                         
90                         List<WatchdogComponentDistributionStatus> results = new ArrayList<>();
91                         results.add(watchDogDisStatus1);
92                         results.add(watchDogDisStatus2);
93                         
94                         when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null);
95                         when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results);
96                         doNothing().when(watchdogDisdb).updateWatchdogDistributionIdStatus(any(String.class), any(String.class));
97
98                         String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe");
99                         
100                         assertEquals("SUCCESS", result);
101                 } catch (Exception e) {
102                         fail("Unexpected result");
103                 }
104         }
105         
106         @Test
107         @Ignore // 1802 merge
108         public void testGetOverallDistributionStatusFailure() {
109                 WatchdogDistribution distribution = new WatchdogDistribution();
110                 WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class);
111                 WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class);
112                 
113                 distribution.setWatchdogDistDb(watchdogDisdb);
114                 distribution.setWatchdogCompDistDb(watchdogComp);
115                 
116                 try {
117                         WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus();
118                         watchDogDisStatus1.setComponentDistributionStatus("SUCCESS");
119                         watchDogDisStatus1.setComponentName("AAI");
120                         
121                         WatchdogComponentDistributionStatus watchDogDisStatus2 = new WatchdogComponentDistributionStatus();
122                         watchDogDisStatus2.setComponentDistributionStatus("FAILURE");
123                         watchDogDisStatus2.setComponentName("APP");
124                         
125                         List<WatchdogComponentDistributionStatus> results = new ArrayList<>();
126                         results.add(watchDogDisStatus1);
127                         results.add(watchDogDisStatus2);
128                         
129                         when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null);
130                         when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results);
131                         doNothing().when(watchdogDisdb).updateWatchdogDistributionIdStatus(any(String.class), any(String.class));
132
133                         String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe");
134                         
135                         assertEquals("FAILURE", result);
136                 } catch (Exception e) {
137                         fail("Unexpected result");
138                 }
139         }
140         
141         @Test
142         public void testGetOverallDistributionStatusException() {
143                 WatchdogDistribution distribution = new WatchdogDistribution();
144                 WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class);
145                 WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class);
146                 
147                 distribution.setWatchdogDistDb(watchdogDisdb);
148                 distribution.setWatchdogCompDistDb(watchdogComp);
149                 try {
150                         WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus();
151                         watchDogDisStatus1.setComponentDistributionStatus("SUCCESS");
152                         watchDogDisStatus1.setComponentName("AAI");
153                         
154                         WatchdogComponentDistributionStatus watchDogDisStatus2 = new WatchdogComponentDistributionStatus();
155                         watchDogDisStatus2.setComponentDistributionStatus("TESTING");
156                         watchDogDisStatus2.setComponentName("APP");
157                         
158                         List<WatchdogComponentDistributionStatus> results = new ArrayList<>();
159                         results.add(watchDogDisStatus1);
160                         results.add(watchDogDisStatus2);
161                         
162                         when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null);
163                         when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results);
164                         doNothing().when(watchdogDisdb).updateWatchdogDistributionIdStatus(any(String.class), any(String.class));
165
166                         distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe");
167                         
168                 } catch (Exception e) {
169                         assertTrue(e.getMessage().contains("Invalid Component distribution status:"));
170                 }
171         }
172         
173         @Test
174         @Ignore // 1802 merge
175         public void testGetOverallDistributionStatusIncomplete() {
176                 WatchdogDistribution distribution = new WatchdogDistribution();
177                 WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class);
178                 WatchdogComponentDistributionStatusDb watchdogComp = mock(WatchdogComponentDistributionStatusDb.class);
179                 
180                 distribution.setWatchdogDistDb(watchdogDisdb);
181                 distribution.setWatchdogCompDistDb(watchdogComp);
182                 try {
183                         WatchdogComponentDistributionStatus watchDogDisStatus1 = new WatchdogComponentDistributionStatus();
184                         watchDogDisStatus1.setComponentDistributionStatus("SUCCESS");
185                         watchDogDisStatus1.setComponentName("AAI");
186                         
187                         List<WatchdogComponentDistributionStatus> results = new ArrayList<>();
188                         results.add(watchDogDisStatus1);
189                         
190                         when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn(null);
191                         when(watchdogComp.getWatchdogComponentDistributionStatus(any(String.class))).thenReturn(results);
192                         
193                         String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe");
194                         
195                         assertEquals("INCOMPLETE", result);
196                 } catch (Exception e) {
197                         fail("Unexpected result");
198                 }
199         }
200         
201         @Test
202         public void testGetOverallDistributionStatusTimeout() {
203                 WatchdogDistribution distribution = new WatchdogDistribution();
204                 WatchdogDistributionStatusDb watchdogDisdb = mock(WatchdogDistributionStatusDb.class);
205                 
206                 distribution.setWatchdogDistDb(watchdogDisdb);
207                 try {
208                         when(watchdogDisdb.getWatchdogDistributionIdStatus(any(String.class))).thenReturn("timeout");
209
210                         String result = distribution.getOverallDistributionStatus("ff3514e3-5a33-55df-13ab-12abad84e7fe");
211                         
212                         assertEquals("TIMEOUT", result);
213                 } catch (Exception e) {
214                         fail("Unexpected result");
215                 }
216         }
217         
218         @Test
219         @Ignore // 1802 merge
220         public void testExecutePatchAAI() throws Exception {
221                 WatchdogDistribution distribution = new WatchdogDistribution();
222                 WatchdogServiceModVerIdLookupDb serviceLookupDb = mock(WatchdogServiceModVerIdLookupDb.class);
223                 CatalogDatabase catalogDb = mock(CatalogDatabase.class);
224                 AAIResourcesClient aaiClient = mock(AAIResourcesClient.class);
225                 
226                 Service service = new Service();
227                 service.setModelInvariantUUID("modelInvariantUUID");
228                 
229                 when(serviceLookupDb.getWatchdogServiceModVerId(any(String.class))).thenReturn("ff3514e3-5a33-55df");
230                 when(catalogDb.getServiceByModelUUID(any(String.class))).thenReturn(service);
231                 doNothing().when(aaiClient).update(any(AAIResourceUri.class), any(Object.class));
232                 
233                 distribution.setAaiClient(aaiClient);
234                 distribution.setCatalogDb(catalogDb);
235                 distribution.setWatchdogSerlookupDb(serviceLookupDb);
236                 distribution.executePatchAAI("ff3514e3-5a33-55df-13ab-12abad84e7fe", "model-id", "SUCCESS");
237                 
238                 verify(aaiClient, times(1)).update(any(AAIResourceUri.class), any(Object.class));
239         }
240         
241         @Test
242         @Ignore // 1802 merge
243         public void testExecutePatchAAIException() throws Exception {
244                 WatchdogDistribution distribution = new WatchdogDistribution();
245                 CatalogDatabase catalogDb = mock(CatalogDatabase.class);
246                 WatchdogServiceModVerIdLookupDb serviceLookupDb = mock(WatchdogServiceModVerIdLookupDb.class);
247                 
248                 when(serviceLookupDb.getWatchdogServiceModVerId(any(String.class))).thenReturn("ff3514e3-5a33-55df");
249                 when(catalogDb.getServiceByModelUUID(any(String.class))).thenReturn(null);
250                 
251                 try {
252                         distribution.setCatalogDb(catalogDb);
253                         distribution.setWatchdogSerlookupDb(serviceLookupDb);
254                         distribution.executePatchAAI("ff3514e3-5a33-55df-13ab-12abad84e7fe", "model-id", "SUCCESS");
255                 } catch(Exception e) {
256                         assertTrue(e.getMessage().contains("No Service found with serviceModelVersionId:"));
257                 }
258         }
259 }