use of com.hubspot.singularity.SingularityTaskId in project Singularity by HubSpot.
the class HistoryPersisterTest method testTaskCountPurging.
@Test
public void testTaskCountPurging() {
initLoadBalancedRequest();
initFirstDeploy();
configuration.setMaxStaleTasksPerRequestInZkWhenNoDatabase(Optional.of(2));
final int tasksToLaunch = 10;
final List<SingularityTaskId> taskIds = new ArrayList<>();
for (int i = 0; i < tasksToLaunch; i++) {
final SingularityTask task = launchTask(request, firstDeploy, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3), 1, TaskState.TASK_RUNNING);
statusUpdate(task, TaskState.TASK_FINISHED, Optional.of(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2)));
cleaner.drainCleanupQueue();
taskIds.add(task.getTaskId());
}
final List<SingularityTaskId> tasksBeforePurge = taskManager.getInactiveTaskIdsForDeploy(requestId, firstDeployId);
Assert.assertEquals(taskIds.size(), tasksBeforePurge.size());
Assert.assertTrue(tasksBeforePurge.containsAll(taskIds));
taskHistoryPersister.runActionOnPoll();
final List<SingularityTaskId> tasksAfterPurge = taskManager.getInactiveTaskIdsForDeploy(requestId, firstDeployId);
Assert.assertEquals(configuration.getMaxStaleTasksPerRequestInZkWhenNoDatabase().get().intValue(), tasksAfterPurge.size());
// we should just have the last 2 tasks
Assert.assertTrue(tasksAfterPurge.containsAll(taskIds.subList(tasksToLaunch - 2, tasksToLaunch - 1)));
}
use of com.hubspot.singularity.SingularityTaskId in project Singularity by HubSpot.
the class MesosUtilsTest method testTaskOrdering.
@Test
public void testTaskOrdering() {
final SingularityTaskId taskId = new SingularityTaskId("r", "d", System.currentTimeMillis(), 1, "h", "r");
final Optional<String> msg = Optional.absent();
SingularityTaskHistoryUpdate update1 = new SingularityTaskHistoryUpdate(taskId, 1L, ExtendedTaskState.TASK_LAUNCHED, msg, Optional.<String>absent());
SingularityTaskHistoryUpdate update2 = new SingularityTaskHistoryUpdate(taskId, 2L, ExtendedTaskState.TASK_RUNNING, msg, Optional.<String>absent());
SingularityTaskHistoryUpdate update3 = new SingularityTaskHistoryUpdate(taskId, 2L, ExtendedTaskState.TASK_FAILED, msg, Optional.<String>absent());
List<SingularityTaskHistoryUpdate> list = Arrays.asList(update2, update1, update3);
Collections.sort(list);
Assert.assertTrue(list.get(0).getTaskState() == ExtendedTaskState.TASK_LAUNCHED);
Assert.assertTrue(list.get(1).getTaskState() == ExtendedTaskState.TASK_RUNNING);
Assert.assertTrue(list.get(2).getTaskState() == ExtendedTaskState.TASK_FAILED);
}
use of com.hubspot.singularity.SingularityTaskId in project Singularity by HubSpot.
the class SingularityUsageTest method itTracksOverusedCpuInClusterUtilization.
@Test
public void itTracksOverusedCpuInClusterUtilization() {
initRequest();
double cpuReserved = 2;
double memMbReserved = .0009;
initFirstDeployWithResources(cpuReserved, memMbReserved);
saveAndSchedule(request.toBuilder().setInstances(Optional.of(1)));
resourceOffers(1);
SingularityTaskId taskId = taskManager.getActiveTaskIds().get(0);
String t1 = taskId.getId();
String host = slaveManager.getObjects().get(0).getHost();
// 4 cpus used
MesosTaskMonitorObject t1u1 = getTaskMonitor(t1, 20, getTimestampSeconds(taskId, 5), 1024);
mesosClient.setSlaveResourceUsage(host, Collections.singletonList(t1u1));
usagePoller.runActionOnPoll();
// 4 cpus used
MesosTaskMonitorObject t1u2 = getTaskMonitor(t1, 40, getTimestampSeconds(taskId, 10), 1024);
mesosClient.setSlaveResourceUsage(host, Collections.singletonList(t1u2));
usagePoller.runActionOnPoll();
Assert.assertTrue("Couldn't find cluster utilization", usageManager.getClusterUtilization().isPresent());
SingularityClusterUtilization utilization = usageManager.getClusterUtilization().get();
int taskUsages = usageManager.getTaskUsage(t1).size();
testUtilization(utilization, 2, taskUsages, cpuReserved, memMbReserved, 1, 0, 0, 2, 0, 0, 2, 0, 0, 2, 0, 0);
Assert.assertEquals(requestId, utilization.getMaxOverUtilizedCpuRequestId());
}
use of com.hubspot.singularity.SingularityTaskId in project Singularity by HubSpot.
the class SingularityUsageTest method itDoesntIncludePerfectlyUtilizedRequestsInClusterUtilization.
@Test
public void itDoesntIncludePerfectlyUtilizedRequestsInClusterUtilization() {
initRequest();
double cpuReserved = 2;
double memMbReserved = .001;
initFirstDeployWithResources(cpuReserved, memMbReserved);
saveAndSchedule(request.toBuilder().setInstances(Optional.of(1)));
resourceOffers(1);
SingularityTaskId taskId = taskManager.getActiveTaskIds().get(0);
String t1 = taskId.getId();
String host = slaveManager.getObjects().get(0).getHost();
// 2 cpus used
MesosTaskMonitorObject t1u1 = getTaskMonitor(t1, 10, getTimestampSeconds(taskId, 5), 1024);
mesosClient.setSlaveResourceUsage(host, Collections.singletonList(t1u1));
usagePoller.runActionOnPoll();
// 2 cpus used
MesosTaskMonitorObject t1u2 = getTaskMonitor(t1, 20, getTimestampSeconds(taskId, 10), 900);
mesosClient.setSlaveResourceUsage(host, Collections.singletonList(t1u2));
usagePoller.runActionOnPoll();
Assert.assertTrue("Couldn't find cluster utilization", usageManager.getClusterUtilization().isPresent());
SingularityClusterUtilization utilization = usageManager.getClusterUtilization().get();
int taskUsages = usageManager.getTaskUsage(t1).size();
testUtilization(utilization, 2, taskUsages, cpuReserved, memMbReserved, 0, 0, 1, 0, 0, 86, 0, 0, 86, 0, 0, 86);
Assert.assertEquals(requestId, utilization.getMaxUnderUtilizedMemBytesRequestId());
}
use of com.hubspot.singularity.SingularityTaskId in project Singularity by HubSpot.
the class SingularityUsageTest method testUsageCleaner.
@Test
public void testUsageCleaner() {
initRequest();
initFirstDeploy();
saveAndSchedule(request.toBuilder().setInstances(Optional.of(2)));
resourceOffers(1);
List<SingularityTaskId> taskIds = taskManager.getActiveTaskIds();
String t1 = taskIds.get(0).getId();
String t2 = taskIds.get(1).getId();
String slaveId = slaveManager.getObjectIds().get(0);
String host = slaveManager.getObjects().get(0).getHost();
MesosTaskMonitorObject t1u1 = getTaskMonitor(t1, 2, 5, 100);
MesosTaskMonitorObject t2u1 = getTaskMonitor(t2, 10, 5, 1000);
mesosClient.setSlaveResourceUsage(host, Arrays.asList(t1u1, t2u1));
usagePoller.runActionOnPoll();
cleaner.runActionOnPoll();
Assert.assertEquals(2, usageManager.getTasksWithUsage().size());
Assert.assertEquals(1, usageManager.getSlavesWithUsage().size());
Assert.assertEquals(1100, usageManager.getAllCurrentSlaveUsage().get(0).getMemoryBytesUsed());
// kill task one
statusUpdate(taskManager.getActiveTasks().get(0), TaskState.TASK_KILLED);
killKilledTasks();
cleaner.runActionOnPoll();
Assert.assertEquals(1, usageManager.getTasksWithUsage().size());
Assert.assertEquals(1, usageManager.getSlavesWithUsage().size());
slaveManager.changeState(slaveId, MachineState.DEAD, Optional.absent(), Optional.absent());
cleaner.runActionOnPoll();
Assert.assertEquals(1, usageManager.getTasksWithUsage().size());
Assert.assertEquals(0, usageManager.getSlavesWithUsage().size());
}
Aggregations