View Javadoc

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   * @since v1.0
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  }