View Javadoc

1   package com.atlassian.scheduler.core.status;
2   
3   import com.atlassian.scheduler.JobRunner;
4   import com.atlassian.scheduler.config.JobId;
5   import com.atlassian.scheduler.config.JobRunnerKey;
6   import com.atlassian.scheduler.core.AbstractSchedulerService;
7   import com.atlassian.scheduler.core.util.ParameterMapSerializer;
8   import com.atlassian.scheduler.status.JobDetails;
9   import org.junit.Before;
10  import org.junit.Rule;
11  import org.junit.Test;
12  import org.mockito.Mock;
13  import org.mockito.junit.MockitoJUnit;
14  import org.mockito.junit.MockitoRule;
15  
16  import java.util.Date;
17  
18  import static com.atlassian.scheduler.config.RunMode.RUN_LOCALLY;
19  import static com.atlassian.scheduler.config.RunMode.RUN_ONCE_PER_CLUSTER;
20  import static com.atlassian.scheduler.config.Schedule.runOnce;
21  import static com.atlassian.scheduler.core.Constants.BYTES_DEADF00D;
22  import static com.atlassian.scheduler.core.Constants.BYTES_PARAMETERS;
23  import static com.atlassian.scheduler.core.Constants.EMPTY_MAP;
24  import static com.atlassian.scheduler.core.Constants.JOB_ID;
25  import static com.atlassian.scheduler.core.Constants.KEY;
26  import static org.junit.Assert.assertEquals;
27  import static org.junit.Assert.assertFalse;
28  import static org.junit.Assert.assertNull;
29  import static org.junit.Assert.assertTrue;
30  import static org.mockito.Mockito.mock;
31  import static org.mockito.Mockito.when;
32  
33  /**
34   * @since v1.0
35   */
36  @SuppressWarnings({"ConstantConditions", "ResultOfObjectAllocationIgnored"})
37  public class LazyJobDetailsTest {
38      @Rule
39      public MockitoRule mockitoRule = MockitoJUnit.rule();
40  
41      @Mock
42      private AbstractSchedulerService schedulerService;
43  
44      @Before
45      public void setUp() {
46          when(schedulerService.getParameterMapSerializer()).thenReturn(new ParameterMapSerializer());
47      }
48  
49      @Test(expected = IllegalArgumentException.class)
50      public void testSchedulerServiceNull() {
51          new LazyJobDetails(null, JOB_ID, KEY, RUN_LOCALLY, runOnce(null), new Date(), BYTES_PARAMETERS);
52      }
53  
54      @Test(expected = IllegalArgumentException.class)
55      public void testJobIdNull() {
56          new LazyJobDetails(schedulerService, null, KEY, RUN_LOCALLY, runOnce(null), new Date(), BYTES_PARAMETERS);
57      }
58  
59      @Test(expected = IllegalArgumentException.class)
60      public void testJobRunnerKeyNull() {
61          new LazyJobDetails(schedulerService, JOB_ID, null, RUN_LOCALLY, runOnce(null), new Date(), BYTES_PARAMETERS);
62      }
63  
64      @Test(expected = IllegalArgumentException.class)
65      public void testRunModeNull() {
66          new LazyJobDetails(schedulerService, JOB_ID, KEY, null, runOnce(null), new Date(), BYTES_PARAMETERS);
67      }
68  
69      @Test(expected = IllegalArgumentException.class)
70      public void testScheduleNull() {
71          new LazyJobDetails(schedulerService, JOB_ID, KEY, RUN_LOCALLY, null, new Date(), BYTES_PARAMETERS);
72      }
73  
74      @Test
75      public void testValues1() {
76          final Date nextRunTime = new Date();
77          final Date expectedNextRunTime = new Date(nextRunTime.getTime());
78  
79          when(schedulerService.getJobRunner(KEY)).thenReturn(mock(JobRunner.class));
80  
81          final JobDetails jobDetails = new LazyJobDetails(schedulerService, JOB_ID, KEY, RUN_LOCALLY, runOnce(null),
82                  nextRunTime, null);
83  
84          assertEquals(JOB_ID, jobDetails.getJobId());
85          assertEquals(KEY, jobDetails.getJobRunnerKey());
86          assertEquals(RUN_LOCALLY, jobDetails.getRunMode());
87          assertEquals(runOnce(null), jobDetails.getSchedule());
88  
89          assertTrue("Should be runnable", jobDetails.isRunnable());
90          assertEquals(EMPTY_MAP, jobDetails.getParameters());
91  
92          nextRunTime.setTime(42L);
93          assertEquals(expectedNextRunTime, jobDetails.getNextRunTime());
94          jobDetails.getNextRunTime().setTime(42L);
95          assertEquals(expectedNextRunTime, jobDetails.getNextRunTime());
96      }
97  
98      @Test
99      public void testValues2() {
100         when(schedulerService.getJobRunner(JobRunnerKey.of("z"))).thenReturn(mock(JobRunner.class));
101 
102         final JobDetails jobDetails = new LazyJobDetails(schedulerService, JobId.of("x"), JobRunnerKey.of("z"),
103                 RUN_ONCE_PER_CLUSTER, runOnce(new Date(42L)), null, BYTES_DEADF00D);
104 
105         assertEquals(JobId.of("x"), jobDetails.getJobId());
106         assertEquals(JobRunnerKey.of("z"), jobDetails.getJobRunnerKey());
107         assertEquals(RUN_ONCE_PER_CLUSTER, jobDetails.getRunMode());
108         assertEquals(runOnce(new Date(42L)), jobDetails.getSchedule());
109         assertNull(jobDetails.getNextRunTime());
110 
111         assertFalse("Should not be runnable", jobDetails.isRunnable());
112     }
113 }