SCT-139 Exception info and error codes will be recorded for the task
resolves spring-cloud/spring-cloud-task#139
This commit is contained in:
committed by
Michael Minella
parent
ef1c027146
commit
df14546a7f
@@ -460,7 +460,7 @@ public class DeployerPartitionHandlerTests {
|
||||
validateStepExecutionResults(results);
|
||||
|
||||
assertTrue("Time difference was too small: " + (endTime.getTime() - startTime.getTime()),
|
||||
endTime.getTime() - startTime.getTime() >= 20000);
|
||||
endTime.getTime() - startTime.getTime() >= 19999);
|
||||
}
|
||||
|
||||
@Test(expected = TimeoutException.class)
|
||||
|
||||
@@ -118,6 +118,7 @@ public class TaskLifecycleListener implements ApplicationListener<ApplicationEve
|
||||
public void onApplicationEvent(ApplicationEvent applicationEvent) {
|
||||
if(applicationEvent instanceof ApplicationFailedEvent) {
|
||||
this.applicationFailedEvent = (ApplicationFailedEvent) applicationEvent;
|
||||
doTaskEnd();
|
||||
}
|
||||
else if(applicationEvent instanceof ExitCodeEvent){
|
||||
this.exitCodeEvent = (ExitCodeEvent) applicationEvent;
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
package org.springframework.cloud.task;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration;
|
||||
import org.springframework.boot.builder.SpringApplicationBuilder;
|
||||
import org.springframework.boot.test.OutputCapture;
|
||||
import org.springframework.cloud.task.configuration.EnableTask;
|
||||
import org.springframework.context.ConfigurableApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* Verifies core behavior for Tasks.
|
||||
*
|
||||
* @author Glenn Renfro
|
||||
*/
|
||||
public class TaskCoreTests {
|
||||
|
||||
private static final String TASK_NAME = "taskEventTest";
|
||||
private static final String EXCEPTION_MESSAGE = "FOO EXCEPTION";
|
||||
private static final String CREATE_TASK_MESSAGE = "Creating: TaskExecution{executionId=";
|
||||
private static final String UPDATE_TASK_MESSAGE = "Updating: TaskExecution with executionId=";
|
||||
private static final String SUCCESS_EXIT_CODE_MESSAGE = "with the following {exitCode=0";
|
||||
private static final String EXCEPTION_EXIT_CODE_MESSAGE = "with the following {exitCode=1";
|
||||
private static final String EXIT_MESSAGE =
|
||||
"exitMessage='java.lang.IllegalStateException: Failed to execute CommandLineRunner";
|
||||
|
||||
private ConfigurableApplicationContext applicationContext;
|
||||
|
||||
@Rule
|
||||
public OutputCapture outputCapture = new OutputCapture();
|
||||
|
||||
@After
|
||||
public void teardown() {
|
||||
if (applicationContext != null && applicationContext.isActive()) {
|
||||
applicationContext.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void successfulTaskTest() {
|
||||
applicationContext = new SpringApplicationBuilder().sources(new Object[]{TaskConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class}).build().run(new String[]{
|
||||
"--spring.cloud.task.closecontext.enable=false",
|
||||
"--spring.cloud.task.name=" + TASK_NAME,
|
||||
"--spring.main.web-environment=false"});
|
||||
|
||||
String output = this.outputCapture.toString();
|
||||
assertTrue("Test results do not show create task message: " + output,
|
||||
output.contains(CREATE_TASK_MESSAGE));
|
||||
assertTrue("Test results do not show success message: " + output,
|
||||
output.contains(UPDATE_TASK_MESSAGE));
|
||||
assertTrue("Test results have incorrect exit code: " + output,
|
||||
output.contains(SUCCESS_EXIT_CODE_MESSAGE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void exceptionTaskTest() {
|
||||
boolean exceptionFired = false;
|
||||
try {
|
||||
applicationContext = new SpringApplicationBuilder().sources(new Object[]{TaskExceptionConfiguration.class,
|
||||
PropertyPlaceholderAutoConfiguration.class}).build().run(new String[]{
|
||||
"--spring.cloud.task.closecontext.enable=false",
|
||||
"--spring.cloud.task.name=" + TASK_NAME,
|
||||
"--spring.main.web-environment=false"});
|
||||
}
|
||||
catch (IllegalStateException exception) {
|
||||
exceptionFired = true;
|
||||
}
|
||||
assertTrue("An IllegalStateException should have been thrown", exceptionFired);
|
||||
|
||||
String output = this.outputCapture.toString();
|
||||
assertTrue("Test results do not show create task message: " + output,
|
||||
output.contains(CREATE_TASK_MESSAGE));
|
||||
assertTrue("Test results do not show success message: " + output,
|
||||
output.contains(UPDATE_TASK_MESSAGE));
|
||||
assertTrue("Test results have incorrect exit code: " + output,
|
||||
output.contains(EXCEPTION_EXIT_CODE_MESSAGE));
|
||||
assertTrue("Test results have incorrect exit message: " + output,
|
||||
output.contains(EXIT_MESSAGE));
|
||||
assertTrue("Test results have exception message: " + output,
|
||||
output.contains(EXCEPTION_MESSAGE));
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableTask
|
||||
public static class TaskConfiguration {
|
||||
|
||||
@Bean
|
||||
public CommandLineRunner commandLineRunner() {
|
||||
return new CommandLineRunner() {
|
||||
@Override
|
||||
public void run(String... strings) throws Exception {
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@EnableTask
|
||||
public static class TaskExceptionConfiguration {
|
||||
|
||||
@Bean
|
||||
public CommandLineRunner commandLineRunner() {
|
||||
return new CommandLineRunner() {
|
||||
@Override
|
||||
public void run(String... strings) throws Exception {
|
||||
throw new IllegalStateException(EXCEPTION_MESSAGE);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -100,9 +100,9 @@ public class TaskExecutionListenerTests {
|
||||
RuntimeException exception = new RuntimeException(EXCEPTION_MESSAGE);
|
||||
setupContextForTaskExecutionListener();
|
||||
SpringApplication application = new SpringApplication();
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
DefaultTaskListenerConfiguration.TestTaskExecutionListener taskExecutionListener =
|
||||
context.getBean(DefaultTaskListenerConfiguration.TestTaskExecutionListener.class);
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
context.publishEvent(new ApplicationReadyEvent(application, new String[0], context));
|
||||
|
||||
TaskExecution taskExecution = new TaskExecution(0, 1, "wombat", new Date(),
|
||||
@@ -149,9 +149,9 @@ public class TaskExecutionListenerTests {
|
||||
RuntimeException exception = new RuntimeException(EXCEPTION_MESSAGE);
|
||||
setupContextForAnnotatedListener();
|
||||
SpringApplication application = new SpringApplication();
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
DefaultAnnotationConfiguration.AnnotatedTaskListener annotatedListener =
|
||||
context.getBean(DefaultAnnotationConfiguration.AnnotatedTaskListener.class);
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
context.publishEvent(new ApplicationReadyEvent(application, new String[0], context));
|
||||
|
||||
TaskExecution taskExecution = new TaskExecution(0, 1, "wombat", new Date(),
|
||||
|
||||
@@ -104,8 +104,8 @@ public class TaskLifecycleListenerTests {
|
||||
context.refresh();
|
||||
RuntimeException exception = new RuntimeException("This was expected");
|
||||
SpringApplication application = new SpringApplication();
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
this.taskExplorer = context.getBean(TaskExplorer.class);
|
||||
context.publishEvent(new ApplicationFailedEvent(application, new String[0], context, exception));
|
||||
context.publishEvent(new ApplicationReadyEvent(application, new String[0], context));
|
||||
|
||||
verifyTaskExecution(0, true, 1, exception);
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
logging.level.org.springframework.cloud.task=debug
|
||||
Reference in New Issue
Block a user