killTasks = pauseRequest.get().getKillTasks(); message = pauseRequest.get().getMessage(); if (pauseRequest.get().getRunShellCommandBeforeKill().isPresent()) { validator.checkValidShellCommand(pauseRequest.get().getRunShellCommandBeforeKill().get()); runBeforeKill = pauseRequest.get().getRunShellCommandBeforeKill(); if (pauseRequest.get().getDurationMillis().isPresent() && !actionId.isPresent()) { actionId = Optional.of(UUID.randomUUID().toString()); if (pauseRequest.isPresent() && pauseRequest.get().getDurationMillis().isPresent()) { requestManager.saveExpiringObject(new SingularityExpiringPause(requestId, user.getEmail(), System.currentTimeMillis(), pauseRequest.get(), actionId.get()));
@Override public void sendRequestPausedMail(SingularityRequest request, Optional<SingularityPauseRequest> pauseRequest, Optional<String> user) { Map<String, Object> additionalProperties = new HashMap<>(); Boolean killTasks = Boolean.TRUE; Optional<String> message = Optional.absent(); if (pauseRequest.isPresent()) { setupExpireFormat(additionalProperties, pauseRequest.get().getDurationMillis()); if (pauseRequest.get().getKillTasks().isPresent()) { killTasks = pauseRequest.get().getKillTasks().get(); } message = pauseRequest.get().getMessage(); } additionalProperties.put("killTasks", killTasks); sendRequestMail(request, RequestMailType.PAUSED, user, message, Optional.of(additionalProperties)); }
@Test public void testCleanerLeavesPausedRequestTasksByDemand() { initScheduledRequest(); initFirstDeploy(); SingularityTask firstTask = launchTask(request, firstDeploy, 1, TaskState.TASK_RUNNING); createAndSchedulePendingTask(firstDeployId); requestResource.pause(requestId, Optional.of(new SingularityPauseRequest(Optional.of(false), Optional. absent(), Optional. absent(), Optional.absent(), Optional.absent())), singularityUser); cleaner.drainCleanupQueue(); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(taskManager.getPendingTaskIds().isEmpty()); Assert.assertTrue(requestManager.getCleanupRequests().isEmpty()); statusUpdate(firstTask, TaskState.TASK_FINISHED); // make sure something new isn't scheduled! Assert.assertTrue(taskManager.getPendingTaskIds().isEmpty()); }
@Override public void sendRequestPausedMail(SingularityRequest request, Optional<SingularityPauseRequest> pauseRequest, Optional<String> user) { Map<String, Object> additionalProperties = new HashMap<>(); Boolean killTasks = Boolean.TRUE; Optional<String> message = Optional.absent(); if (pauseRequest.isPresent()) { setupExpireFormat(additionalProperties, pauseRequest.get().getDurationMillis()); if (pauseRequest.get().getKillTasks().isPresent()) { killTasks = pauseRequest.get().getKillTasks().get(); } message = pauseRequest.get().getMessage(); } additionalProperties.put("killTasks", killTasks); sendRequestMail(request, RequestMailType.PAUSED, user, message, Optional.of(additionalProperties)); }
@Test public void testExpiringPause() { initRequest(); initFirstDeploy(); SingularityTask taskOne = startTask(firstDeploy); requestResource.pause(requestId, Optional.of(new SingularityPauseRequest(Optional.absent(), Optional.of(1L), Optional.absent(), Optional.absent(), Optional.absent())), singularityUser); cleaner.drainCleanupQueue(); Assert.assertEquals(1, taskManager.getKilledTaskIdRecords().size()); statusUpdate(taskOne, TaskState.TASK_KILLED); resourceOffers(); Assert.assertEquals(0, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, taskManager.getPendingTasks().size()); Assert.assertEquals(RequestState.PAUSED, requestManager.getRequest(requestId).get().getState()); Assert.assertEquals(requestId, requestManager.getPausedRequests(false).iterator().next().getRequest().getId()); try { Thread.sleep(2); } catch (InterruptedException ie){ } expiringUserActionPoller.runActionOnPoll(); resourceOffers(); Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, taskManager.getPendingTasks().size()); Assert.assertEquals(RequestState.ACTIVE, requestManager.getRequest(requestId).get().getState()); Assert.assertEquals(requestId, requestManager.getActiveRequests(false).iterator().next().getRequest().getId()); }
killTasks = pauseRequest.get().getKillTasks(); message = pauseRequest.get().getMessage(); if (pauseRequest.get().getRunShellCommandBeforeKill().isPresent()) { validator.checkValidShellCommand(pauseRequest.get().getRunShellCommandBeforeKill().get()); runBeforeKill = pauseRequest.get().getRunShellCommandBeforeKill(); if (pauseRequest.get().getDurationMillis().isPresent() && !actionId.isPresent()) { actionId = Optional.of(UUID.randomUUID().toString()); if (pauseRequest.isPresent() && pauseRequest.get().getDurationMillis().isPresent()) { requestManager.saveExpiringObject(new SingularityExpiringPause(requestId, user.getEmail(), System.currentTimeMillis(), pauseRequest.get(), actionId.get()));
@Test public void testCleanerLeavesPausedRequestTasksByDemand() { initScheduledRequest(); initFirstDeploy(); SingularityTask firstTask = launchTask(request, firstDeploy, 1, TaskState.TASK_RUNNING); createAndSchedulePendingTask(firstDeployId); requestResource.pause(requestId, Optional.of(new SingularityPauseRequest(Optional.of(false), Optional. absent(), Optional. absent(), Optional.absent(), Optional.absent())), singularityUser); cleaner.drainCleanupQueue(); Assert.assertTrue(taskManager.getKilledTaskIdRecords().isEmpty()); Assert.assertTrue(taskManager.getPendingTaskIds().isEmpty()); Assert.assertTrue(requestManager.getCleanupRequests().isEmpty()); statusUpdate(firstTask, TaskState.TASK_FINISHED); // make sure something new isn't scheduled! Assert.assertTrue(taskManager.getPendingTaskIds().isEmpty()); }
@Test public void testExpiringPause() { initRequest(); initFirstDeploy(); SingularityTask taskOne = startTask(firstDeploy); requestResource.pause(requestId, Optional.of(new SingularityPauseRequest(Optional.absent(), Optional.of(1L), Optional.absent(), Optional.absent(), Optional.absent())), singularityUser); cleaner.drainCleanupQueue(); Assert.assertEquals(1, taskManager.getKilledTaskIdRecords().size()); statusUpdate(taskOne, TaskState.TASK_KILLED); resourceOffers(); Assert.assertEquals(0, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, taskManager.getPendingTasks().size()); Assert.assertEquals(RequestState.PAUSED, requestManager.getRequest(requestId).get().getState()); Assert.assertEquals(requestId, requestManager.getPausedRequests(false).iterator().next().getRequest().getId()); try { Thread.sleep(2); } catch (InterruptedException ie){ } expiringUserActionPoller.runActionOnPoll(); resourceOffers(); Assert.assertEquals(1, taskManager.getActiveTaskIds().size()); Assert.assertEquals(0, taskManager.getPendingTasks().size()); Assert.assertEquals(RequestState.ACTIVE, requestManager.getRequest(requestId).get().getState()); Assert.assertEquals(requestId, requestManager.getActiveRequests(false).iterator().next().getRequest().getId()); }