1 package com.atlassian.scheduler;
2
3 import com.atlassian.scheduler.status.RunDetails;
4 import com.atlassian.scheduler.status.RunOutcome;
5 import org.junit.Test;
6
7 import java.util.concurrent.ExecutionException;
8
9 import static com.atlassian.scheduler.JobRunnerResponse.aborted;
10 import static com.atlassian.scheduler.JobRunnerResponse.failed;
11 import static com.atlassian.scheduler.JobRunnerResponse.success;
12 import static com.atlassian.scheduler.status.RunOutcome.ABORTED;
13 import static com.atlassian.scheduler.status.RunOutcome.FAILED;
14 import static com.atlassian.scheduler.status.RunOutcome.SUCCESS;
15 import static org.hamcrest.Matchers.containsString;
16 import static org.hamcrest.Matchers.equalTo;
17 import static org.junit.Assert.assertThat;
18
19
20
21
22 @SuppressWarnings("ConstantConditions")
23 public class JobRunnerResponseTest {
24 @Test
25 public void testSuccessNoArg() {
26 assertResponse(success(), SUCCESS, null);
27 }
28
29 @Test
30 public void testSuccessMessageNull() {
31 assertResponse(success(null), SUCCESS, null);
32 }
33
34 @Test
35 public void testSuccessMessage() {
36 assertResponse(success("Info"), SUCCESS, "Info");
37 }
38
39 @Test(expected = IllegalArgumentException.class)
40 public void testIgnoredMessageNull() {
41 aborted(null);
42 }
43
44 @Test
45 public void testIgnoredMessage() {
46 assertResponse(aborted("Info"), ABORTED, "Info");
47 }
48
49 @Test(expected = IllegalArgumentException.class)
50 public void testFailedMessageNull() {
51 failed((String) null);
52 }
53
54 @Test
55 public void testFailedMessage() {
56 assertResponse(failed("Info"), FAILED, "Info");
57 }
58
59 @Test(expected = IllegalArgumentException.class)
60 public void testFailedExceptionNull() {
61 failed((Exception) null);
62 }
63
64 @Test
65 public void testFailedExceptionNoChain() {
66 final NullPointerException npe = new NullPointerException();
67 assertResponse(failed(npe), FAILED, "NullPointerException");
68 }
69
70 @Test
71 public void testFailedExceptionShortChain() {
72 final NullPointerException npe = new NullPointerException();
73 final ExecutionException ex = new ExecutionException(npe);
74 assertResponse(failed(ex), FAILED, "ExecutionException: java.lang.NullPointerException\nNullPointerException");
75 }
76
77 @Test
78 public void testFailedExceptionLongChain() {
79 Throwable e = new IllegalArgumentException("The root of all evil");
80 e = new ExecutionException(e.toString(), e);
81 e = new ExecutionException(e.toString(), e);
82 e = new ExecutionException(e.toString(), e);
83
84 final JobRunnerResponse response = failed(e);
85 assertThat(response.getRunOutcome(), equalTo(FAILED));
86 assertThat(response.getMessage(), containsString("ExecutionException"));
87 assertThat(response.getMessage(), containsString("IllegalArgumentException"));
88 assertThat(response.getMessage(), containsString("root"));
89 assertThat(response.getMessage().length(), equalTo(RunDetails.MAXIMUM_MESSAGE_LENGTH));
90 }
91
92 private static void assertResponse(JobRunnerResponse response, RunOutcome expectedOutcome, String expectedMessage) {
93 assertThat(response.getRunOutcome(), equalTo(expectedOutcome));
94 assertThat(response.getMessage(), equalTo(expectedMessage));
95 }
96 }