1 package org.openecomp.sdc.be.components.scheduledtasks;
3 import com.google.common.collect.Lists;
5 import org.junit.Before;
7 import org.junit.runner.RunWith;
8 import org.mockito.InjectMocks;
9 import org.mockito.Mock;
10 import org.mockito.junit.MockitoJUnitRunner;
11 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
12 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
13 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
14 import org.openecomp.sdc.be.impl.ComponentsUtils;
15 import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
16 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
17 import org.openecomp.sdc.exception.ResponseFormat;
19 import java.util.ArrayList;
20 import java.util.List;
23 import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
24 import static org.mockito.ArgumentMatchers.any;
25 import static org.mockito.ArgumentMatchers.eq;
26 import static org.mockito.Mockito.*;
28 @RunWith(MockitoJUnitRunner.class)
29 public class ComponentsCleanBusinessLogicTest {
32 private ResourceBusinessLogic resourceBusinessLogic;
34 private ServiceBusinessLogic serviceBusinessLogic;
36 private IGraphLockOperation graphLockOperation;
38 private ComponentsUtils componentsUtils;
41 private ComponentsCleanBusinessLogic componentsCleanBL = new ComponentsCleanBusinessLogic();
45 mockResourceDeleting();
46 mockServiceDeleting();
50 public void deleteAll() {
51 List<NodeTypeEnum> cleanList = new ArrayList<>();
52 cleanList.add(NodeTypeEnum.Resource);
53 cleanList.add(NodeTypeEnum.Service);
54 when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
55 eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.OK);
56 componentsCleanBL.cleanComponents(cleanList);
57 verify(resourceBusinessLogic).deleteMarkedComponents();
58 verify(serviceBusinessLogic).deleteMarkedComponents();
59 verify(graphLockOperation).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
60 eq(NodeTypeEnum.Component));
64 public void deleteResourceWhenOperationAlreadyLocked() {
65 List<NodeTypeEnum> cleanList = new ArrayList<>();
66 cleanList.add(NodeTypeEnum.Resource);
67 componentsCleanBL.cleanComponents(cleanList, true);
68 verify(resourceBusinessLogic).deleteMarkedComponents();
69 verify(graphLockOperation, times(0)).lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any());
70 verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
71 eq(NodeTypeEnum.Component));
75 public void deleteResource() {
76 List<NodeTypeEnum> cleanList = new ArrayList<>();
77 cleanList.add(NodeTypeEnum.Resource);
78 when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
79 eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.OK);
80 componentsCleanBL.cleanComponents(cleanList);
81 verify(resourceBusinessLogic).deleteMarkedComponents();
82 verify(graphLockOperation).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
83 eq(NodeTypeEnum.Component));
87 public void deleteServiceWhenOperationAlreadyLocked() {
88 List<NodeTypeEnum> cleanList = new ArrayList<>();
89 cleanList.add(NodeTypeEnum.Service);
90 componentsCleanBL.cleanComponents(cleanList, true);
91 verify(serviceBusinessLogic).deleteMarkedComponents();
92 verify(graphLockOperation, times(0)).lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any());
93 verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
94 eq(NodeTypeEnum.Component));
99 public void deleteResourceIsNotCalledDueToCleanupLock() {
100 List<NodeTypeEnum> cleanList = new ArrayList<>();
102 cleanList.add(NodeTypeEnum.Resource);
103 when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
104 eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT);
105 Map<NodeTypeEnum, Either<List<String>, ResponseFormat>> cleanedComponents = componentsCleanBL.cleanComponents(cleanList);
107 assertThat(cleanedComponents.get(NodeTypeEnum.Resource)).isNotNull();
108 verify(resourceBusinessLogic, times(0)).deleteMarkedComponents();
109 verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
110 eq(NodeTypeEnum.Component));
115 public void deleteService() {
116 List<NodeTypeEnum> cleanList = new ArrayList<>();
117 cleanList.add(NodeTypeEnum.Service);
118 when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
119 eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.OK);
120 componentsCleanBL.cleanComponents(cleanList);
121 verify(serviceBusinessLogic).deleteMarkedComponents();
122 verify(graphLockOperation).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
123 eq(NodeTypeEnum.Component));
127 public void deleteServiceIsNotCalledDueToCleanupLock() {
128 List<NodeTypeEnum> cleanList = new ArrayList<>();
129 cleanList.add(NodeTypeEnum.Service);
130 when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
131 eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT);
133 Map<NodeTypeEnum, Either<List<String>, ResponseFormat>> cleanedComponents = componentsCleanBL.cleanComponents(cleanList);
135 assertThat(cleanedComponents.get(NodeTypeEnum.Service)).isNotNull();
136 verify(serviceBusinessLogic, times(0)).deleteMarkedComponents();
137 verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
138 eq(NodeTypeEnum.Component));
142 public void deleteWrongElement() {
143 List<NodeTypeEnum> cleanList = new ArrayList<>();
144 cleanList.add(NodeTypeEnum.User);
145 componentsCleanBL.cleanComponents(cleanList);
146 verify(resourceBusinessLogic, times(0)).deleteMarkedComponents();
147 verify(serviceBusinessLogic, times(0)).deleteMarkedComponents();
148 verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
149 eq(NodeTypeEnum.Component));
152 private void mockResourceDeleting() {
153 when(resourceBusinessLogic.deleteMarkedComponents()).thenReturn(Either.left(Lists.newArrayList()));
156 private void mockServiceDeleting() {
157 when(serviceBusinessLogic.deleteMarkedComponents()).thenReturn(Either.left(Lists.newArrayList()));