Rework SDC calls and model
[clamp.git] / src / test / java / org / onap / clamp / clds / it / SdcCatalogServicesIT.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP CLAMP
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
6  *                             reserved.
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  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22  */
23
24 package org.onap.clamp.clds.it;
25
26 import static org.junit.Assert.assertTrue;
27
28 import java.util.LinkedList;
29 import java.util.List;
30
31 import org.apache.commons.io.IOUtils;
32 import org.junit.Test;
33 import org.junit.runner.RunWith;
34 import org.mockito.Mockito;
35 import org.onap.clamp.clds.AbstractIT;
36 import org.onap.clamp.clds.client.SdcCatalogServices;
37 import org.onap.clamp.clds.model.CldsAlarmCondition;
38 import org.onap.clamp.clds.model.CldsSdcResource;
39 import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo;
40 import org.onap.clamp.clds.model.CldsSdcServiceInfo;
41 import org.onap.clamp.clds.model.CldsServiceData;
42 import org.springframework.beans.factory.annotation.Autowired;
43 import org.springframework.boot.test.context.SpringBootTest;
44 import org.springframework.test.context.junit4.SpringRunner;
45
46 /**
47  * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE
48  * Delegates in test.
49  */
50 @RunWith(SpringRunner.class)
51 @SpringBootTest
52 public class SdcCatalogServicesIT extends AbstractIT {
53     @Autowired
54     private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices();
55
56     @Test
57     public void removeDuplicateServicesTest() throws Exception {
58         SdcCatalogServices catalogServices = new SdcCatalogServices();
59         List<CldsSdcServiceInfo> rawCldsSdcServiceList = new LinkedList<CldsSdcServiceInfo>();
60
61         CldsSdcServiceInfo service1a = new CldsSdcServiceInfo();
62         service1a.setName("service1");
63         service1a.setVersion("1.0");
64         service1a.setInvariantUUID("invariantUUID1.0");
65         rawCldsSdcServiceList.add(service1a);
66         rawCldsSdcServiceList.add(service1a);
67
68         CldsSdcServiceInfo service1b = new CldsSdcServiceInfo();
69         service1b.setName("service1");
70         service1b.setVersion("1.1");
71         service1b.setInvariantUUID("invariantUUID1.1");
72         rawCldsSdcServiceList.add(service1b);
73
74         CldsSdcServiceInfo service1c = new CldsSdcServiceInfo();
75         service1c.setName("service1");
76         service1c.setVersion("1.2");
77         service1c.setInvariantUUID("invariantUUID1.2");
78         rawCldsSdcServiceList.add(service1c);
79
80         CldsSdcServiceInfo service2 = new CldsSdcServiceInfo();
81         service2.setName("service2");
82         service2.setVersion("1.0");
83         service2.setInvariantUUID("invariantUUID2.0");
84         rawCldsSdcServiceList.add(service2);
85
86         List<CldsSdcServiceInfo> resultList = catalogServices.removeDuplicateServices(rawCldsSdcServiceList);
87
88         assertTrue(resultList.size() == 2);
89
90         CldsSdcServiceInfo res1, res2;
91         if ("service1".equals(resultList.get(0).getName())) {
92             res1 = resultList.get(0);
93             res2 = resultList.get(1);
94         } else {
95             res1 = resultList.get(1);
96             res2 = resultList.get(0);
97         }
98
99         assertTrue("service1".equals(res1.getName()));
100         assertTrue("1.2".equals(res1.getVersion()));
101
102         assertTrue("service2".equals(res2.getName()));
103         assertTrue("1.0".equals(res2.getVersion()));
104
105     }
106
107     @Test
108     public void removeDuplicateSdcResourceInstancesTest() {
109         SdcCatalogServices catalogServices = new SdcCatalogServices();
110         List<CldsSdcResource> rawCldsSdcResourceList = new LinkedList<CldsSdcResource>();
111
112         CldsSdcResource sdcResource1a = new CldsSdcResource();
113         sdcResource1a.setResourceInstanceName("resource1");
114         sdcResource1a.setResourceVersion("1.0");
115         rawCldsSdcResourceList.add(sdcResource1a);
116
117         CldsSdcResource sdcResource1b = new CldsSdcResource();
118         sdcResource1b.setResourceInstanceName("resource1");
119         sdcResource1b.setResourceVersion("1.1");
120         rawCldsSdcResourceList.add(sdcResource1b);
121
122         CldsSdcResource sdcResource1c = new CldsSdcResource();
123         sdcResource1c.setResourceInstanceName("resource1");
124         sdcResource1c.setResourceVersion("1.2");
125         rawCldsSdcResourceList.add(sdcResource1c);
126
127         CldsSdcResource sdcResource2 = new CldsSdcResource();
128         sdcResource2.setResourceInstanceName("resource2");
129         sdcResource2.setResourceVersion("1.0");
130         rawCldsSdcResourceList.add(sdcResource2);
131
132         List<CldsSdcResource> resultList = catalogServices.removeDuplicateSdcResourceInstances(rawCldsSdcResourceList);
133
134         CldsSdcResource res1, res2;
135         if ("resource1".equals(resultList.get(0).getResourceInstanceName())) {
136             res1 = resultList.get(0);
137             res2 = resultList.get(1);
138         } else {
139             res1 = resultList.get(1);
140             res2 = resultList.get(0);
141         }
142
143         assertTrue("resource1".equals(res1.getResourceInstanceName()));
144         assertTrue("1.2".equals(res1.getResourceVersion()));
145
146         assertTrue("resource2".equals(res2.getResourceInstanceName()));
147         assertTrue("1.0".equals(res2.getResourceVersion()));
148
149     }
150
151     @Test
152     public void removeDuplicateSdcResourceBasicInfoTest() {
153
154         SdcCatalogServices catalogServices = new SdcCatalogServices();
155         List<CldsSdcResourceBasicInfo> rawCldsSdcResourceList = new LinkedList<CldsSdcResourceBasicInfo>();
156
157         CldsSdcResourceBasicInfo sdcResource1a = new CldsSdcResourceBasicInfo();
158         sdcResource1a.setName("resource1");
159         sdcResource1a.setVersion("1.0");
160         rawCldsSdcResourceList.add(sdcResource1a);
161
162         CldsSdcResourceBasicInfo sdcResource1b = new CldsSdcResourceBasicInfo();
163         sdcResource1b.setName("resource1");
164         sdcResource1b.setVersion("1.1");
165         rawCldsSdcResourceList.add(sdcResource1b);
166
167         CldsSdcResourceBasicInfo sdcResource1c = new CldsSdcResourceBasicInfo();
168         sdcResource1c.setName("resource1");
169         sdcResource1c.setVersion("1.2");
170         rawCldsSdcResourceList.add(sdcResource1c);
171
172         CldsSdcResourceBasicInfo sdcResource2 = new CldsSdcResourceBasicInfo();
173         sdcResource2.setName("resource2");
174         sdcResource2.setVersion("1.0");
175         rawCldsSdcResourceList.add(sdcResource2);
176
177         List<CldsSdcResourceBasicInfo> resultList = catalogServices
178                 .removeDuplicateSdcResourceBasicInfo(rawCldsSdcResourceList);
179
180         CldsSdcResourceBasicInfo res1, res2;
181         if ("resource1".equals(resultList.get(0).getName())) {
182             res1 = resultList.get(0);
183             res2 = resultList.get(1);
184         } else {
185             res1 = resultList.get(1);
186             res2 = resultList.get(0);
187         }
188
189         assertTrue("resource1".equals(res1.getName()));
190         assertTrue("1.2".equals(res1.getVersion()));
191
192         assertTrue("resource2".equals(res2.getName()));
193         assertTrue("1.0".equals(res2.getVersion()));
194
195     }
196
197     @Test
198     public void getServiceUuidFromServiceInvariantIdTest() throws Exception {
199         SdcCatalogServices aSpy = Mockito.spy(sdcCatalogWired);
200         Mockito.when(aSpy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString(
201                 SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"));
202
203         // Try the vcts4 version 1.0, this one should be replaced by 1.1 so it
204         // should not exist, returning empty string
205         String resUuidVcts4Null = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b");
206         assertTrue("".equals(resUuidVcts4Null));
207
208         // Try the vcts4 version 1.1, this one should be there as it replaces
209         // the vcts4 v1.0
210         String resUuidVcts4Latest = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9c");
211         assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(resUuidVcts4Latest));
212
213         // Try the vcts5 version 1.0, this one should be there
214         String resUuidVcts5 = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d8c");
215         assertTrue("29018914-966c-442d-9d08-251b9dc45b7f".equals(resUuidVcts5));
216
217         // try one that does not exist at all
218         String resUuidUnknown = aSpy.getServiceUuidFromServiceInvariantId("testuuid");
219         assertTrue("".equals(resUuidUnknown));
220
221     }
222
223     @Test
224     public void getCldsServiceDataWithAlarmConditionsTest() throws Exception {
225         SdcCatalogServices aSpy = Mockito.spy(sdcCatalogWired);
226         Mockito.when(aSpy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString(
227                 SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"));
228
229         // This invariant uuid is the one from vcts4 v1.1
230         String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl")
231                 + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata";
232         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false))
233                 .thenReturn(IOUtils.toString(
234                         SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"),
235                         "UTF-8"));
236
237         String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url")
238                 + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata";
239         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false))
240                 .thenReturn(IOUtils.toString(
241                         SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"),
242                         "UTF-8"));
243
244         String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url")
245                 + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata";
246         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl, false)).thenReturn(
247                 IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"),
248                         "UTF-8"));
249
250         String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url")
251                 + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata";
252         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl, false)).thenReturn(
253                 IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"),
254                         "UTF-8"));
255
256         String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url")
257                 + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata";
258         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false)).thenReturn(IOUtils.toString(
259                 SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8"));
260
261         String csvDetailUrl = "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153";
262         Mockito.when(aSpy.getResponsesFromArtifactUrl(csvDetailUrl)).thenReturn(IOUtils.toString(
263                 SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8"));
264
265         String csvAlarmsDetailUrl = "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392";
266         Mockito.when(aSpy.getResponsesFromArtifactUrl(csvAlarmsDetailUrl)).thenReturn(IOUtils
267                 .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"));
268
269         String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF";
270         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl, false)).thenReturn(IOUtils
271                 .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8"));
272
273         String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC";
274         Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl, false)).thenReturn(
275                 IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"),
276                         "UTF-8"));
277
278         CldsServiceData cldsServiceData = aSpy
279                 .getCldsServiceDataWithAlarmConditions("a33ed748-3477-4434-b3f3-b5560f5e7d9c");
280         assertTrue("a33ed748-3477-4434-b3f3-b5560f5e7d9c".equals(cldsServiceData.getServiceInvariantUUID()));
281         assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(cldsServiceData.getServiceUUID()));
282         assertTrue(cldsServiceData.getCldsVfs().size() == 1);
283
284         List<CldsAlarmCondition> alarmsList = aSpy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData);
285         assertTrue(alarmsList.size() == 6);
286
287     }
288
289 }