diff options
author | Wojciech Sliwka <wojciech.sliwka@nokia.com> | 2018-09-20 12:03:10 +0200 |
---|---|---|
committer | Wojciech Sliwka <wojciech.sliwka@nokia.com> | 2018-10-22 08:42:07 +0200 |
commit | 2ddfc4e81cc399c8ffe5451e19308503a5b08a94 (patch) | |
tree | 1b0031eb29cc538cfa0fb8734c7a1c835ee7cdef /vid-app-common/src/test/java/org/onap/vid/job/impl | |
parent | 2786c4e256e149ad5967f618017de54d5dc5566e (diff) |
new tests for job dir
Add new tests for job directory to increase code coverage in vid
Issue-ID: VID-310
Change-Id: Idbdeb1e9037c2b8c7359cf34b3893e1fc2e858d2
Signed-off-by: Wojciech Sliwka <wojciech.sliwka@nokia.com>
Diffstat (limited to 'vid-app-common/src/test/java/org/onap/vid/job/impl')
-rw-r--r-- | vid-app-common/src/test/java/org/onap/vid/job/impl/JobAdapterImplTest.java | 110 | ||||
-rw-r--r-- | vid-app-common/src/test/java/org/onap/vid/job/impl/JobSchedulerInitializerTest.java | 121 |
2 files changed, 231 insertions, 0 deletions
diff --git a/vid-app-common/src/test/java/org/onap/vid/job/impl/JobAdapterImplTest.java b/vid-app-common/src/test/java/org/onap/vid/job/impl/JobAdapterImplTest.java new file mode 100644 index 00000000..dc2eafc9 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/job/impl/JobAdapterImplTest.java @@ -0,0 +1,110 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2018 Nokia Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.vid.job.impl; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import org.mockito.Mock; +import org.onap.vid.job.Job; +import org.onap.vid.job.JobAdapter; +import org.onap.vid.job.JobType; +import org.onap.vid.model.JobBulk; +import org.onap.vid.model.JobModel; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.List; +import java.util.UUID; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; + +public class JobAdapterImplTest { + + + private static final int SAMPLE_INDEX = 10; + private static final String SAMPLE_USER_ID = "sampleUserId"; + + @Mock + private Job job; + + @Mock + private JobAdapter.AsyncJobRequest asyncJobRequest; + + private UUID sampleUuid=UUID.randomUUID(); + + private JobAdapterImpl jobAdapter = new JobAdapterImpl(); + + @BeforeMethod + public void setUp() { + initMocks(this); + + when(job.getUuid()).thenReturn(sampleUuid); + when(job.getStatus()).thenReturn(Job.JobStatus.IN_PROGRESS); + when(job.getTemplateId()).thenReturn(sampleUuid); + } + + @Test + public void shouldConvertJobToJobModel() { + + + JobModel convertedJob = jobAdapter.toModel(job); + + assertThat(convertedJob.getUuid()).isEqualByComparingTo(sampleUuid); + assertThat(convertedJob.getStatus()).isEqualByComparingTo(Job.JobStatus.IN_PROGRESS); + assertThat(convertedJob.getTemplateId()).isEqualByComparingTo(sampleUuid); + } + + + @Test + public void shouldProperlyCreateJob() { + UUID uuid = UUID.randomUUID(); + + Job createdJob = jobAdapter.createJob(JobType.ServiceInstantiation, asyncJobRequest, uuid, SAMPLE_USER_ID, SAMPLE_INDEX); + + assertThat(createdJob.getStatus()).isEqualByComparingTo(Job.JobStatus.PENDING); + assertThat(createdJob.getTemplateId()).isEqualByComparingTo(uuid); + assertThat(createdJob.getType()).isEqualByComparingTo(JobType.ServiceInstantiation); + assertThat(createdJob.getData()).isEqualTo(ImmutableMap.of("request", asyncJobRequest, "userId", SAMPLE_USER_ID)); + } + + @Test + public void shouldProperlyCreateBulkOfJobs(){ + List<Job> bulkOfJobs = jobAdapter.createBulkOfJobs(ImmutableMap.of("count", 5, "type", JobType.InProgressStatus.name())); + + + assertThat(bulkOfJobs).hasSize(5); + + Stream<Job> jobStream = bulkOfJobs.stream().filter(x -> JobType.InProgressStatus.equals(x.getType()) && Job.JobStatus.PENDING.equals(x.getStatus())); + + assertThat(jobStream).hasSize(5); + } + + + @Test + public void shouldConvertListToBulkJob(){ + JobBulk jobBulk = jobAdapter.toModelBulk(ImmutableList.of(job, job)); + + assertThat(jobBulk.getJobs()).hasSize(2); + } +} diff --git a/vid-app-common/src/test/java/org/onap/vid/job/impl/JobSchedulerInitializerTest.java b/vid-app-common/src/test/java/org/onap/vid/job/impl/JobSchedulerInitializerTest.java new file mode 100644 index 00000000..93afd170 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/job/impl/JobSchedulerInitializerTest.java @@ -0,0 +1,121 @@ +/*- + * ============LICENSE_START======================================================= + * VID + * ================================================================================ + * Copyright (C) 2018 Nokia Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.vid.job.impl; + + +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.onap.vid.job.JobsBrokerService; +import org.onap.vid.job.command.JobCommandFactory; +import org.onap.vid.properties.Features; +import org.quartz.JobDetail; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.Trigger; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; +import org.togglz.core.manager.FeatureManager; + +import java.util.List; +import java.util.stream.Collectors; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; +import static org.mockito.MockitoAnnotations.initMocks; + +public class JobSchedulerInitializerTest { + + @Mock + private JobsBrokerService brokerService; + + @Mock + private SchedulerFactoryBean schedulerFactoryBean; + + @Mock + private FeatureManager featureManager; + + @Mock + private JobCommandFactory commandFactory; + + @Mock + private Scheduler scheduler; + + @InjectMocks + private JobSchedulerInitializer jobSchedulerInitializer; + + @BeforeMethod + public void setUp() { + initMocks(this); + } + + + @Test + public void shouldNotInitializeSchedulerWhenAsyncJobsAreDisabled() { + when(featureManager.isActive(Features.FLAG_ASYNC_JOBS)).thenReturn(false); + + jobSchedulerInitializer.init(); + + verifyZeroInteractions(schedulerFactoryBean); + } + + + @Test + public void shouldInitializeSchedulerWhenAsyncJobsAreEnabled() throws SchedulerException { + ArgumentCaptor<JobDetail> jobDetailArgumentCaptor = ArgumentCaptor.forClass(JobDetail.class); + ArgumentCaptor<Trigger> triggerArgumentCaptor = ArgumentCaptor.forClass(Trigger.class); + when(featureManager.isActive(Features.FLAG_ASYNC_JOBS)).thenReturn(true); + when(schedulerFactoryBean.getScheduler()).thenReturn(scheduler); + + jobSchedulerInitializer.init(); + + verify(scheduler, times(2)).scheduleJob(jobDetailArgumentCaptor.capture(), triggerArgumentCaptor.capture()); + + List<Object> topics = extractTopics(jobDetailArgumentCaptor); + + List<String> descriptions = extractDescription(triggerArgumentCaptor); + + assertThat(topics, containsInAnyOrder(org.onap.vid.job.Job.JobStatus.IN_PROGRESS, org.onap.vid.job.Job.JobStatus.PENDING)); + assertThat(descriptions, containsInAnyOrder("Trigger to run async worker for PENDING", "Trigger to run async worker for IN_PROGRESS")); + } + + private List<Object> extractTopics(ArgumentCaptor<JobDetail> jobDetailArgumentCaptor) { + return jobDetailArgumentCaptor + .getAllValues() + .stream() + .map(JobDetail::getJobDataMap) + .map(x -> x.get("topic")) + .collect(Collectors.toList()); + } + + private List<String> extractDescription(ArgumentCaptor<Trigger> triggerArgumentCaptor) { + return triggerArgumentCaptor + .getAllValues() + .stream() + .map(Trigger::getDescription) + .collect(Collectors.toList()); + } +}
\ No newline at end of file |