package com.hubspot.singularity.data; import org.apache.mesos.Protos.TaskState; import org.junit.Assert; import org.junit.Test; import com.google.common.base.Optional; import com.google.inject.Inject; import com.hubspot.singularity.SingularityRequest; import com.hubspot.singularity.SingularityTask; import com.hubspot.singularity.SingularityTaskCleanup; import com.hubspot.singularity.TaskCleanupType; import com.hubspot.singularity.scheduler.SingularitySchedulerTestBase; public class StateManagerTest extends SingularitySchedulerTestBase{ protected SingularityRequest request; @Inject private StateManager stateManager; public StateManagerTest() { super(false); } @Test public void itDoesntCountCleaningTasks() { initRequest(); initFirstDeploy(); SingularityRequest request = requestResource.getRequest(requestId).getRequest(); saveAndSchedule(request.toBuilder().setInstances(Optional.of(3))); resourceOffers(); Assert.assertEquals(3, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, stateManager.getState(true, false).getOverProvisionedRequests()); Assert.assertEquals(0, stateManager.getState(true, false).getUnderProvisionedRequests()); SingularityTask task = taskManager.getActiveTasks().get(0); statusUpdate(task, TaskState.TASK_KILLED); taskManager.createTaskCleanup(new SingularityTaskCleanup(Optional.absent(), TaskCleanupType.BOUNCING, 1L, task.getTaskId(), Optional.absent(), Optional.absent(), Optional.absent())); Assert.assertEquals(2, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, stateManager.getState(true, false).getOverProvisionedRequests()); Assert.assertEquals(1, stateManager.getState(true, false).getUnderProvisionedRequests()); launchTask(request, firstDeploy, 4, TaskState.TASK_RUNNING); launchTask(request, firstDeploy, 5, TaskState.TASK_RUNNING); Assert.assertEquals(4, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, stateManager.getState(true, false).getUnderProvisionedRequests()); Assert.assertEquals(1, stateManager.getState(true, false).getOverProvisionedRequests()); } }