2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 - 2018 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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.bpmn.infrastructure.flowspecific.tasks;
23 import static org.mockito.ArgumentMatchers.any;
24 import static org.mockito.ArgumentMatchers.eq;
25 import static org.mockito.ArgumentMatchers.isA;
26 import static org.mockito.Mockito.doNothing;
27 import static org.mockito.Mockito.doThrow;
28 import static org.mockito.Mockito.times;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.when;
32 import java.util.List;
34 import org.camunda.bpm.engine.delegate.BpmnError;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.mockito.ArgumentMatchers;
38 import org.mockito.InjectMocks;
39 import org.mockito.Mock;
40 import org.onap.so.bpmn.BaseTaskTest;
41 import org.onap.so.bpmn.common.BuildingBlockExecution;
42 import org.onap.so.bpmn.infrastructure.common.name.generation.AAIObjectInstanceNameGenerator;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
45 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
46 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoInstanceGroup;
47 import org.onap.so.client.aai.entities.AAIEdgeLabel;
48 import org.onap.so.client.exception.BBObjectNotFoundException;
50 public class AssignVnfTest extends BaseTaskTest {
52 private AssignVnf assignVnf = new AssignVnf();
55 private AAIObjectInstanceNameGenerator aaiObjectInstanceNameGenerator = new AAIObjectInstanceNameGenerator();
57 private InstanceGroup instanceGroup1;
58 private InstanceGroup instanceGroup2;
59 private InstanceGroup instanceGroup3;
60 private InstanceGroup instanceGroup4;
61 private GenericVnf genericVnf;
64 public void before() throws BBObjectNotFoundException {
65 ModelInfoInstanceGroup modelVnfc = new ModelInfoInstanceGroup();
66 modelVnfc.setType("VNFC");
67 modelVnfc.setFunction("function");
69 ModelInfoInstanceGroup modelNetworkInstanceGroup = new ModelInfoInstanceGroup();
70 modelNetworkInstanceGroup.setType("networkInstanceGroup");
71 modelNetworkInstanceGroup.setFunction("function");
73 instanceGroup1 = new InstanceGroup();
74 instanceGroup1.setId("test-001");
75 instanceGroup1.setModelInfoInstanceGroup(modelVnfc);
77 instanceGroup2 = new InstanceGroup();
78 instanceGroup2.setId("test-002");
79 instanceGroup2.setModelInfoInstanceGroup(modelVnfc);
81 instanceGroup3 = new InstanceGroup();
82 instanceGroup3.setId("test-003");
83 instanceGroup3.setModelInfoInstanceGroup(modelNetworkInstanceGroup);
85 instanceGroup4 = new InstanceGroup();
86 instanceGroup4.setId("test-004");
87 instanceGroup4.setModelInfoInstanceGroup(modelNetworkInstanceGroup);
89 genericVnf = setGenericVnf();
90 genericVnf.setVnfName("vnfName");
93 doNothing().when(aaiInstanceGroupResources).createInstanceGroup(isA(InstanceGroup.class));
94 doNothing().when(aaiInstanceGroupResources).connectInstanceGroupToVnf(isA(InstanceGroup.class), isA(GenericVnf.class));
95 when(extractPojosForBB.extractByKey(any(),ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID), any())).thenReturn(genericVnf);
96 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
97 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
101 public void createInstanceGroupsSunnyDayTest() throws Exception {
103 List<InstanceGroup> instanceGroupList = genericVnf.getInstanceGroups();
104 instanceGroupList.add(instanceGroup1);
105 instanceGroupList.add(instanceGroup2);
106 instanceGroupList.add(instanceGroup3);
107 instanceGroupList.add(instanceGroup4);
110 assignVnf.createInstanceGroups(execution);
111 verify(aaiInstanceGroupResources, times(1)).createInstanceGroup(instanceGroup1);
112 verify(aaiInstanceGroupResources, times(1)).createInstanceGroup(instanceGroup2);
113 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup1, genericVnf, AAIEdgeLabel.BELONGS_TO);
114 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup2, genericVnf, AAIEdgeLabel.BELONGS_TO);
115 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup3, genericVnf, AAIEdgeLabel.USES);
116 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup4, genericVnf, AAIEdgeLabel.USES);
120 public void createVnfcInstanceGroupNoneTest() throws Exception {
121 assignVnf.createInstanceGroups(execution);
124 verify(aaiInstanceGroupResources, times(0)).createInstanceGroup(any(InstanceGroup.class));
125 verify(aaiInstanceGroupResources, times(0)).connectInstanceGroupToVnf(any(InstanceGroup.class), any(GenericVnf.class));
129 public void createVnfcInstanceGroupExceptionTest() throws Exception {
130 List<InstanceGroup> instanceGroupList = genericVnf.getInstanceGroups();
131 instanceGroupList.add(instanceGroup1);
132 instanceGroupList.add(instanceGroup2);
133 instanceGroupList.add(instanceGroup3);
134 instanceGroupList.add(instanceGroup4);
135 doThrow(RuntimeException.class).when(aaiInstanceGroupResources).createInstanceGroup(isA(InstanceGroup.class));
136 expectedException.expect(BpmnError.class);
138 genericVnf.setVnfId("test-999");
139 assignVnf.createInstanceGroups(execution);