View Javadoc

1   package com.atlassian.scheduler.core.status;
2   
3   import com.atlassian.scheduler.SchedulerRuntimeException;
4   import com.atlassian.scheduler.config.JobId;
5   import com.atlassian.scheduler.config.JobRunnerKey;
6   import com.atlassian.scheduler.core.JobRunnerNotRegisteredException;
7   import com.atlassian.scheduler.status.JobDetails;
8   import org.junit.Test;
9   
10  import java.io.Serializable;
11  import java.util.Date;
12  import java.util.Map;
13  
14  import static com.atlassian.scheduler.config.RunMode.RUN_LOCALLY;
15  import static com.atlassian.scheduler.config.RunMode.RUN_ONCE_PER_CLUSTER;
16  import static com.atlassian.scheduler.config.Schedule.runOnce;
17  import static com.atlassian.scheduler.core.Constants.JOB_ID;
18  import static com.atlassian.scheduler.core.Constants.KEY;
19  import static org.junit.Assert.assertArrayEquals;
20  import static org.junit.Assert.assertEquals;
21  import static org.junit.Assert.assertFalse;
22  import static org.junit.Assert.assertNull;
23  import static org.junit.Assert.fail;
24  
25  /**
26   * @since v1.0
27   */
28  @SuppressWarnings({"ResultOfObjectAllocationIgnored", "CastToConcreteClass", "ConstantConditions"})
29  public class UnusableJobDetailsTest {
30      private static final byte[] RAW_PARAMETERS = new byte[]{1, 2, 3, 4};
31      private static final Throwable CAUSE = new Throwable("For test");
32  
33      @Test(expected = IllegalArgumentException.class)
34      public void testJobIdNull() {
35          new UnusableJobDetails(null, KEY, RUN_LOCALLY, runOnce(null), new Date(), RAW_PARAMETERS, CAUSE);
36      }
37  
38      @Test(expected = IllegalArgumentException.class)
39      public void testJobRunnerKeyNull() {
40          new UnusableJobDetails(JOB_ID, null, RUN_LOCALLY, runOnce(null), new Date(), RAW_PARAMETERS, CAUSE);
41      }
42  
43      @Test(expected = IllegalArgumentException.class)
44      public void testRunModeNull() {
45          new UnusableJobDetails(JOB_ID, KEY, null, runOnce(null), new Date(), RAW_PARAMETERS, CAUSE);
46      }
47  
48      @Test(expected = IllegalArgumentException.class)
49      public void testScheduleNull() {
50          new UnusableJobDetails(JOB_ID, KEY, RUN_LOCALLY, null, new Date(), RAW_PARAMETERS, CAUSE);
51      }
52  
53      @Test
54      public void testGetParametersWithNoCauseProvided() {
55          final JobDetails jobDetails = new UnusableJobDetails(JOB_ID, KEY, RUN_LOCALLY, runOnce(null), null, null, null);
56          assertNull(((AbstractJobDetails) jobDetails).getRawParameters());
57          try {
58              final Map<String, Serializable> parameters = jobDetails.getParameters();
59              fail("Should throw SchedulerRuntimeException, but got: " + parameters);
60          } catch (SchedulerRuntimeException sre) {
61              final JobRunnerNotRegisteredException cause = (JobRunnerNotRegisteredException) sre.getCause();
62              assertEquals(KEY, cause.getJobRunnerKey());
63          }
64      }
65  
66      @Test
67      public void testGetParametersWithCauseProvided() {
68          final JobDetails jobDetails = new UnusableJobDetails(JOB_ID, KEY, RUN_LOCALLY, runOnce(null), null, RAW_PARAMETERS, CAUSE);
69          assertArrayEquals(RAW_PARAMETERS, ((AbstractJobDetails) jobDetails).getRawParameters());
70          try {
71              final Map<String, Serializable> parameters = jobDetails.getParameters();
72              fail("Should throw SchedulerRuntimeException, but got: " + parameters);
73          } catch (SchedulerRuntimeException sre) {
74              assertEquals(CAUSE, sre.getCause());
75          }
76      }
77  
78      @Test
79      public void testValues1() {
80          final Date nextRunTime = new Date();
81          final Date expectedNextRunTime = new Date(nextRunTime.getTime());
82  
83          final JobDetails jobDetails = new UnusableJobDetails(JOB_ID, KEY, RUN_LOCALLY, runOnce(null), nextRunTime, RAW_PARAMETERS, null);
84          assertEquals(JOB_ID, jobDetails.getJobId());
85          assertEquals(KEY, jobDetails.getJobRunnerKey());
86          assertEquals(RUN_LOCALLY, jobDetails.getRunMode());
87          assertEquals(runOnce(null), jobDetails.getSchedule());
88          assertArrayEquals(RAW_PARAMETERS, ((AbstractJobDetails) jobDetails).getRawParameters());
89          assertFalse("Should not be runnable", jobDetails.isRunnable());
90  
91          nextRunTime.setTime(42L);
92          assertEquals(expectedNextRunTime, jobDetails.getNextRunTime());
93          jobDetails.getNextRunTime().setTime(42L);
94          assertEquals(expectedNextRunTime, jobDetails.getNextRunTime());
95      }
96  
97      @Test
98      public void testValues2() {
99          final JobDetails jobDetails = new UnusableJobDetails(JobId.of("x"), JobRunnerKey.of("z"), RUN_ONCE_PER_CLUSTER,
100                 runOnce(new Date(42L)), null, null, CAUSE);
101         assertEquals(JobId.of("x"), jobDetails.getJobId());
102         assertEquals(JobRunnerKey.of("z"), jobDetails.getJobRunnerKey());
103         assertEquals(RUN_ONCE_PER_CLUSTER, jobDetails.getRunMode());
104         assertEquals(runOnce(new Date(42L)), jobDetails.getSchedule());
105         assertNull(jobDetails.getNextRunTime());
106         assertNull(((AbstractJobDetails) jobDetails).getRawParameters());
107         assertFalse("Should not be runnable", jobDetails.isRunnable());
108     }
109 }