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
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 }