// Ensures that the preemptor does not consider a throttled task to be a preemption candidate.
schedulingFilter = createMock(SchedulingFilter.class);
Storage storage = MemStorage.newEmptyStorage();
final ScheduledTask throttled = makeTask(USER_A, JOB_A, TASK_ID_A + "_a1").setStatus(THROTTLED);
throttled.getAssignedTask().getTask().setNumCpus(1).setRamMb(512);
final ScheduledTask pending = makeProductionTask(USER_B, JOB_B, TASK_ID_B + "_p1");
pending.getAssignedTask().getTask().setNumCpus(1).setRamMb(1024);
storage.write(new MutateWork.NoResult.Quiet() {
@Override
protected void execute(MutableStoreProvider store) {
store.getUnsafeTaskStore().saveTasks(ImmutableSet.of(
IScheduledTask.build(pending),
IScheduledTask.build(throttled)));
}
});
clock.advance(PREEMPTION_DELAY);
control.replay();
PreemptorImpl preemptor = new PreemptorImpl(
storage,
stateManager,
offerQueue,
schedulingFilter,
PREEMPTION_DELAY,
clock);
assertEquals(
Optional.<String>absent(),
preemptor.findPreemptionSlotFor(pending.getAssignedTask().getTaskId(), emptyJob));
}