1 package org.onap.vid.job.command;
3 import org.mockito.InjectMocks;
4 import org.mockito.Mock;
5 import org.mockito.MockitoAnnotations;
6 import org.onap.portalsdk.core.service.DataAccessService;
7 import org.onap.vid.job.Job.JobStatus;
8 import org.onap.vid.job.impl.JobDaoImpl;
9 import org.onap.vid.utils.DaoUtils;
10 import org.testng.annotations.BeforeClass;
11 import org.testng.annotations.DataProvider;
12 import org.testng.annotations.Test;
14 import java.util.ArrayList;
15 import java.util.Arrays;
16 import java.util.List;
17 import java.util.UUID;
18 import java.util.stream.Collectors;
20 import static org.mockito.ArgumentMatchers.*;
21 import static org.mockito.Mockito.when;
22 import static org.testng.AssertJUnit.assertEquals;
24 public class WatchChildrenJobsBLTest {
26 private DataAccessService dataAccessService;
29 private WatchChildrenJobsBL watchChildrenJobsBL;
32 public void initMocks() {
33 MockitoAnnotations.initMocks(this);
36 public static Object[][] dataProviderForChildrenStatusOnly() {
37 return new Object[][]{
38 {Arrays.asList(JobStatus.STOPPED, JobStatus.COMPLETED_WITH_NO_ACTION, JobStatus.COMPLETED), JobStatus.COMPLETED_WITH_ERRORS},
39 {Arrays.asList(JobStatus.COMPLETED, JobStatus.FAILED, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED_WITH_ERRORS},
40 {Arrays.asList(null, JobStatus.COMPLETED), JobStatus.COMPLETED_WITH_ERRORS},
41 {Arrays.asList(null, JobStatus.IN_PROGRESS), JobStatus.IN_PROGRESS},
42 {Arrays.asList(null, JobStatus.FAILED), JobStatus.FAILED},
43 {new ArrayList<>(), JobStatus.COMPLETED_WITH_NO_ACTION}
48 public static Object[][] childrenStatusDataProvider() {
50 List<Object[]> result = new ArrayList<>();
51 result.addAll(Arrays.asList(dataProviderForChildrenStatusOnly()));
52 result.addAll(Arrays.asList(inputsStatusAndExpectedOutputDataProvider()));
53 return result.toArray(new Object[result.size()][]);
57 public static Object[][] inputsStatusAndExpectedOutputDataProvider() {
58 return new Object[][]{
59 {Arrays.asList(JobStatus.COMPLETED, JobStatus.COMPLETED), JobStatus.COMPLETED},
60 {Arrays.asList(JobStatus.COMPLETED, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED},
61 {Arrays.asList(JobStatus.FAILED, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.FAILED},
62 {Arrays.asList(JobStatus.FAILED, JobStatus.COMPLETED), JobStatus.COMPLETED_WITH_ERRORS},
63 {Arrays.asList(JobStatus.RESOURCE_IN_PROGRESS, JobStatus.FAILED), JobStatus.IN_PROGRESS},
64 {Arrays.asList(JobStatus.PAUSE, JobStatus.FAILED), JobStatus.IN_PROGRESS},
65 {Arrays.asList(JobStatus.PENDING, JobStatus.FAILED), JobStatus.IN_PROGRESS},
66 {Arrays.asList(JobStatus.IN_PROGRESS, JobStatus.COMPLETED), JobStatus.IN_PROGRESS},
67 {Arrays.asList(JobStatus.IN_PROGRESS, JobStatus.IN_PROGRESS), JobStatus.IN_PROGRESS},
68 {Arrays.asList(JobStatus.COMPLETED, JobStatus.COMPLETED_WITH_ERRORS), JobStatus.COMPLETED_WITH_ERRORS},
69 {Arrays.asList(JobStatus.COMPLETED_WITH_ERRORS, JobStatus.FAILED), JobStatus.COMPLETED_WITH_ERRORS},
70 {Arrays.asList(JobStatus.COMPLETED_WITH_ERRORS, JobStatus.COMPLETED_WITH_ERRORS), JobStatus.COMPLETED_WITH_ERRORS},
71 {Arrays.asList(JobStatus.COMPLETED_WITH_ERRORS, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED_WITH_ERRORS},
72 {Arrays.asList(JobStatus.COMPLETED_WITH_NO_ACTION, JobStatus.COMPLETED_WITH_NO_ACTION), JobStatus.COMPLETED_WITH_NO_ACTION},
78 @Test(dataProvider = "childrenStatusDataProvider")
79 public void whenRetrieveListOfChildrenWithStatues_thenAccumulatedChildrenStatusAsExpected(List<JobStatus> childJobs, JobStatus expectedChildrenJobsStatus) {
80 //init sql result mock
81 List<JobDaoImpl> mockChildren = childJobs.stream().map(st -> {
82 JobDaoImpl job = new JobDaoImpl();
83 job.setUuid(UUID.randomUUID());
86 }).collect(Collectors.toList());
87 when(dataAccessService.getList(eq(JobDaoImpl.class), anyString(), any(), eq(DaoUtils.getPropsMap())))
88 .thenReturn(mockChildren);
90 List<String> uuids = mockChildren.stream().map(job -> job.getUuid().toString()).collect(Collectors.toList());
91 assertEquals(expectedChildrenJobsStatus, watchChildrenJobsBL.retrieveChildrenJobsStatus(uuids));
94 @Test(dataProvider = "inputsStatusAndExpectedOutputDataProvider")
95 public void whenCumulate2JobStatus_thenResultAsExpected(List<JobStatus> jobs, JobStatus expectedChildrenJobsStatus) {
96 assertEquals(expectedChildrenJobsStatus, watchChildrenJobsBL.cumulateJobStatus(jobs.get(0), jobs.get(1)));