package net.sf.appstatus.batch;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.util.UUID;
import net.sf.appstatus.core.AppStatusStatic;
import net.sf.appstatus.core.batch.AbstractBatchProgressMonitor;
import net.sf.appstatus.core.batch.IBatchProgressMonitor;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Test the failed feature.
*/
public class NullPointerWhenStepFailedTest {
private final Logger logger = LoggerFactory.getLogger(NullPointerWhenStepFailedTest.class);
private AbstractBatchProgressMonitor monitor;
private void step1(IBatchProgressMonitor stepMonitor) throws Exception {
stepMonitor.setLogger(this.logger);
stepMonitor.beginTask("step1", "Do the step 1", 1);
Thread.sleep(1000);
stepMonitor.fail("Test fail feature");
}
@Test
public void testBasicScenario() throws Exception {
String uuid = UUID.randomUUID().toString();
IBatchProgressMonitor m = AppStatusStatic.getInstance().getBatchProgressMonitor("Batch name", "Batch group",
uuid);
m.setLogger(this.logger);
// Before first task
m.message("Test message");
m.setCurrentItem("");
assertThat(((AbstractBatchProgressMonitor) m).getProgress(), is(-1f));
assertThat(AppStatusStatic.getInstance().getBatchManager().getRunningBatches().get(0).getProgressStatus(),
is(-1f));
// Task 1
m.beginTask("Task 1 name", "Task 1 description ", 4);
assertThat(((AbstractBatchProgressMonitor) m).getProgress(), is(0f));
assertThat(AppStatusStatic.getInstance().getBatchManager().getRunningBatches().get(0).getProgressStatus(),
is(0f));
m.worked(1);
assertThat(((AbstractBatchProgressMonitor) m).getProgress(), is(1f));
assertThat(AppStatusStatic.getInstance().getBatchManager().getRunningBatches().get(0).getProgressStatus(),
is(25f));
m.message("Test message");
m.reject("rejected1", "for testing");
assertThat(((AbstractBatchProgressMonitor) m).getRejectedItems().size(), is(1));
assertThat(AppStatusStatic.getInstance().getBatchManager().getRunningBatches().get(0).getProgressStatus(),
is(25f));
IBatchProgressMonitor m1 = m.createSubTask(3);
m1.beginTask("Sub task 1", "Sub task 1 description", 1);
m1.worked(1);
m1.done();
assertThat(((AbstractBatchProgressMonitor) m).getProgress(), is(4f));
assertThat(AppStatusStatic.getInstance().getBatchManager().getRunningBatches().get(0).getProgressStatus(),
is(100f));
m.done();
assertThat(((AbstractBatchProgressMonitor) m).isSuccess(), is(true));
assertThat(((AbstractBatchProgressMonitor) m).getProgress(), is(4f));
}
@Test
public void testMonitorIsNotSuccessfulWhenAJobFailed() throws Exception {
IBatchProgressMonitor jobMonitor = AppStatusStatic.getInstance().getBatchProgressMonitor("test", "test", "1");
this.monitor = (AbstractBatchProgressMonitor) jobMonitor;
jobMonitor.setLogger(this.logger);
jobMonitor.beginTask("job", "Do the job", 1);
jobMonitor.fail("Test fail feature");
assertThat(this.monitor.isSuccess(), is(false));
}
@Test
public void testMonitorIsNotSuccessfulWhenAStepFailed() throws Exception {
IBatchProgressMonitor jobMonitor = AppStatusStatic.getInstance().getBatchProgressMonitor("test", "test", "1");
this.monitor = (AbstractBatchProgressMonitor) jobMonitor;
jobMonitor.setLogger(this.logger);
jobMonitor.beginTask("job", "Do the job", 1);
step1(jobMonitor.createSubTask(1));
assertThat(this.monitor.isSuccess(), is(false));
}
}