@Test public void testChangingMaintenancePreferences() { expectOffer(); expect(maintenance.getMode("HOST_A")).andReturn(MaintenanceMode.NONE); expectOffer(); expect(maintenance.getMode("HOST_B")).andReturn(MaintenanceMode.SCHEDULED); expectOffer(); expect(maintenance.getMode("HOST_C")).andReturn(MaintenanceMode.DRAINED); IScheduledTask taskA = makeTask("A", PENDING); TaskInfo mesosTaskA = makeTaskInfo(taskA); expect(assigner.maybeAssign(OFFER_B, taskA)).andReturn(Optional.of(mesosTaskA)); driver.launchTask(OFFER_B.getId(), mesosTaskA); Capture<Runnable> captureA = expectTaskGroupBackoff(10); IScheduledTask taskB = makeTask("B", PENDING); TaskInfo mesosTaskB = makeTaskInfo(taskB); expect(assigner.maybeAssign(OFFER_C, taskB)).andReturn(Optional.of(mesosTaskB)); driver.launchTask(OFFER_C.getId(), mesosTaskB); Capture<Runnable> captureB = expectTaskGroupBackoff(10); replayAndCreateScheduler(); offerQueue.addOffer(OFFER_A); offerQueue.addOffer(OFFER_B); offerQueue.addOffer(OFFER_C); // Initially, we'd expect the offers to be consumed in order (A, B), with (C) unschedulable // Expected order now (B), with (C, A) unschedulable changeHostMaintenanceState("HOST_A", MaintenanceMode.DRAINING); changeState(taskA, INIT, PENDING); captureA.getValue().run(); // Expected order now (C), with (A) unschedulable and (B) already consumed changeHostMaintenanceState("HOST_C", MaintenanceMode.NONE); changeState(taskB, INIT, PENDING); captureB.getValue().run(); }
@Test public void testBasicMaintenancePreferences() { expectOffer(); expect(maintenance.getMode("HOST_D")).andReturn(MaintenanceMode.DRAINED); expectOffer(); expect(maintenance.getMode("HOST_C")).andReturn(MaintenanceMode.DRAINING); expectOffer(); expect(maintenance.getMode("HOST_B")).andReturn(MaintenanceMode.SCHEDULED); expectOffer(); expect(maintenance.getMode("HOST_A")).andReturn(MaintenanceMode.NONE); IScheduledTask taskA = makeTask("A", PENDING); TaskInfo mesosTaskA = makeTaskInfo(taskA); expect(assigner.maybeAssign(OFFER_A, taskA)).andReturn(Optional.of(mesosTaskA)); driver.launchTask(OFFER_A.getId(), mesosTaskA); Capture<Runnable> captureA = expectTaskGroupBackoff(10); IScheduledTask taskB = makeTask("B", PENDING); TaskInfo mesosTaskB = makeTaskInfo(taskB); expect(assigner.maybeAssign(OFFER_B, taskB)).andReturn(Optional.of(mesosTaskB)); driver.launchTask(OFFER_B.getId(), mesosTaskB); Capture<Runnable> captureB = expectTaskGroupBackoff(10); replayAndCreateScheduler(); offerQueue.addOffer(OFFER_D); offerQueue.addOffer(OFFER_C); offerQueue.addOffer(OFFER_B); offerQueue.addOffer(OFFER_A); changeState(taskA, INIT, PENDING); captureA.getValue().run(); changeState(taskB, INIT, PENDING); captureB.getValue().run(); }
private void expectAnyMaintenanceCalls() { expect(maintenance.getMode(isA(String.class))).andReturn(MaintenanceMode.NONE).anyTimes(); }