public SingularityCreateResult exitCooldown(SingularityRequest request, long timestamp, Optional<String> user, Optional<String> message) { return activate(request, RequestHistoryType.EXITED_COOLDOWN, timestamp, user, message); }
public SingularityCreateResult unpause(SingularityRequest request, long timestamp, Optional<String> user, Optional<String> message) { return activate(request, RequestHistoryType.UNPAUSED, timestamp, user, message); }
public SingularityCreateResult bounce(SingularityRequest request, long timestamp, Optional<String> user, Optional<String> message) { return activate(request, RequestHistoryType.BOUNCED, timestamp, user, message); }
protected void saveRequest(SingularityRequest request) { requestManager.activate(request, RequestHistoryType.CREATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String> absent()); }
protected void saveAndSchedule(SingularityRequestBuilder bldr) { SingularityRequest build = bldr.build(); requestManager.activate(build, RequestHistoryType.UPDATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String> absent()); requestManager.addToPendingQueue(new SingularityPendingRequest(build.getId(), firstDeployId, System.currentTimeMillis(), Optional.<String> absent(), PendingType.UPDATED_REQUEST, Optional.<Boolean> absent(), Optional.<String> absent())); scheduler.drainPendingQueue(); }
@Test public void testPurgingDoesntApplyIfDatabasePresent() { initRequest(); initFirstDeploy(); requestManager.startDeletingRequest(request, Optional.absent(), user, Optional.<String> absent(), Optional.<String> absent()); requestManager.deleteHistoryParent(requestId); requestManager.activate(request, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3), Optional.<String> absent(), Optional.<String> absent()); configuration.setDatabaseConfiguration(new DataSourceFactory()); configuration.setDeleteStaleRequestsFromZkWhenNoDatabaseAfterHours(1); requestHistoryPersister.runActionOnPoll(); Assert.assertTrue(!requestManager.getRequestHistory(requestId).isEmpty()); }
@Test public void testRequestAgePurging() { initRequest(); configuration.setDeleteStaleRequestsFromZkWhenNoDatabaseAfterHours(7); requestHistoryPersister.runActionOnPoll(); Assert.assertTrue(!requestManager.getRequestHistory(requestId).isEmpty()); requestManager.startDeletingRequest(request, Optional.absent(), user, Optional.<String> absent(), Optional.<String> absent()); requestManager.deleteHistoryParent(requestId); requestManager.activate(request, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3), Optional.<String> absent(), Optional.<String> absent()); requestManager.cooldown(request, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(2)); requestHistoryPersister.runActionOnPoll(); Assert.assertTrue(!requestManager.getRequestHistory(requestId).isEmpty()); configuration.setDeleteStaleRequestsFromZkWhenNoDatabaseAfterHours(1); requestHistoryPersister.runActionOnPoll(); Assert.assertTrue(requestManager.getRequestHistory(requestId).isEmpty()); }
@Test public void itDoesntFlagPendingRequestsForUnderOrOverProvisioning() { initRequest(); initFirstDeploy(); SingularityRequest request = requestResource.getRequest(requestId, singularityUser).getRequest(); requestManager.activate(request.toBuilder().setInstances(Optional.of(0)).build(), RequestHistoryType.UPDATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String> absent()); requestManager.addToPendingQueue(new SingularityPendingRequest(request.getId(), firstDeployId, System.currentTimeMillis(), Optional.<String> absent(), PendingType.ONEOFF, Optional.<Boolean> absent(), Optional.<String> absent())); Assert.assertEquals(0, taskManager.getActiveTaskIds().size()); SingularityState state = stateManager.getState(true, false); Assert.assertEquals(0, state.getOverProvisionedRequests()); Assert.assertEquals(0, state.getUnderProvisionedRequests()); } }
public SingularityCreateResult unpause(SingularityRequest request, long timestamp, Optional<String> user, Optional<String> message) { return activate(request, RequestHistoryType.UNPAUSED, timestamp, user, message); }
public SingularityCreateResult exitCooldown(SingularityRequest request, long timestamp, Optional<String> user, Optional<String> message) { return activate(request, RequestHistoryType.EXITED_COOLDOWN, timestamp, user, message); }
public SingularityCreateResult bounce(SingularityRequest request, long timestamp, Optional<String> user, Optional<String> message) { return activate(request, RequestHistoryType.BOUNCED, timestamp, user, message); }
@Test public void testRequestCountPurging() { final SingularityRequest requestOne = new SingularityRequestBuilder("request1", RequestType.WORKER).build(); final SingularityRequest requestTwo = new SingularityRequestBuilder("request2", RequestType.WORKER).build(); final SingularityRequest requestThree = new SingularityRequestBuilder("request3", RequestType.WORKER).build(); saveRequest(requestOne); saveRequest(requestTwo); saveRequest(requestThree); configuration.setMaxRequestsWithHistoryInZkWhenNoDatabase(Optional.of(2)); configuration.setDeleteStaleRequestsFromZkWhenNoDatabaseAfterHours(7); requestManager.startDeletingRequest(requestOne, Optional.absent(), user, Optional.<String>absent(), Optional.<String>absent()); requestManager.deleteHistoryParent(requestOne.getId()); requestManager.activate(requestOne, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(4), Optional.<String> absent(), Optional.<String> absent()); requestManager.cooldown(requestOne, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3)); requestManager.startDeletingRequest(requestTwo, Optional.absent(), user, Optional.<String>absent(), Optional.<String>absent()); requestManager.deleteHistoryParent(requestTwo.getId()); requestManager.activate(requestTwo, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(4), Optional.<String> absent(), Optional.<String> absent()); requestManager.cooldown(requestTwo, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3)); requestManager.startDeletingRequest(requestThree, Optional.absent(), user, Optional.<String>absent(), Optional.<String>absent()); requestManager.deleteHistoryParent(requestThree.getId()); requestManager.activate(requestThree, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(4), Optional.<String> absent(), Optional.<String> absent()); requestManager.cooldown(requestThree, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3)); Assert.assertEquals(2, requestManager.getRequestHistory(requestOne.getId()).size()); Assert.assertEquals(2, requestManager.getRequestHistory(requestTwo.getId()).size()); Assert.assertEquals(2, requestManager.getRequestHistory(requestThree.getId()).size()); requestHistoryPersister.runActionOnPoll(); Assert.assertEquals(0, requestManager.getRequestHistory(requestOne.getId()).size()); Assert.assertEquals(2, requestManager.getRequestHistory(requestTwo.getId()).size()); Assert.assertEquals(2, requestManager.getRequestHistory(requestThree.getId()).size()); }
@Test public void testLongRunningTaskKills() { initScheduledRequest(); initFirstDeploy(); launchTask(request, firstDeploy, 1, TaskState.TASK_RUNNING); initSecondDeploy(); deployChecker.checkDeploys(); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(!taskManager.getCleanupTasks().isEmpty()); cleaner.drainCleanupQueue(); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(!taskManager.getCleanupTasks().isEmpty()); requestManager.activate(request.toBuilder().setKillOldNonLongRunningTasksAfterMillis(Optional.<Long>of(0L)).build(), RequestHistoryType.CREATED, System.currentTimeMillis(), Optional.<String>absent(), Optional.<String>absent()); cleaner.drainCleanupQueue(); Assert.assertTrue(!taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(taskManager.getCleanupTasks().isEmpty()); }
requestManager.activate( request, RequestHistoryType.UPDATED, requestManager.activate(request, RequestHistoryType.DEPLOYED_TO_UNPAUSE, deployResult.getTimestamp(), pendingDeploy.getDeployMarker().getUser(), Optional.<String> absent()); requestManager.deleteExpiringObject(SingularityExpiringPause.class, request.getId()); } else {
@Test public void testCooldownScalesToInstances() { initRequest(); initFirstDeploy(); configuration.setCooldownAfterFailures(2); configuration.setCooldownAfterPctOfInstancesFail(.51); requestManager.activate(request.toBuilder().setInstances(Optional.of(4)).build(), RequestHistoryType.CREATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String>absent()); SingularityTask task1 = startTask(firstDeploy, 1); SingularityTask task2 = startTask(firstDeploy, 2); SingularityTask task3 = startTask(firstDeploy, 3); SingularityTask task4 = startTask(firstDeploy, 4); statusUpdate(task1, TaskState.TASK_FAILED); statusUpdate(task2, TaskState.TASK_FAILED); statusUpdate(task3, TaskState.TASK_FAILED); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.ACTIVE); task1 = startTask(firstDeploy, 1); task2 = startTask(firstDeploy, 2); task3 = startTask(firstDeploy, 3); statusUpdate(task1, TaskState.TASK_FAILED); statusUpdate(task2, TaskState.TASK_FAILED); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.ACTIVE); statusUpdate(task3, TaskState.TASK_FAILED); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.SYSTEM_COOLDOWN); statusUpdate(task4, TaskState.TASK_FINISHED); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.ACTIVE); }
protected void saveRequest(SingularityRequest request) { requestManager.activate(request, RequestHistoryType.CREATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String> absent()); }
protected void saveAndSchedule(SingularityRequestBuilder bldr) { SingularityRequest build = bldr.build(); requestManager.activate(build, RequestHistoryType.UPDATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String> absent()); requestManager.addToPendingQueue(new SingularityPendingRequest(build.getId(), firstDeployId, System.currentTimeMillis(), Optional.<String> absent(), PendingType.UPDATED_REQUEST, Optional.<Boolean> absent(), Optional.<String> absent())); scheduler.drainPendingQueue(); }
@Test public void testPurgingDoesntApplyIfDatabasePresent() { initRequest(); initFirstDeploy(); requestManager.startDeletingRequest(request, Optional.absent(), user, Optional.<String> absent(), Optional.<String> absent()); requestManager.deleteHistoryParent(requestId); requestManager.activate(request, RequestHistoryType.CREATED, System.currentTimeMillis() - TimeUnit.HOURS.toMillis(3), Optional.<String> absent(), Optional.<String> absent()); configuration.setDatabaseConfiguration(new DataSourceFactory()); configuration.setDeleteStaleRequestsFromZkWhenNoDatabaseAfterHours(1); requestHistoryPersister.runActionOnPoll(); Assert.assertTrue(!requestManager.getRequestHistory(requestId).isEmpty()); }
@Test public void itDoesntFlagPendingRequestsForUnderOrOverProvisioning() { initRequest(); initFirstDeploy(); SingularityRequest request = requestResource.getRequest(requestId, singularityUser).getRequest(); requestManager.activate(request.toBuilder().setInstances(Optional.of(0)).build(), RequestHistoryType.UPDATED, System.currentTimeMillis(), Optional.<String> absent(), Optional.<String> absent()); requestManager.addToPendingQueue(new SingularityPendingRequest(request.getId(), firstDeployId, System.currentTimeMillis(), Optional.<String> absent(), PendingType.ONEOFF, Optional.<Boolean> absent(), Optional.<String> absent())); Assert.assertEquals(0, taskManager.getActiveTaskIds().size()); SingularityState state = stateManager.getState(true, false); Assert.assertEquals(0, state.getOverProvisionedRequests()); Assert.assertEquals(0, state.getUnderProvisionedRequests()); } }
@Test public void testLongRunningTaskKills() { initScheduledRequest(); initFirstDeploy(); launchTask(request, firstDeploy, 1, TaskState.TASK_RUNNING); initSecondDeploy(); deployChecker.checkDeploys(); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(!taskManager.getCleanupTasks().isEmpty()); cleaner.drainCleanupQueue(); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(!taskManager.getCleanupTasks().isEmpty()); requestManager.activate(request.toBuilder().setKillOldNonLongRunningTasksAfterMillis(Optional.<Long>of(0L)).build(), RequestHistoryType.CREATED, System.currentTimeMillis(), Optional.<String>absent(), Optional.<String>absent()); cleaner.drainCleanupQueue(); Assert.assertTrue(!taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(taskManager.getCleanupTasks().isEmpty()); }