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;
31 import java.util.List;
32 import org.camunda.bpm.engine.delegate.BpmnError;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.mockito.ArgumentMatchers;
36 import org.mockito.InjectMocks;
37 import org.mockito.Mock;
38 import org.onap.so.bpmn.BaseTaskTest;
39 import org.onap.so.bpmn.common.BuildingBlockExecution;
40 import org.onap.so.bpmn.infrastructure.common.name.generation.AAIObjectInstanceNameGenerator;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
43 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
44 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoInstanceGroup;
45 import org.onap.so.client.aai.entities.AAIEdgeLabel;
46 import org.onap.so.client.exception.BBObjectNotFoundException;
48 public class AssignVnfTest extends BaseTaskTest {
50 private AssignVnf assignVnf = new AssignVnf();
53 private AAIObjectInstanceNameGenerator aaiObjectInstanceNameGenerator = new AAIObjectInstanceNameGenerator();
55 private InstanceGroup instanceGroup1;
56 private InstanceGroup instanceGroup2;
57 private InstanceGroup instanceGroup3;
58 private InstanceGroup instanceGroup4;
59 private GenericVnf genericVnf;
62 public void before() throws BBObjectNotFoundException {
63 ModelInfoInstanceGroup modelVnfc = new ModelInfoInstanceGroup();
64 modelVnfc.setType("VNFC");
65 modelVnfc.setFunction("function");
67 ModelInfoInstanceGroup modelNetworkInstanceGroup = new ModelInfoInstanceGroup();
68 modelNetworkInstanceGroup.setType("L3-NETWORK");
69 modelNetworkInstanceGroup.setFunction("function");
71 instanceGroup1 = new InstanceGroup();
72 instanceGroup1.setId("test-001");
73 instanceGroup1.setModelInfoInstanceGroup(modelVnfc);
75 instanceGroup2 = new InstanceGroup();
76 instanceGroup2.setId("test-002");
77 instanceGroup2.setModelInfoInstanceGroup(modelVnfc);
79 instanceGroup3 = new InstanceGroup();
80 instanceGroup3.setId("test-003");
81 instanceGroup3.setModelInfoInstanceGroup(modelNetworkInstanceGroup);
83 instanceGroup4 = new InstanceGroup();
84 instanceGroup4.setId("test-004");
85 instanceGroup4.setModelInfoInstanceGroup(modelNetworkInstanceGroup);
87 genericVnf = setGenericVnf();
88 genericVnf.setVnfName("vnfName");
91 doNothing().when(aaiInstanceGroupResources).createInstanceGroup(isA(InstanceGroup.class));
92 doNothing().when(aaiInstanceGroupResources).connectInstanceGroupToVnf(isA(InstanceGroup.class),
93 isA(GenericVnf.class));
94 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.GENERIC_VNF_ID)))
95 .thenReturn(genericVnf);
96 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
97 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(Exception.class));
98 doThrow(new BpmnError("BPMN Error")).when(exceptionUtil)
99 .buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(7000), any(String.class));
103 public void createInstanceGroupsSunnyDayTest() throws Exception {
105 List<InstanceGroup> instanceGroupList = genericVnf.getInstanceGroups();
106 instanceGroupList.add(instanceGroup1);
107 instanceGroupList.add(instanceGroup2);
108 instanceGroupList.add(instanceGroup3);
109 instanceGroupList.add(instanceGroup4);
112 assignVnf.createInstanceGroups(execution);
113 verify(aaiInstanceGroupResources, times(1)).createInstanceGroup(instanceGroup1);
114 verify(aaiInstanceGroupResources, times(1)).createInstanceGroup(instanceGroup2);
115 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup1, genericVnf,
116 AAIEdgeLabel.BELONGS_TO);
117 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup2, genericVnf,
118 AAIEdgeLabel.BELONGS_TO);
119 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup3, genericVnf,
121 verify(aaiInstanceGroupResources, times(1)).connectInstanceGroupToVnf(instanceGroup4, genericVnf,
126 public void createVnfcInstanceGroupNoneTest() throws Exception {
127 assignVnf.createInstanceGroups(execution);
130 verify(aaiInstanceGroupResources, times(0)).createInstanceGroup(any(InstanceGroup.class));
131 verify(aaiInstanceGroupResources, times(0)).connectInstanceGroupToVnf(any(InstanceGroup.class),
132 any(GenericVnf.class));
136 public void createVnfcInstanceGroupExceptionTest() throws Exception {
137 List<InstanceGroup> instanceGroupList = genericVnf.getInstanceGroups();
138 instanceGroupList.add(instanceGroup1);
139 instanceGroupList.add(instanceGroup2);
140 instanceGroupList.add(instanceGroup3);
141 instanceGroupList.add(instanceGroup4);
142 doThrow(RuntimeException.class).when(aaiInstanceGroupResources).createInstanceGroup(isA(InstanceGroup.class));
143 expectedException.expect(BpmnError.class);
145 genericVnf.setVnfId("test-999");
146 assignVnf.createInstanceGroups(execution);