assertEquals(1, messages.getMessages().size());
final FudgeMsgEnvelope readyMsgEnvelope = messages.getMessages().get(0);
messages.clear();
final FudgeDeserializer dcontext = new FudgeDeserializer(s_fudgeContext);
final FudgeSerializer scontext = new FudgeSerializer(s_fudgeContext);
final RemoteCalcNodeMessage readyMessage = dcontext.fudgeMsgToObject(RemoteCalcNodeMessage.class, readyMsgEnvelope.getMessage());
assertTrue(readyMessage instanceof Ready);
conduit.getEnd2 ().getFudgeMessageSender().send (FudgeSerializer.addClassHeader(scontext.objectToFudgeMsg (new Init(0)), Init.class, RemoteCalcNodeMessage.class));
final CalculationJob job1 = createTestCalculationJob();
final CalculationJob job2 = createTestCalculationJob();
AbstractIdentifierMap.convertIdentifiers(identifierMap, job1);
conduit.getEnd2().getFudgeMessageSender().send(FudgeSerializer.addClassHeader(scontext.objectToFudgeMsg(new Execute(job1)), Execute.class, RemoteCalcNodeMessage.class));
conduit.getEnd2().getFudgeMessageSender().send(FudgeSerializer.addClassHeader(scontext.objectToFudgeMsg(new IsAlive(Arrays.asList (job1.getSpecification (), job2.getSpecification ()))), IsAlive.class, RemoteCalcNodeMessage.class));
final FudgeMsgEnvelope resultMsgEnvelope = messages.waitForMessage(TIMEOUT);
assertNotNull(resultMsgEnvelope);
final RemoteCalcNodeMessage failureMessage = dcontext.fudgeMsgToObject(RemoteCalcNodeMessage.class, resultMsgEnvelope.getMessage());
assertTrue(failureMessage instanceof Failure);
final Failure failure = (Failure) failureMessage;
assertEquals(job2.getSpecification(), failure.getJob());
// No more messages - job1 is alive
assertNull (messages.waitForMessage(TIMEOUT));