@Test
public void testReset() throws Exception
{
final CountDownLatch completionLatch = new CountDownLatch(1);
final Job mockJob = EasyMock.createMock(Job.class);
final Props overrideProps = new Props();
final IndividualJobExecutableFlow executableFlow = new IndividualJobExecutableFlow("blah", "blah", jobManager);
final Props firstProps = new Props();
final Props secondProps = new Props();
EasyMock.expect(jobManager.loadJob("blah", overrideProps, true)).andReturn(mockJob).once();
EasyMock.expect(mockJob.getId()).andReturn("success Job").once();
EasyMock.expect(mockJob.getJobGeneratedProperties()).andReturn(firstProps).once();
mockJob.run();
EasyMock.expectLastCall().andAnswer(new IAnswer<Void>()
{
@Override
public Void answer() throws Throwable
{
Assert.assertEquals(Status.RUNNING, executableFlow.getStatus());
return null;
}
}).once();
EasyMock.replay(mockJob, jobManager);
Assert.assertEquals(Status.READY, executableFlow.getStatus());
executableFlow.execute(
overrideProps,
new FlowCallback()
{
@Override
public void progressMade()
{
assertionViolated.set(true);
reason = String.format("progressMade() shouldn't actually be called.");
}
@Override
public void completed(Status status)
{
completionLatch.countDown();
if (Status.SUCCEEDED != status) {
assertionViolated.set(true);
reason = String.format("In executableFlow Callback: status[%s] != Status.SUCCEEDED", status);
}
}
});
completionLatch.await(1000, TimeUnit.MILLISECONDS);
Assert.assertEquals(Status.SUCCEEDED, executableFlow.getStatus());
Assert.assertEquals(emptyExceptions, executableFlow.getExceptions());
Assert.assertEquals(firstProps, executableFlow.getReturnProps());
EasyMock.verify(mockJob, jobManager);
EasyMock.reset(mockJob, jobManager);
final CountDownLatch completionLatch2 = new CountDownLatch(1);
Assert.assertTrue("Expected to be able to reset the executableFlow.", executableFlow.reset());
Assert.assertEquals(Status.READY, executableFlow.getStatus());
Assert.assertEquals(null, executableFlow.getParentProps());
Assert.assertEquals(null, executableFlow.getReturnProps());
EasyMock.expect(jobManager.loadJob("blah", overrideProps, true)).andReturn(mockJob).once();
EasyMock.expect(mockJob.getId()).andReturn("success Job").once();
EasyMock.expect(mockJob.getJobGeneratedProperties()).andReturn(secondProps).once();
mockJob.run();
EasyMock.expectLastCall().andAnswer(new IAnswer<Void>()
{
@Override
public Void answer() throws Throwable
{