View Javadoc

1   package com.atlassian.scheduler.core.status;
2   
3   import com.atlassian.scheduler.config.JobId;
4   import com.atlassian.scheduler.config.JobRunnerKey;
5   import com.atlassian.scheduler.status.JobDetails;
6   import com.google.common.collect.ImmutableMap;
7   import org.junit.Test;
8   
9   import java.io.Serializable;
10  import java.util.Date;
11  import java.util.Map;
12  
13  import static com.atlassian.scheduler.config.RunMode.RUN_LOCALLY;
14  import static com.atlassian.scheduler.config.RunMode.RUN_ONCE_PER_CLUSTER;
15  import static com.atlassian.scheduler.config.Schedule.runOnce;
16  import static com.atlassian.scheduler.core.Constants.JOB_ID;
17  import static com.atlassian.scheduler.core.Constants.KEY;
18  import static org.junit.Assert.assertArrayEquals;
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertNull;
21  import static org.junit.Assert.assertTrue;
22  
23  /**
24   * @since v1.0
25   */
26  @SuppressWarnings({"ResultOfObjectAllocationIgnored", "CastToConcreteClass", "ConstantConditions"})
27  public class SimpleJobDetailsTest {
28      private static final byte[] RAW_PARAMETERS = new byte[]{1, 2, 3, 4};
29      private static final Map<String, Serializable> NO_PARAMETERS = ImmutableMap.of();
30      private static final Map<String, Serializable> PARAMETERS = ImmutableMap.<String, Serializable>builder()
31              .put("Hello", 42L)
32              .put("World", true)
33              .build();
34  
35      @Test(expected = IllegalArgumentException.class)
36      public void testJobIdNull() {
37          new SimpleJobDetails(null, KEY, RUN_LOCALLY, runOnce(null), new Date(), RAW_PARAMETERS, PARAMETERS);
38      }
39  
40      @Test(expected = IllegalArgumentException.class)
41      public void testJobRunnerKeyNull() {
42          new SimpleJobDetails(JOB_ID, null, RUN_LOCALLY, runOnce(null), new Date(), RAW_PARAMETERS, PARAMETERS);
43      }
44  
45      @Test(expected = IllegalArgumentException.class)
46      public void testRunModeNull() {
47          new SimpleJobDetails(JOB_ID, KEY, null, runOnce(null), new Date(), RAW_PARAMETERS, PARAMETERS);
48      }
49  
50      @Test(expected = IllegalArgumentException.class)
51      public void testScheduleNull() {
52          new SimpleJobDetails(JOB_ID, KEY, RUN_LOCALLY, null, new Date(), RAW_PARAMETERS, PARAMETERS);
53      }
54  
55      @Test
56      public void testValues1() {
57          final Date nextRunTime = new Date();
58          final Date expectedNextRunTime = new Date(nextRunTime.getTime());
59          final JobDetails jobDetails = new SimpleJobDetails(JOB_ID, KEY, RUN_LOCALLY, runOnce(null), nextRunTime, null, null);
60  
61          assertEquals(JOB_ID, jobDetails.getJobId());
62          assertEquals(KEY, jobDetails.getJobRunnerKey());
63          assertEquals(RUN_LOCALLY, jobDetails.getRunMode());
64          assertEquals(runOnce(null), jobDetails.getSchedule());
65          assertEquals(NO_PARAMETERS, jobDetails.getParameters());
66          assertNull(((AbstractJobDetails) jobDetails).getRawParameters());
67          assertTrue("Should be runnable", jobDetails.isRunnable());
68  
69          nextRunTime.setTime(42L);
70          assertEquals(expectedNextRunTime, jobDetails.getNextRunTime());
71          jobDetails.getNextRunTime().setTime(42L);
72          assertEquals(expectedNextRunTime, jobDetails.getNextRunTime());
73      }
74  
75      @Test
76      public void testValues2() {
77          final JobDetails jobDetails = new SimpleJobDetails(JobId.of("x"), JobRunnerKey.of("z"), RUN_ONCE_PER_CLUSTER,
78                  runOnce(new Date(42L)), null, RAW_PARAMETERS, PARAMETERS);
79          assertEquals(JobId.of("x"), jobDetails.getJobId());
80          assertEquals(JobRunnerKey.of("z"), jobDetails.getJobRunnerKey());
81          assertEquals(RUN_ONCE_PER_CLUSTER, jobDetails.getRunMode());
82          assertEquals(runOnce(new Date(42L)), jobDetails.getSchedule());
83          assertNull(jobDetails.getNextRunTime());
84          assertArrayEquals(RAW_PARAMETERS, ((AbstractJobDetails) jobDetails).getRawParameters());
85          assertEquals(PARAMETERS, jobDetails.getParameters());
86          assertTrue("Should be runnable", jobDetails.isRunnable());
87      }
88  }