2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright © 2017 AT&T Intellectual Property.
\r
6 * Copyright © 2017 Amdocs
\r
7 * All rights reserved.
\r
8 * ================================================================================
\r
9 * Licensed under the Apache License, Version 2.0 (the "License");
\r
10 * you may not use this file except in compliance with the License.
\r
11 * You may obtain a copy of the License at
\r
13 * http://www.apache.org/licenses/LICENSE-2.0
\r
15 * Unless required by applicable law or agreed to in writing, software
\r
16 * distributed under the License is distributed on an "AS IS" BASIS,
\r
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
18 * See the License for the specific language governing permissions and
\r
19 * limitations under the License.
\r
20 * ============LICENSE_END=========================================================
\r
22 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
24 package org.onap.aai.modelloader.notification;
\r
26 import com.google.gson.Gson;
\r
27 import com.google.gson.GsonBuilder;
\r
28 import com.google.gson.InstanceCreator;
\r
29 import org.junit.Before;
\r
30 import org.junit.Test;
\r
31 import org.mockito.Mock;
\r
32 import org.mockito.Mockito;
\r
33 import org.mockito.MockitoAnnotations;
\r
34 import org.onap.aai.modelloader.config.ModelLoaderConfig;
\r
35 import org.openecomp.sdc.api.IDistributionClient;
\r
36 import org.openecomp.sdc.api.consumer.INotificationCallback;
\r
37 import org.openecomp.sdc.api.notification.IArtifactInfo;
\r
38 import org.openecomp.sdc.api.notification.INotificationData;
\r
39 import org.openecomp.sdc.api.notification.IResourceInstance;
\r
40 import org.openecomp.sdc.api.results.IDistributionClientDownloadResult;
\r
41 import org.openecomp.sdc.api.results.IDistributionClientResult;
\r
42 import org.openecomp.sdc.impl.DistributionClientFactory;
\r
43 import org.openecomp.sdc.impl.DistributionClientImpl;
\r
44 import org.openecomp.sdc.utils.DistributionActionResultEnum;
\r
46 import java.lang.reflect.Type;
\r
47 import java.util.ArrayList;
\r
48 import java.util.List;
\r
49 import java.util.Properties;
\r
51 public class EventCallbackTest {
\r
53 ModelLoaderConfig config;
\r
54 DistributionClientImpl client;
\r
55 EventCallback callBack;
\r
59 MockitoAnnotations.initMocks(this);
\r
60 Properties props = new Properties();
\r
61 props.setProperty("ml.distribution.ARTIFACT_TYPES",
\r
62 "MODEL_INVENTORY_PROFILE,MODEL_QUERY_SPEC,VNF_CATALOG");
\r
63 config = new ModelLoaderConfig(props, null);
\r
64 client = Mockito.spy(DistributionClientImpl.class);
\r
65 callBack = new EventCallback(client, config);
\r
69 public void testActivateCallBack_PublishFailure(){
\r
70 Gson gson = new GsonBuilder().setPrettyPrinting().create();
\r
71 NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),
\r
72 NotificationDataInstance.class);
\r
74 TestConfiguration testConfig = new TestConfiguration();
\r
75 Mockito.when(client.getConfiguration()).thenReturn(testConfig);
\r
76 callBack.activateCallback(notification);
\r
80 public void testActivateCallBack_PublishSuccess(){
\r
81 Gson gson = new GsonBuilder().setPrettyPrinting().create();
\r
82 NotificationDataInstance notification = gson.fromJson(getNotificationWithMultipleResources(),
\r
83 NotificationDataInstance.class);
\r
85 TestConfiguration testConfig = new TestConfiguration();
\r
86 Mockito.when(client.download(Mockito.any(IArtifactInfo.class))).thenReturn(buildSuccessResult());
\r
87 Mockito.when(client.getConfiguration()).thenReturn(testConfig);
\r
88 callBack.activateCallback(notification);
\r
91 private static IDistributionClientDownloadResult buildSuccessResult() {
\r
92 return new IDistributionClientDownloadResult() {
\r
95 public byte[] getArtifactPayload() {
\r
100 public String getArtifactName() {
\r
105 public String getArtifactFilename() {
\r
110 public String getDistributionMessageResult() {
\r
115 public DistributionActionResultEnum getDistributionActionResult() {
\r
116 return DistributionActionResultEnum.SUCCESS;
\r
121 private String getNotificationWithMultipleResources(){
\r
122 return "{\"distributionID\" : \"bcc7a72e-90b1-4c5f-9a37-28dc3cd86416\",\r\n" +
\r
123 " \"serviceName\" : \"Testnotificationser1\",\r\n" +
\r
124 " \"serviceVersion\" : \"1.0\",\r\n" +
\r
125 " \"serviceUUID\" : \"7f7f94f4-373a-4b71-a0e3-80ae2ba4eb5d\",\r\n" +
\r
126 " \"serviceDescription\" : \"TestNotificationVF1\",\r\n" +
\r
127 " \"resources\" : [{\r\n" +
\r
128 " \"resourceInstanceName\" : \"testnotificationvf11\",\r\n" +
\r
129 " \"resourceName\" : \"TestNotificationVF1\",\r\n" +
\r
130 " \"resourceVersion\" : \"1.0\",\r\n" +
\r
131 " \"resoucreType\" : \"VF\",\r\n" +
\r
132 " \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2d\",\r\n" +
\r
133 " \"artifacts\" : [{\r\n" +
\r
134 " \"artifactName\" : \"sample-xml-alldata-1-1.xml\",\r\n" +
\r
135 " \"artifactType\" : \"YANG_XML\",\r\n" +
\r
136 " \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +
\r
137 " resourceInstances/testnotificationvf11/artifacts/" +
\r
138 " sample-xml-alldata-1-1.xml\",\r\n" +
\r
139 " \"artifactChecksum\" : \"MTUxODFkMmRlOTNhNjYxMGYyYTI1ZjA5Y2QyNWQyYTk\\u003d\",\r\n" +
\r
140 " \"artifactDescription\" : \"MyYang\",\r\n" +
\r
141 " \"artifactTimeout\" : 0,\r\n" +
\r
142 " \"artifactUUID\" : \"0005bc4a-2c19-452e-be6d-d574a56be4d0\",\r\n" +
\r
143 " \"artifactVersion\" : \"1\"\r\n" +
\r
148 " \"resourceInstanceName\" : \"testnotificationvf12\",\r\n" +
\r
149 " \"resourceName\" : \"TestNotificationVF1\",\r\n" +
\r
150 " \"resourceVersion\" : \"1.0\",\r\n" +
\r
151 " \"resoucreType\" : \"VF\",\r\n" +
\r
152 " \"resourceUUID\" : \"907e1746-9f69-40f5-9f2a-313654092a2e\",\r\n" +
\r
153 " \"artifacts\" : [{\r\n" +
\r
154 " \"artifactName\" : \"heat.yaml\",\r\n" +
\r
155 " \"artifactType\" : \"HEAT\",\r\n" +
\r
156 " \"artifactURL\" : \"/sdc/v1/catalog/services/Testnotificationser1/1.0/" +
\r
157 " resourceInstances/testnotificationvf11/artifacts/" +
\r
158 " heat.yaml\",\r\n" +
\r
159 " \"artifactChecksum\" : \"ODEyNjE4YTMzYzRmMTk2ODVhNTU2NTg3YWEyNmIxMTM\\u003d\",\r\n" +
\r
160 " \"artifactDescription\" : \"heat\",\r\n" +
\r
161 " \"artifactTimeout\" : 60,\r\n" +
\r
162 " \"artifactUUID\" : \"8df6123c-f368-47d3-93be-1972cefbcc35\",\r\n" +
\r
163 " \"artifactVersion\" : \"1\"\r\n" +
\r
171 class NotificationDataInstance implements INotificationData{
\r
173 private String distributionID;
\r
174 private String serviceName;
\r
175 private String serviceVersion;
\r
176 private String serviceUUID;
\r
177 private String serviceDescription;
\r
178 private String serviceInvariantUUID;
\r
179 private List<JsonContainerResourceInstance> resources;
\r
180 private List<ArtifactInfoImpl> serviceArtifacts;
\r
181 private String workloadContext;
\r
184 public String getDistributionID() {
\r
185 return distributionID;
\r
189 public String getServiceName() {
\r
190 return serviceName;
\r
194 public String getServiceVersion() {
\r
195 return serviceVersion;
\r
199 public String getServiceUUID() {
\r
200 return serviceUUID;
\r
203 public void setDistributionID(String distributionID) {
\r
204 this.distributionID = distributionID;
\r
207 public void setServiceName(String serviceName) {
\r
208 this.serviceName = serviceName;
\r
211 public void setServiceVersion(String serviceVersion) {
\r
212 this.serviceVersion = serviceVersion;
\r
215 public void setServiceUUID(String serviceUUID) {
\r
216 this.serviceUUID = serviceUUID;
\r
221 public String getServiceDescription() {
\r
222 return serviceDescription;
\r
225 public void setServiceDescription(String serviceDescription) {
\r
226 this.serviceDescription = serviceDescription;
\r
229 public String getWorkloadContext() {
\r
230 return workloadContext;
\r
233 public void setWorkloadContext(String workloadContext) {
\r
234 this.workloadContext = workloadContext;
\r
238 public String toString() {
\r
239 return "NotificationDataImpl [distributionID=" + distributionID + ", serviceName=" + serviceName
\r
240 + ", serviceVersion=" + serviceVersion + ", serviceUUID=" + serviceUUID + ", serviceDescription="
\r
241 + serviceDescription + ", serviceInvariantUUID=" + serviceInvariantUUID + ", resources=" + resources
\r
242 + ", serviceArtifacts=" + serviceArtifacts + ", workloadContext=" + workloadContext + "]";
\r
246 public List<IResourceInstance> getResources() {
\r
247 List<IResourceInstance> ret = new ArrayList<IResourceInstance>();
\r
248 if( resources != null ){
\r
249 ret.addAll(resources);
\r
254 public void setResources(List<IResourceInstance> resources){
\r
255 this.resources = JsonContainerResourceInstance.convertToJsonContainer(resources);
\r
258 public List<JsonContainerResourceInstance> getResourcesImpl(){
\r
262 List<ArtifactInfoImpl> getServiceArtifactsImpl(){
\r
263 return serviceArtifacts;
\r
267 public List<IArtifactInfo> getServiceArtifacts() {
\r
269 List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();
\r
270 if( serviceArtifacts != null ){
\r
271 temp.addAll(serviceArtifacts);
\r
276 void setServiceArtifacts(List<ArtifactInfoImpl> relevantServiceArtifacts) {
\r
277 serviceArtifacts = relevantServiceArtifacts;
\r
282 public String getServiceInvariantUUID() {
\r
283 return serviceInvariantUUID;
\r
287 public void setServiceInvariantUUID(String serviceInvariantUUID) {
\r
288 this.serviceInvariantUUID = serviceInvariantUUID;
\r
291 public IArtifactInfo getArtifactMetadataByUUID(String artifactUUID){
\r
292 IArtifactInfo ret = findArtifactInfoByUUID(artifactUUID, serviceArtifacts);
\r
293 if( ret == null && resources != null ){
\r
294 for( JsonContainerResourceInstance currResourceInstance : resources ){
\r
295 ret = findArtifactInfoByUUID(artifactUUID, currResourceInstance.getArtifactsImpl());
\r
305 private IArtifactInfo findArtifactInfoByUUID(String artifactUUID, List<ArtifactInfoImpl> listToCheck) {
\r
306 IArtifactInfo ret = null;
\r
307 if( listToCheck != null ){
\r
308 for(IArtifactInfo curr: listToCheck ){
\r
309 if(curr.getArtifactUUID().equals(artifactUUID) ){
\r
319 class ArtifactInfoImpl implements IArtifactInfo{
\r
321 private String artifactName;
\r
322 private String artifactType;
\r
323 private String artifactURL;
\r
324 private String artifactChecksum;
\r
325 private String artifactDescription;
\r
326 private Integer artifactTimeout;
\r
327 private String artifactVersion;
\r
328 private String artifactUUID;
\r
329 private String generatedFromUUID;
\r
330 private IArtifactInfo generatedArtifact;
\r
331 private List<String> relatedArtifacts;
\r
332 private List<IArtifactInfo> relatedArtifactsInfo;
\r
333 ArtifactInfoImpl(){}
\r
335 private ArtifactInfoImpl(IArtifactInfo iArtifactInfo){
\r
336 artifactName = iArtifactInfo.getArtifactName();
\r
337 artifactType = iArtifactInfo.getArtifactType();
\r
338 artifactURL = iArtifactInfo.getArtifactURL();
\r
339 artifactChecksum = iArtifactInfo.getArtifactChecksum();
\r
340 artifactDescription = iArtifactInfo.getArtifactDescription();
\r
341 artifactTimeout = iArtifactInfo.getArtifactTimeout();
\r
342 artifactVersion = iArtifactInfo.getArtifactVersion();
\r
343 artifactUUID = iArtifactInfo.getArtifactUUID();
\r
344 generatedArtifact = iArtifactInfo.getGeneratedArtifact();
\r
345 relatedArtifactsInfo = iArtifactInfo.getRelatedArtifacts();
\r
346 relatedArtifacts = fillRelatedArtifactsUUID(relatedArtifactsInfo);
\r
351 private List<String> fillRelatedArtifactsUUID(List<IArtifactInfo> relatedArtifactsInfo) {
\r
352 List<String> relatedArtifactsUUID = null;
\r
353 if( relatedArtifactsInfo != null && !relatedArtifactsInfo.isEmpty()){
\r
354 relatedArtifactsUUID = new ArrayList<>();
\r
355 for(IArtifactInfo curr: relatedArtifactsInfo){
\r
356 relatedArtifactsUUID.add(curr.getArtifactUUID());
\r
359 return relatedArtifactsUUID;
\r
362 public static List<ArtifactInfoImpl> convertToArtifactInfoImpl(List<IArtifactInfo> list){
\r
363 List<ArtifactInfoImpl> ret = new ArrayList<ArtifactInfoImpl>();
\r
364 if( list != null ){
\r
365 for(IArtifactInfo artifactInfo : list ){
\r
366 ret.add(new ArtifactInfoImpl(artifactInfo));
\r
372 public String getArtifactName() {
\r
373 return artifactName;
\r
376 public void setArtifactName(String artifactName) {
\r
377 this.artifactName = artifactName;
\r
380 public String getArtifactType() {
\r
381 return artifactType;
\r
384 public void setArtifactType(String artifactType) {
\r
385 this.artifactType = artifactType;
\r
388 public String getArtifactURL() {
\r
389 return artifactURL;
\r
392 public void setArtifactURL(String artifactURL) {
\r
393 this.artifactURL = artifactURL;
\r
396 public String getArtifactChecksum() {
\r
397 return artifactChecksum;
\r
400 public void setArtifactChecksum(String artifactChecksum) {
\r
401 this.artifactChecksum = artifactChecksum;
\r
404 public String getArtifactDescription() {
\r
405 return artifactDescription;
\r
408 public void setArtifactDescription(String artifactDescription) {
\r
409 this.artifactDescription = artifactDescription;
\r
412 public Integer getArtifactTimeout() {
\r
413 return artifactTimeout;
\r
416 public void setArtifactTimeout(Integer artifactTimeout) {
\r
417 this.artifactTimeout = artifactTimeout;
\r
421 public String toString() {
\r
422 return "BaseArtifactInfoImpl [artifactName=" + artifactName
\r
423 + ", artifactType=" + artifactType + ", artifactURL="
\r
424 + artifactURL + ", artifactChecksum=" + artifactChecksum
\r
425 + ", artifactDescription=" + artifactDescription
\r
426 + ", artifactVersion=" + artifactVersion
\r
427 + ", artifactUUID=" + artifactUUID
\r
428 + ", artifactTimeout=" + artifactTimeout + "]";
\r
431 public String getArtifactVersion() {
\r
432 return artifactVersion;
\r
435 public void setArtifactVersion(String artifactVersion) {
\r
436 this.artifactVersion = artifactVersion;
\r
439 public String getArtifactUUID() {
\r
440 return artifactUUID;
\r
443 public void setArtifactUUID(String artifactUUID) {
\r
444 this.artifactUUID = artifactUUID;
\r
447 public String getGeneratedFromUUID() {
\r
448 return generatedFromUUID;
\r
451 public void setGeneratedFromUUID(String generatedFromUUID) {
\r
452 this.generatedFromUUID = generatedFromUUID;
\r
455 public IArtifactInfo getGeneratedArtifact() {
\r
456 return generatedArtifact;
\r
459 public void setGeneratedArtifact(IArtifactInfo generatedArtifact) {
\r
460 this.generatedArtifact = generatedArtifact;
\r
463 public List<IArtifactInfo> getRelatedArtifacts(){
\r
464 List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();
\r
465 if( relatedArtifactsInfo != null ){
\r
466 temp.addAll(relatedArtifactsInfo);
\r
471 public void setRelatedArtifacts(List<String> relatedArtifacts) {
\r
472 this.relatedArtifacts = relatedArtifacts;
\r
475 public void setRelatedArtifactsInfo(List<IArtifactInfo> relatedArtifactsInfo) {
\r
476 this.relatedArtifactsInfo = relatedArtifactsInfo;
\r
479 public List<String> getRelatedArtifactsUUID(){
\r
480 return relatedArtifacts;
\r
484 class JsonContainerResourceInstance implements IResourceInstance{
\r
485 JsonContainerResourceInstance (){}
\r
486 private String resourceInstanceName;
\r
487 private String resourceCustomizationUUID;
\r
488 private String resourceName;
\r
489 private String resourceVersion;
\r
490 private String resoucreType;
\r
491 private String resourceUUID;
\r
492 private String resourceInvariantUUID;
\r
493 private String category;
\r
494 private String subcategory;
\r
495 private List<ArtifactInfoImpl> artifacts;
\r
497 private JsonContainerResourceInstance(IResourceInstance resourceInstance){
\r
498 resourceInstanceName = resourceInstance.getResourceInstanceName();
\r
499 resourceCustomizationUUID = resourceInstance.getResourceCustomizationUUID();
\r
500 resourceName = resourceInstance.getResourceName();
\r
501 resourceVersion = resourceInstance.getResourceVersion();
\r
502 resoucreType = resourceInstance.getResourceType();
\r
503 resourceUUID = resourceInstance.getResourceUUID();
\r
504 resourceInvariantUUID = resourceInstance.getResourceInvariantUUID();
\r
505 category = resourceInstance.getCategory();
\r
506 subcategory = resourceInstance.getSubcategory();
\r
507 artifacts = ArtifactInfoImpl.convertToArtifactInfoImpl(resourceInstance.getArtifacts());
\r
510 public static List<JsonContainerResourceInstance> convertToJsonContainer(List<IResourceInstance> resources){
\r
511 List<JsonContainerResourceInstance> buildResources = new ArrayList<JsonContainerResourceInstance>();
\r
512 if( resources != null ){
\r
513 for( IResourceInstance resourceInstance : resources ){
\r
514 buildResources.add(new JsonContainerResourceInstance(resourceInstance));
\r
517 return buildResources;
\r
521 public String getResourceInstanceName() {
\r
522 return resourceInstanceName;
\r
525 public void setResourceInstanceName(String resourceInstanceName) {
\r
526 this.resourceInstanceName = resourceInstanceName;
\r
530 public String getResourceName() {
\r
531 return resourceName;
\r
534 public void setResourceName(String resourceName) {
\r
535 this.resourceName = resourceName;
\r
539 public String getResourceVersion() {
\r
540 return resourceVersion;
\r
543 public void setResourceVersion(String resourceVersion) {
\r
544 this.resourceVersion = resourceVersion;
\r
548 public String getResourceType() {
\r
549 return resoucreType;
\r
552 public void setResoucreType(String resoucreType) {
\r
553 this.resoucreType = resoucreType;
\r
557 public String getResourceUUID() {
\r
558 return resourceUUID;
\r
561 public void setResourceUUID(String resourceUUID) {
\r
562 this.resourceUUID = resourceUUID;
\r
566 public List<IArtifactInfo> getArtifacts() {
\r
567 List<IArtifactInfo> temp = new ArrayList<IArtifactInfo>();
\r
568 if( artifacts != null ){
\r
569 temp.addAll(artifacts);
\r
574 public void setArtifacts(List<ArtifactInfoImpl> artifacts) {
\r
575 this.artifacts = artifacts;
\r
578 public List<ArtifactInfoImpl> getArtifactsImpl(){
\r
583 public String getResourceInvariantUUID() {
\r
584 return resourceInvariantUUID;
\r
587 public void setResourceInvariantUUID(String resourceInvariantUUID) {
\r
588 this.resourceInvariantUUID = resourceInvariantUUID;
\r
590 public String getResourceCustomizationUUID() {
\r
591 return resourceCustomizationUUID;
\r
594 public void setResourceCustomizationUUID(String resourceCustomizationUUID) {
\r
595 this.resourceCustomizationUUID = resourceCustomizationUUID;
\r
598 public String getCategory() {
\r
602 public void setCategory(String category) {
\r
603 this.category = category;
\r
606 public String getSubcategory() {
\r
607 return subcategory;
\r
610 public void setSubcategory(String subcategory) {
\r
611 this.subcategory = subcategory;
\r