2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.so.bpmn.infrastructure.adapter.vnfm.tasks;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.mockito.ArgumentMatchers.any;
28 import static org.mockito.ArgumentMatchers.anyString;
29 import static org.mockito.ArgumentMatchers.eq;
30 import static org.mockito.Mockito.times;
31 import static org.mockito.Mockito.verify;
32 import static org.mockito.Mockito.when;
33 import java.util.UUID;
34 import org.junit.Test;
35 import org.mockito.Mock;
36 import org.mockito.Mockito;
37 import org.onap.etsi.sol003.adapter.lcm.v1.model.CreateVnfResponse;
38 import org.onap.etsi.sol003.adapter.lcm.v1.model.OperationStateEnum;
39 import org.onap.etsi.sol003.adapter.lcm.v1.model.OperationStatusRetrievalStatusEnum;
40 import org.onap.etsi.sol003.adapter.lcm.v1.model.QueryJobResponse;
41 import org.onap.so.bpmn.BaseTaskTest;
42 import org.onap.so.bpmn.common.BuildingBlockExecution;
43 import com.google.common.base.Optional;
47 * @author Lathishbabu Ganesan (lathishbabu.ganesan@est.tech)
50 public class MonitorVnfmCreateJobTaskTest extends BaseTaskTest {
52 private static final String JOB_ID = UUID.randomUUID().toString();
55 private VnfmAdapterServiceProvider mockedVnfmAdapterServiceProvider;
57 private final BuildingBlockExecution stubbedxecution = new StubbedBuildingBlockExecution();
60 public void testGetCurrentOperationStatus() throws Exception {
61 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
62 stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
63 Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
64 queryJobResponse.get().setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
65 queryJobResponse.get().setOperationState(OperationStateEnum.COMPLETED);
66 when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
67 objUnderTest.getCurrentOperationStatus(stubbedxecution);
68 final Optional<OperationStateEnum> operationState =
69 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
70 assertNotNull(operationState);
71 assertEquals(OperationStateEnum.COMPLETED, operationState.get());
75 public void testGetCurrentOperationStatusFailed() throws Exception {
76 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
77 stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
78 Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
79 queryJobResponse.get()
80 .setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.CANNOT_RETRIEVE_STATUS);
81 queryJobResponse.get().setOperationState(OperationStateEnum.FAILED);
82 when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
83 objUnderTest.getCurrentOperationStatus(stubbedxecution);
84 final Optional<OperationStateEnum> operationState =
85 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
86 assertNotNull(operationState);
87 assertEquals(OperationStateEnum.FAILED, operationState.get());
91 public void testGetCurrentOperationStatusEmpty() throws Exception {
92 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
93 stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
94 Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
95 queryJobResponse.get().setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
96 when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
97 objUnderTest.getCurrentOperationStatus(stubbedxecution);
98 final Optional<OperationStateEnum> operationState =
99 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
100 assertFalse(operationState.isPresent());
104 public void testGetCurrentOperationStatusException() throws Exception {
105 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
106 stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
107 Optional<QueryJobResponse> queryJobResponse = getQueryJobResponse();
108 queryJobResponse.get().setOperationStatusRetrievalStatus(OperationStatusRetrievalStatusEnum.STATUS_FOUND);
109 when(mockedVnfmAdapterServiceProvider.getInstantiateOperationJobStatus(JOB_ID)).thenReturn(queryJobResponse);
110 objUnderTest.getCurrentOperationStatus(stubbedxecution);
111 final Optional<OperationStateEnum> operationState =
112 stubbedxecution.getVariable(Constants.OPERATION_STATUS_PARAM_NAME);
113 assertFalse(operationState.isPresent());
117 public void testHasOperationFinished() throws Exception {
118 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
119 stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.of(OperationStateEnum.COMPLETED));
120 assertTrue(objUnderTest.hasOperationFinished(stubbedxecution));
124 public void testHasOperationPending() throws Exception {
125 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
126 stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.absent());
127 assertFalse(objUnderTest.hasOperationFinished(stubbedxecution));
131 public void testTimeOutLogFailue() throws Exception {
132 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
133 objUnderTest.timeOutLogFailue(stubbedxecution);
134 verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1205),
135 eq("Instantiation operation time out"));
139 public void testCheckIfOperationWasSuccessful() throws Exception {
140 stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.of(OperationStateEnum.COMPLETED));
141 MonitorVnfmCreateJobTask objUnderTest = Mockito.spy(getEtsiVnfMonitorJobTask());
142 objUnderTest.checkIfOperationWasSuccessful(stubbedxecution);
143 verify(objUnderTest, times(1)).checkIfOperationWasSuccessful(stubbedxecution);
147 public void testCheckIfOperationWasSuccessfulWithPending() throws Exception {
148 final MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
149 stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.of(OperationStateEnum.PROCESSING));
150 objUnderTest.checkIfOperationWasSuccessful(stubbedxecution);
151 verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1207), anyString());
155 public void testCheckIfOperationWasSuccessfulEmpty() throws Exception {
156 MonitorVnfmCreateJobTask objUnderTest = getEtsiVnfMonitorJobTask();
157 stubbedxecution.setVariable(Constants.CREATE_VNF_RESPONSE_PARAM_NAME, getCreateVnfResponse());
158 stubbedxecution.setVariable(Constants.OPERATION_STATUS_PARAM_NAME, Optional.absent());
159 objUnderTest.checkIfOperationWasSuccessful(stubbedxecution);
160 verify(exceptionUtil).buildAndThrowWorkflowException(any(BuildingBlockExecution.class), eq(1206), anyString());
163 private CreateVnfResponse getCreateVnfResponse() {
164 final CreateVnfResponse response = new CreateVnfResponse();
165 response.setJobId(JOB_ID);
169 private Optional<QueryJobResponse> getQueryJobResponse() {
170 final QueryJobResponse queryJobResponse = new QueryJobResponse();
171 queryJobResponse.setId(JOB_ID);
172 return Optional.of(queryJobResponse);
175 private MonitorVnfmCreateJobTask getEtsiVnfMonitorJobTask() {
176 return new MonitorVnfmCreateJobTask(mockedVnfmAdapterServiceProvider, exceptionUtil);