@Test public void testTaskAssigned() { expectAnyMaintenanceCalls(); expectOfferDeclineIn(10); IScheduledTask task = makeTask("a", PENDING); TaskInfo mesosTask = makeTaskInfo(task); Capture<Runnable> timeoutCapture = expectTaskGroupBackoff(10); expect(assigner.maybeAssign(OFFER_A, task)).andReturn(Optional.<TaskInfo>absent()); expect(preemptor.findPreemptionSlotFor("a")).andReturn(Optional.<String>absent()); Capture<Runnable> timeoutCapture2 = expectTaskGroupBackoff(10, 20); expect(assigner.maybeAssign(OFFER_A, task)).andReturn(Optional.of(mesosTask)); driver.launchTask(OFFER_A.getId(), mesosTask); Capture<Runnable> timeoutCapture3 = expectTaskGroupBackoff(10); expectTaskGroupBackoff(10, 20); expect(preemptor.findPreemptionSlotFor("b")).andReturn(Optional.<String>absent()); replayAndCreateScheduler(); offerQueue.addOffer(OFFER_A); changeState(task, INIT, PENDING); timeoutCapture.getValue().run(); timeoutCapture2.getValue().run(); // Ensure the offer was consumed. changeState(makeTask("b"), INIT, PENDING); timeoutCapture3.getValue().run(); }
@Test public void testTaskDeleted() { expectAnyMaintenanceCalls(); expectOfferDeclineIn(10); final IScheduledTask task = makeTask("a", PENDING); Capture<Runnable> timeoutCapture = expectTaskGroupBackoff(10); expect(assigner.maybeAssign(OFFER_A, task)).andReturn(Optional.<TaskInfo>absent()); expectTaskGroupBackoff(10, 20); expect(preemptor.findPreemptionSlotFor("a")).andReturn(Optional.<String>absent()); replayAndCreateScheduler(); offerQueue.addOffer(OFFER_A); changeState(task, INIT, PENDING); timeoutCapture.getValue().run(); // Ensure the offer was consumed. changeState(task, INIT, PENDING); storage.write( new MutateWork.NoResult.Quiet() { @Override protected void execute(MutableStoreProvider storeProvider) { storeProvider.getUnsafeTaskStore().deleteTasks(Tasks.ids(task)); } }); taskGroups.tasksDeleted(new TasksDeleted(ImmutableSet.of(task))); timeoutCapture.getValue().run(); }
@Test public void testStorageException() { IScheduledTask task = makeTask("a", PENDING); TaskInfo mesosTask = TaskInfo.newBuilder() .setName(Tasks.id(task)) .setTaskId(TaskID.newBuilder().setValue(Tasks.id(task))) .setSlaveId(SlaveID.newBuilder().setValue("slaveId")) .build(); Capture<Runnable> timeoutCapture = expectTaskGroupBackoff(10); expectAnyMaintenanceCalls(); expectOfferDeclineIn(10); expect(assigner.maybeAssign(OFFER_A, task)).andThrow(new StorageException("Injected failure.")); Capture<Runnable> timeoutCapture2 = expectTaskGroupBackoff(10, 20); expect(preemptor.findPreemptionSlotFor("a")).andReturn(Optional.<String>absent()); expect(assigner.maybeAssign(OFFER_A, task)).andReturn(Optional.of(mesosTask)); driver.launchTask(OFFER_A.getId(), mesosTask); expectLastCall(); replayAndCreateScheduler(); changeState(task, INIT, PENDING); offerQueue.addOffer(OFFER_A); timeoutCapture.getValue().run(); timeoutCapture2.getValue().run(); }
@Test public void testNoOffers() { Capture<Runnable> timeoutCapture = expectTaskGroupBackoff(10); expectTaskGroupBackoff(10, 20); expect(preemptor.findPreemptionSlotFor("a")).andReturn(Optional.<String>absent()); replayAndCreateScheduler(); changeState(makeTask("a"), INIT, PENDING); timeoutCapture.getValue().run(); }
@Test public void testExpiration() { IScheduledTask task = makeTask("a", PENDING); Capture<Runnable> timeoutCapture = expectTaskGroupBackoff(10); Capture<Runnable> offerExpirationCapture = expectOfferDeclineIn(10); expectAnyMaintenanceCalls(); expect(assigner.maybeAssign(OFFER_A, task)).andReturn(Optional.<TaskInfo>absent()); Capture<Runnable> timeoutCapture2 = expectTaskGroupBackoff(10, 20); expect(preemptor.findPreemptionSlotFor("a")).andReturn(Optional.<String>absent()); driver.declineOffer(OFFER_A.getId()); expectTaskGroupBackoff(20, 30); expect(preemptor.findPreemptionSlotFor("a")).andReturn(Optional.<String>absent()); replayAndCreateScheduler(); changeState(task, INIT, PENDING); offerQueue.addOffer(OFFER_A); timeoutCapture.getValue().run(); offerExpirationCapture.getValue().run(); timeoutCapture2.getValue().run(); }