2 * ============LICENSE_START==========================================
\r
4 * ===================================================================
\r
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
\r
6 * Copyright © 2017-2018 Amdocs
\r
7 * ===================================================================
\r
8 * Licensed under the Apache License, Version 2.0 (the "License");
\r
9 * you may not use this file except in compliance with the License.
\r
10 * You may obtain a copy of the License at
\r
12 * http://www.apache.org/licenses/LICENSE-2.0
\r
14 * Unless required by applicable law or agreed to in writing, software
\r
15 * distributed under the License is distributed on an "AS IS" BASIS,
\r
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
17 * See the License for the specific language governing permissions and
\r
18 * limitations under the License.
\r
19 * ============LICENSE_END============================================
\r
21 package org.onap.aai.modelloader.notification;
\r
23 import com.google.gson.Gson;
\r
24 import com.google.gson.GsonBuilder;
\r
25 import com.google.gson.InstanceCreator;
\r
26 import org.junit.Before;
\r
27 import org.junit.Test;
\r
28 import org.mockito.Mock;
\r
29 import org.mockito.Mockito;
\r
30 import org.mockito.MockitoAnnotations;
\r
31 import org.onap.aai.modelloader.config.ModelLoaderConfig;
\r
32 import org.openecomp.sdc.api.IDistributionClient;
\r
33 import org.openecomp.sdc.api.consumer.INotificationCallback;
\r
34 import org.openecomp.sdc.api.notification.IArtifactInfo;
\r
35 import org.openecomp.sdc.api.notification.INotificationData;
\r
36 import org.openecomp.sdc.api.notification.IResourceInstance;
\r
37 import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;
\r
38 import org.openecomp.sdc.api.results.IDistributionClientResult;
\r
39 import org.openecomp.sdc.impl.DistributionClientFactory;
\r
40 import org.openecomp.sdc.impl.DistributionClientImpl;
\r
41 import org.openecomp.sdc.utils.DistributionActionResultEnum;
\r
43 import java.lang.reflect.Type;
\r
44 import java.util.ArrayList;
\r
45 import java.util.List;
\r
46 import java.util.Properties;
\r
48 public class EventCallbackTest {
\r
50 ModelLoaderConfig config;
\r
51 DistributionClientImpl client;
\r
52 EventCallback callBack;
\r
56 MockitoAnnotations.initMocks(this);
\r
57 Properties props = new Properties();
\r
58 props.setProperty("ml.distribution.ARTIFACT_TYPES",
\r
59 "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG");
\r
60 config = new ModelLoaderConfig(props, null);
\r
61 client = Mockito.spy(DistributionClientImpl.class);
\r
62 callBack = new EventCallback(client, config);
\r
66 public void testActivateCallBack_PublishFailure(){
\r
67 Gson gson = new GsonBuilder().setPrettyPrinting().create();
\r
68 NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),
\r
69 NotificationDataInstance.class);
\r
71 TestConfiguration testConfig = new TestConfiguration();
\r
72 Mockito.when(client.getConfiguration()).thenReturn(testConfig);
\r
73 callBack.activateCallback(notification);
\r
77 public void testActivateCallBack_PublishSuccess(){
\r
78 Gson gson = new GsonBuilder().setPrettyPrinting().create();
\r
79 NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),
\r
80 NotificationDataInstance.class);
\r
82 TestConfiguration testConfig = new TestConfiguration();
\r
83 Mockito.when(client.download(Mockito.any(IArtifactInfo.class))).thenReturn(buildSuccessResult());
\r
84 Mockito.when(client.getConfiguration()).thenReturn(testConfig);
\r
85 callBack.activateCallback(notification);
\r
88 private static IDistributionClientDownloadResult buildSuccessResult() {
\r
89 return new IDistributionClientDownloadResult() {
\r
92 public byte[] getArtifactPayload() {
\r
97 public String getArtifactName() {
\r
102 public String getArtifactFilename() {
\r
107 public String getDistributionMessageResult() {
\r
112 public DistributionActionResultEnum getDistributionActionResult() {
\r
113 return DistributionActionResultEnum.SUCCESS;
\r
118 private String getNotificationWithMultipleResources(){
\r
119 return "{\"distributionID\" : \"bcc7a72e-90b1-4c5f-9a37-28dc3cd86416\",\r\n" +
\r
120 " \"serviceName\" : \"Testnotificationser1\",\r\n" +
\r
121 " \"serviceVersion\" : \"1.0\",\r\n" +
\r
122 " \"serviceUUID\" : \"7f7f94f4-373a-4b71-a0e3-80ae2ba4eb5d\",\r\n" +
\r
123 " \"serviceDescription\" : \"TestNotificationVF1\",\r\n" +
\r
124 " \"resources\" : [{\r\n" +
\r
125 " \"resourceInstanceName\" : \"testnotificationvf11\",\r\n" +
\r
126 " \"resourceName\" : \"TestNotificationVF1\",\r\n" +
\r
127 " \"resourceVersion\" : \"1.0\",\r\n" +
\r
128 " \"resoucreType\" : \"VF\",\r\n" +
\r
129 " \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2d\",\r\n" +
\r
130 " \"artifacts\" : [{\r\n" +
\r
131 " \"artifactName\" : \"sample-xml-alldata-1-1.xml\",\r\n" +
\r
132 " \"artifactType\" : \"YANG_XML\",\r\n" +
\r
133 " \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +
\r
134 " resourceInstances/testnotificationvf11/artifacts/" +
\r
135 " sample-xml-alldata-1-1.xml\",\r\n" +
\r
136 " \"artifactChecksum\" : \"MTUxODFkMmRlOTNhNjYxMGYyYTI1ZjA5Y2QyNWQyYTk\\u003d\",\r\n" +
\r
137 " \"artifactDescription\" : \"MyYang\",\r\n" +
\r
138 " \"artifactTimeout\" : 0,\r\n" +
\r
139 " \"artifactUUID\" : \"0005bc4a-2c19-452e-be6d-d574a56be4d0\",\r\n" +
\r
140 " \"artifactVersion\" : \"1\"\r\n" +
\r
145 " \"resourceInstanceName\" : \"testnotificationvf12\",\r\n" +
\r
146 " \"resourceName\" : \"TestNotificationVF1\",\r\n" +
\r
147 " \"resourceVersion\" : \"1.0\",\r\n" +
\r
148 " \"resoucreType\" : \"VF\",\r\n" +
\r
149 " \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2e\",\r\n" +
\r
150 " \"artifacts\" : [{\r\n" +
\r
151 " \"artifactName\" : \"heat.yaml\",\r\n" +
\r
152 " \"artifactType\" : \"HEAT\",\r\n" +
\r
153 " \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +
\r
154 " resourceInstances/testnotificationvf11/artifacts/" +
\r
155 " heat.yaml\",\r\n" +
\r
156 " \"artifactChecksum\" : \"ODEyNjE4YTMzYzRmMTk2ODVhNTU2NTg3YWEyNmIxMTM\\u003d\",\r\n" +
\r
157 " \"artifactDescription\" : \"heat\",\r\n" +
\r
158 " \"artifactTimeout\" : 60,\r\n" +
\r
159 " \"artifactUUID\" : \"8df6123c-f368-47d3-93be-1972cefbcc35\",\r\n" +
\r
160 " \"artifactVersion\" : \"1\"\r\n" +
\r
168 class NotificationDataInstance implements INotificationData{
\r
170 private String distributionID;
\r
171 private String serviceName;
\r
172 private String serviceVersion;
\r
173 private String serviceUUID;
\r
174 private String serviceDescription;
\r
175 private String serviceInvariantUUID;
\r
176 private List<JsonContainerResourceInstance> resources;
\r
177 private List<ArtifactInfoImpl> serviceArtifacts;
\r
178 private String workloadContext;
\r
181 public String getDistributionID() {
\r
182 return distributionID;
\r
186 public String getServiceName() {
\r
187 return serviceName;
\r
191 public String getServiceVersion() {
\r
192 return serviceVersion;
\r
196 public String getServiceUUID() {
\r
197 return serviceUUID;
\r
200 public void setDistributionID(String distributionID) {
\r
201 this.distributionID = distributionID;
\r
204 public void setServiceName(String serviceName) {
\r
205 this.serviceName = serviceName;
\r
208 public void setServiceVersion(String serviceVersion) {
\r
209 this.serviceVersion = serviceVersion;
\r
212 public void setServiceUUID(String serviceUUID) {
\r
213 this.serviceUUID = serviceUUID;
\r
218 public String getServiceDescription() {
\r
219 return serviceDescription;
\r
222 public void setServiceDescription(String serviceDescription) {
\r
223 this.serviceDescription = serviceDescription;
\r
226 public String getWorkloadContext() {
\r
227 return workloadContext;
\r
230 public void setWorkloadContext(String workloadContext) {
\r
231 this.workloadContext = workloadContext;
\r
235 public String toString() {
\r
236 return "NotificationDataImpl [distributionID=" + distributionID + ", serviceName=" + serviceName
\r
237 + ", serviceVersion=" + serviceVersion + ", serviceUUID=" + serviceUUID + ", serviceDescription="
\r
238 + serviceDescription + ", serviceInvariantUUID=" + serviceInvariantUUID + ", resources=" + resources
\r
239 + ", serviceArtifacts=" + serviceArtifacts + ", workloadContext=" + workloadContext + "]";
\r
243 public List<IResourceInstance> getResources() {
\r
244 List<IResourceInstance> ret = new ArrayList<IResourceInstance>();
\r
245 if( resources != null ){
\r
246 ret.addAll(resources);
\r
251 public void setResources(List<IResourceInstance> resources){
\r
252 this.resources = JsonContainerResourceInstance.convertToJsonContainer(resources);
\r
255 public List<JsonContainerResourceInstance> getResourcesImpl(){
\r
259 List<ArtifactInfoImpl> getServiceArtifactsImpl(){
\r
260 return serviceArtifacts;
\r
264 public List<IArtifactInfo> getServiceArtifacts() {
\r
266 List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();
\r
267 if( serviceArtifacts != null ){
\r
268 temp.addAll(serviceArtifacts);
\r
273 void setServiceArtifacts(List<ArtifactInfoImpl> relevantServiceArtifacts) {
\r
274 serviceArtifacts = relevantServiceArtifacts;
\r
279 public String getServiceInvariantUUID() {
\r
280 return serviceInvariantUUID;
\r
284 public void setServiceInvariantUUID(String serviceInvariantUUID) {
\r
285 this.serviceInvariantUUID = serviceInvariantUUID;
\r
288 public IArtifactInfo getArtifactMetadataByUUID(String artifactUUID){
\r
289 IArtifactInfo ret = findArtifactInfoByUUID(artifactUUID, serviceArtifacts);
\r
290 if( ret == null && resources != null ){
\r
291 for( JsonContainerResourceInstance currResourceInstance : resources ){
\r
292 ret = findArtifactInfoByUUID(artifactUUID, currResourceInstance.getArtifactsImpl());
\r
302 private IArtifactInfo findArtifactInfoByUUID(String artifactUUID, List<ArtifactInfoImpl> listToCheck) {
\r
303 IArtifactInfo ret = null;
\r
304 if( listToCheck != null ){
\r
305 for(IArtifactInfo curr: listToCheck ){
\r
306 if(curr.getArtifactUUID().equals(artifactUUID) ){
\r
316 class ArtifactInfoImpl implements IArtifactInfo{
\r
318 private String artifactName;
\r
319 private String artifactType;
\r
320 private String artifactURL;
\r
321 private String artifactChecksum;
\r
322 private String artifactDescription;
\r
323 private Integer artifactTimeout;
\r
324 private String artifactVersion;
\r
325 private String artifactUUID;
\r
326 private String generatedFromUUID;
\r
327 private IArtifactInfo generatedArtifact;
\r
328 private List<String> relatedArtifacts;
\r
329 private List<IArtifactInfo> relatedArtifactsInfo;
\r
330 ArtifactInfoImpl(){}
\r
332 private ArtifactInfoImpl(IArtifactInfo iArtifactInfo){
\r
333 artifactName = iArtifactInfo.getArtifactName();
\r
334 artifactType = iArtifactInfo.getArtifactType();
\r
335 artifactURL = iArtifactInfo.getArtifactURL();
\r
336 artifactChecksum = iArtifactInfo.getArtifactChecksum();
\r
337 artifactDescription = iArtifactInfo.getArtifactDescription();
\r
338 artifactTimeout = iArtifactInfo.getArtifactTimeout();
\r
339 artifactVersion = iArtifactInfo.getArtifactVersion();
\r
340 artifactUUID = iArtifactInfo.getArtifactUUID();
\r
341 generatedArtifact = iArtifactInfo.getGeneratedArtifact();
\r
342 relatedArtifactsInfo = iArtifactInfo.getRelatedArtifacts();
\r
343 relatedArtifacts = fillRelatedArtifactsUUID(relatedArtifactsInfo);
\r
348 private List<String> fillRelatedArtifactsUUID(List<IArtifactInfo> relatedArtifactsInfo) {
\r
349 List<String> relatedArtifactsUUID = null;
\r
350 if( relatedArtifactsInfo != null && !relatedArtifactsInfo.isEmpty()){
\r
351 relatedArtifactsUUID = new ArrayList<>();
\r
352 for(IArtifactInfo curr: relatedArtifactsInfo){
\r
353 relatedArtifactsUUID.add(curr.getArtifactUUID());
\r
356 return relatedArtifactsUUID;
\r
359 public static List<ArtifactInfoImpl> convertToArtifactInfoImpl(List<IArtifactInfo> list){
\r
360 List<ArtifactInfoImpl> ret = new ArrayList<ArtifactInfoImpl>();
\r
361 if( list != null ){
\r
362 for(IArtifactInfo artifactInfo : list ){
\r
363 ret.add(new ArtifactInfoImpl(artifactInfo));
\r
369 public String getArtifactName() {
\r
370 return artifactName;
\r
373 public void setArtifactName(String artifactName) {
\r
374 this.artifactName = artifactName;
\r
377 public String getArtifactType() {
\r
378 return artifactType;
\r
381 public void setArtifactType(String artifactType) {
\r
382 this.artifactType = artifactType;
\r
385 public String getArtifactURL() {
\r
386 return artifactURL;
\r
389 public void setArtifactURL(String artifactURL) {
\r
390 this.artifactURL = artifactURL;
\r
393 public String getArtifactChecksum() {
\r
394 return artifactChecksum;
\r
397 public void setArtifactChecksum(String artifactChecksum) {
\r
398 this.artifactChecksum = artifactChecksum;
\r
401 public String getArtifactDescription() {
\r
402 return artifactDescription;
\r
405 public void setArtifactDescription(String artifactDescription) {
\r
406 this.artifactDescription = artifactDescription;
\r
409 public Integer getArtifactTimeout() {
\r
410 return artifactTimeout;
\r
413 public void setArtifactTimeout(Integer artifactTimeout) {
\r
414 this.artifactTimeout = artifactTimeout;
\r
418 public String toString() {
\r
419 return "BaseArtifactInfoImpl [artifactName=" + artifactName
\r
420 + ", artifactType=" + artifactType + ", artifactURL="
\r
421 + artifactURL + ", artifactChecksum=" + artifactChecksum
\r
422 + ", artifactDescription=" + artifactDescription
\r
423 + ", artifactVersion=" + artifactVersion
\r
424 + ", artifactUUID=" + artifactUUID
\r
425 + ", artifactTimeout=" + artifactTimeout + "]";
\r
428 public String getArtifactVersion() {
\r
429 return artifactVersion;
\r
432 public void setArtifactVersion(String artifactVersion) {
\r
433 this.artifactVersion = artifactVersion;
\r
436 public String getArtifactUUID() {
\r
437 return artifactUUID;
\r
440 public void setArtifactUUID(String artifactUUID) {
\r
441 this.artifactUUID = artifactUUID;
\r
444 public String getGeneratedFromUUID() {
\r
445 return generatedFromUUID;
\r
448 public void setGeneratedFromUUID(String generatedFromUUID) {
\r
449 this.generatedFromUUID = generatedFromUUID;
\r
452 public IArtifactInfo getGeneratedArtifact() {
\r
453 return generatedArtifact;
\r
456 public void setGeneratedArtifact(IArtifactInfo generatedArtifact) {
\r
457 this.generatedArtifact = generatedArtifact;
\r
460 public List<IArtifactInfo> getRelatedArtifacts(){
\r
461 List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();
\r
462 if( relatedArtifactsInfo != null ){
\r
463 temp.addAll(relatedArtifactsInfo);
\r
468 public void setRelatedArtifacts(List<String> relatedArtifacts) {
\r
469 this.relatedArtifacts = relatedArtifacts;
\r
472 public void setRelatedArtifactsInfo(List<IArtifactInfo> relatedArtifactsInfo) {
\r
473 this.relatedArtifactsInfo = relatedArtifactsInfo;
\r
476 public List<String> getRelatedArtifactsUUID(){
\r
477 return relatedArtifacts;
\r
481 class JsonContainerResourceInstance implements IResourceInstance{
\r
482 JsonContainerResourceInstance (){}
\r
483 private String resourceInstanceName;
\r
484 private String resourceCustomizationUUID;
\r
485 private String resourceName;
\r
486 private String resourceVersion;
\r
487 private String resoucreType;
\r
488 private String resourceUUID;
\r
489 private String resourceInvariantUUID;
\r
490 private String category;
\r
491 private String subcategory;
\r
492 private List<ArtifactInfoImpl> artifacts;
\r
494 private JsonContainerResourceInstance(IResourceInstance resourceInstance){
\r
495 resourceInstanceName = resourceInstance.getResourceInstanceName();
\r
496 resourceCustomizationUUID = resourceInstance.getResourceCustomizationUUID();
\r
497 resourceName = resourceInstance.getResourceName();
\r
498 resourceVersion = resourceInstance.getResourceVersion();
\r
499 resoucreType = resourceInstance.getResourceType();
\r
500 resourceUUID = resourceInstance.getResourceUUID();
\r
501 resourceInvariantUUID = resourceInstance.getResourceInvariantUUID();
\r
502 category = resourceInstance.getCategory();
\r
503 subcategory = resourceInstance.getSubcategory();
\r
504 artifacts = ArtifactInfoImpl.convertToArtifactInfoImpl(resourceInstance.getArtifacts());
\r
507 public static List<JsonContainerResourceInstance> convertToJsonContainer(List<IResourceInstance> resources){
\r
508 List<JsonContainerResourceInstance> buildResources = new ArrayList<JsonContainerResourceInstance>();
\r
509 if( resources != null ){
\r
510 for( IResourceInstance resourceInstance : resources ){
\r
511 buildResources.add(new JsonContainerResourceInstance(resourceInstance));
\r
514 return buildResources;
\r
518 public String getResourceInstanceName() {
\r
519 return resourceInstanceName;
\r
522 public void setResourceInstanceName(String resourceInstanceName) {
\r
523 this.resourceInstanceName = resourceInstanceName;
\r
527 public String getResourceName() {
\r
528 return resourceName;
\r
531 public void setResourceName(String resourceName) {
\r
532 this.resourceName = resourceName;
\r
536 public String getResourceVersion() {
\r
537 return resourceVersion;
\r
540 public void setResourceVersion(String resourceVersion) {
\r
541 this.resourceVersion = resourceVersion;
\r
545 public String getResourceType() {
\r
546 return resoucreType;
\r
549 public void setResoucreType(String resoucreType) {
\r
550 this.resoucreType = resoucreType;
\r
554 public String getResourceUUID() {
\r
555 return resourceUUID;
\r
558 public void setResourceUUID(String resourceUUID) {
\r
559 this.resourceUUID = resourceUUID;
\r
563 public List<IArtifactInfo> getArtifacts() {
\r
564 List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();
\r
565 if( artifacts != null ){
\r
566 temp.addAll(artifacts);
\r
571 public void setArtifacts(List<ArtifactInfoImpl> artifacts) {
\r
572 this.artifacts = artifacts;
\r
575 public List<ArtifactInfoImpl> getArtifactsImpl(){
\r
580 public String getResourceInvariantUUID() {
\r
581 return resourceInvariantUUID;
\r
584 public void setResourceInvariantUUID(String resourceInvariantUUID) {
\r
585 this.resourceInvariantUUID = resourceInvariantUUID;
\r
587 public String getResourceCustomizationUUID() {
\r
588 return resourceCustomizationUUID;
\r
591 public void setResourceCustomizationUUID(String resourceCustomizationUUID) {
\r
592 this.resourceCustomizationUUID = resourceCustomizationUUID;
\r
595 public String getCategory() {
\r
599 public void setCategory(String category) {
\r
600 this.category = category;
\r
603 public String getSubcategory() {
\r
604 return subcategory;
\r
607 public void setSubcategory(String subcategory) {
\r
608 this.subcategory = subcategory;
\r