summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/test/java/org/openecomp/sdc/be/components/scheduledtasks/ComponentsCleanBusinessLogicTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/test/java/org/openecomp/sdc/be/components/scheduledtasks/ComponentsCleanBusinessLogicTest.java')
-rw-r--r--catalog-be/src/test/java/org/openecomp/sdc/be/components/scheduledtasks/ComponentsCleanBusinessLogicTest.java161
1 files changed, 161 insertions, 0 deletions
diff --git a/catalog-be/src/test/java/org/openecomp/sdc/be/components/scheduledtasks/ComponentsCleanBusinessLogicTest.java b/catalog-be/src/test/java/org/openecomp/sdc/be/components/scheduledtasks/ComponentsCleanBusinessLogicTest.java
new file mode 100644
index 0000000000..ed74cf6634
--- /dev/null
+++ b/catalog-be/src/test/java/org/openecomp/sdc/be/components/scheduledtasks/ComponentsCleanBusinessLogicTest.java
@@ -0,0 +1,161 @@
+package org.openecomp.sdc.be.components.scheduledtasks;
+
+import com.google.common.collect.Lists;
+import fj.data.Either;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
+import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
+import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
+import org.openecomp.sdc.be.impl.ComponentsUtils;
+import org.openecomp.sdc.be.model.operations.api.IGraphLockOperation;
+import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
+import org.openecomp.sdc.exception.ResponseFormat;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.*;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ComponentsCleanBusinessLogicTest {
+
+ @Mock
+ private ResourceBusinessLogic resourceBusinessLogic;
+ @Mock
+ private ServiceBusinessLogic serviceBusinessLogic;
+ @Mock
+ private IGraphLockOperation graphLockOperation;
+ @Mock
+ private ComponentsUtils componentsUtils;
+
+ @InjectMocks
+ private ComponentsCleanBusinessLogic componentsCleanBL = new ComponentsCleanBusinessLogic();
+
+ @Before
+ public void setUp() {
+ mockResourceDeleting();
+ mockServiceDeleting();
+ }
+
+ @Test
+ public void deleteAll() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.Resource);
+ cleanList.add(NodeTypeEnum.Service);
+ when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
+ eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.OK);
+ componentsCleanBL.cleanComponents(cleanList);
+ verify(resourceBusinessLogic).deleteMarkedComponents();
+ verify(serviceBusinessLogic).deleteMarkedComponents();
+ verify(graphLockOperation).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+ @Test
+ public void deleteResourceWhenOperationAlreadyLocked() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.Resource);
+ componentsCleanBL.cleanComponents(cleanList, true);
+ verify(resourceBusinessLogic).deleteMarkedComponents();
+ verify(graphLockOperation, times(0)).lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any());
+ verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+ @Test
+ public void deleteResource() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.Resource);
+ when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
+ eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.OK);
+ componentsCleanBL.cleanComponents(cleanList);
+ verify(resourceBusinessLogic).deleteMarkedComponents();
+ verify(graphLockOperation).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+ @Test
+ public void deleteServiceWhenOperationAlreadyLocked() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.Service);
+ componentsCleanBL.cleanComponents(cleanList, true);
+ verify(serviceBusinessLogic).deleteMarkedComponents();
+ verify(graphLockOperation, times(0)).lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any());
+ verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+
+ @Test
+ public void deleteResourceIsNotCalledDueToCleanupLock() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+
+ cleanList.add(NodeTypeEnum.Resource);
+ when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
+ eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT);
+ Map<NodeTypeEnum, Either<List<String>, ResponseFormat>> cleanedComponents = componentsCleanBL.cleanComponents(cleanList);
+
+ assertThat(cleanedComponents.get(NodeTypeEnum.Resource)).isNotNull();
+ verify(resourceBusinessLogic, times(0)).deleteMarkedComponents();
+ verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+
+ @Test
+ public void deleteService() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.Service);
+ when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
+ eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.OK);
+ componentsCleanBL.cleanComponents(cleanList);
+ verify(serviceBusinessLogic).deleteMarkedComponents();
+ verify(graphLockOperation).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+ @Test
+ public void deleteServiceIsNotCalledDueToCleanupLock() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.Service);
+ when(graphLockOperation.lockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER),
+ eq(NodeTypeEnum.Component))).thenReturn(StorageOperationStatus.FAILED_TO_LOCK_ELEMENT);
+
+ Map<NodeTypeEnum, Either<List<String>, ResponseFormat>> cleanedComponents = componentsCleanBL.cleanComponents(cleanList);
+
+ assertThat(cleanedComponents.get(NodeTypeEnum.Service)).isNotNull();
+ verify(serviceBusinessLogic, times(0)).deleteMarkedComponents();
+ verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+ @Test
+ public void deleteWrongElement() {
+ List<NodeTypeEnum> cleanList = new ArrayList<>();
+ cleanList.add(NodeTypeEnum.User);
+ componentsCleanBL.cleanComponents(cleanList);
+ verify(resourceBusinessLogic, times(0)).deleteMarkedComponents();
+ verify(serviceBusinessLogic, times(0)).deleteMarkedComponents();
+ verify(graphLockOperation, times(0)).unlockComponentByName(eq(ComponentsCleanBusinessLogic.DELETE_LOCKER), any(),
+ eq(NodeTypeEnum.Component));
+ }
+
+ private void mockResourceDeleting() {
+ when(resourceBusinessLogic.deleteMarkedComponents()).thenReturn(Either.left(Lists.newArrayList()));
+ }
+
+ private void mockServiceDeleting() {
+ when(serviceBusinessLogic.deleteMarkedComponents()).thenReturn(Either.left(Lists.newArrayList()));
+ }
+
+}
+