protected void initRequestWithType(RequestType requestType, boolean isLoadBalanced) { SingularityRequestBuilder bldr = new SingularityRequestBuilder(requestId, requestType); bldr.setLoadBalanced(Optional.of(isLoadBalanced)); if (requestType == RequestType.SCHEDULED) { bldr.setQuartzSchedule(Optional.of(schedule)); } request = bldr.build(); saveRequest(request); }
SingularityRequest newRequest = requestWithState.getRequest().toBuilder().setQuartzSchedule(Optional.of(newQuartzSchedule)).build();
@Test(expected = WebApplicationException.class) public void testInvalidQuartzTimeZoneErrors() { SingularityRequest req = new SingularityRequestBuilder(requestId, RequestType.SCHEDULED) .setQuartzSchedule(Optional.of("*/1 * * * * ? 2020")) .setScheduleType(Optional.of(ScheduleType.QUARTZ)) .setScheduleTimeZone(Optional.of("invalid_timezone")) .build(); requestResource.postRequest(req, singularityUser); }
return request.toBuilder().setQuartzSchedule(Optional.fromNullable(quartzSchedule)).build();
@Test public void testSchedulerHandlesFinishedTasks() { initScheduledRequest(); initFirstDeploy(); schedule = "*/1 * * * * ? 1995"; // cause it to be pending requestResource.postRequest(request.toBuilder().setQuartzSchedule(Optional.of(schedule)).build(), singularityUser); scheduler.drainPendingQueue(); Assert.assertTrue(requestResource.getActiveRequests(singularityUser, false, false, false, 10, Collections.emptyList()).isEmpty()); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.FINISHED); Assert.assertTrue(taskManager.getPendingTaskIds().isEmpty()); schedule = "*/1 * * * * ?"; requestResource.postRequest(request.toBuilder().setQuartzSchedule(Optional.of(schedule)).build(), singularityUser); scheduler.drainPendingQueue(); Assert.assertTrue(!requestResource.getActiveRequests(singularityUser, false, false, false, 10, Collections.emptyList()).isEmpty()); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.ACTIVE); Assert.assertTrue(!taskManager.getPendingTaskIds().isEmpty()); }
@Test public void testFinishedRequestCanBeDeployed() { initScheduledRequest(); initFirstDeploy(); schedule = "*/1 * * * * ? 1995"; // cause it to be pending requestResource.postRequest(request.toBuilder().setQuartzSchedule(Optional.of(schedule)).build(), singularityUser); scheduler.drainPendingQueue(); Assert.assertTrue(requestResource.getActiveRequests(singularityUser, false, false, false, 10, Collections.emptyList()).isEmpty()); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.FINISHED); SingularityDeployBuilder db = new SingularityDeployBuilder(requestId, secondDeployId); initDeploy(db, System.currentTimeMillis()); deployChecker.checkDeploys(); Assert.assertEquals(RequestState.ACTIVE, requestManager.getRequest(requestId).get().getState()); Assert.assertEquals(1, requestManager.getPendingRequests().size()); }
@Test public void testCronScheduleChanges() throws Exception { final String requestId = "test-change-cron"; final String oldSchedule = "*/5 * * * *"; final String oldScheduleQuartz = "0 */5 * * * ?"; final String newSchedule = "*/30 * * * *"; final String newScheduleQuartz = "0 */30 * * * ?"; SingularityRequest request = new SingularityRequestBuilder(requestId, RequestType.SCHEDULED) .setSchedule(Optional.of(oldSchedule)) .build(); request = validator.checkSingularityRequest(request, Optional.<SingularityRequest>absent(), Optional.<SingularityDeploy>absent(), Optional.<SingularityDeploy>absent()); saveRequest(request); Assert.assertEquals(oldScheduleQuartz, requestManager.getRequest(requestId).get().getRequest().getQuartzScheduleSafe()); initAndFinishDeploy(request, "1"); scheduler.drainPendingQueue(); final SingularityRequest newRequest = request.toBuilder() .setSchedule(Optional.of(newSchedule)) .setQuartzSchedule(Optional.<String>absent()) .build(); final SingularityDeploy newDeploy = new SingularityDeployBuilder(request.getId(), "2").setCommand(Optional.of("sleep 100")).build(); deployResource.deploy(new SingularityDeployRequest(newDeploy, Optional.absent(), Optional.absent(), Optional.of(newRequest)), singularityUser); deployChecker.checkDeploys(); scheduler.drainPendingQueue(); Assert.assertEquals(newScheduleQuartz, requestManager.getRequest(requestId).get().getRequest().getQuartzScheduleSafe()); }
.setTaskExecutionTimeLimitMillis(taskExecutionTimeLimitMillis) .setScheduleType(scheduleType) .setQuartzSchedule(quartzSchedule) .setScheduleTimeZone(scheduleTimeZone) .setRackAffinity(copyOfList(rackAffinity))
SingularityRequest newRequest = requestWithState.getRequest().toBuilder().setQuartzSchedule(Optional.of(newQuartzSchedule)).build();
protected void initRequestWithType(RequestType requestType, boolean isLoadBalanced) { SingularityRequestBuilder bldr = new SingularityRequestBuilder(requestId, requestType); bldr.setLoadBalanced(Optional.of(isLoadBalanced)); if (requestType == RequestType.SCHEDULED) { bldr.setQuartzSchedule(Optional.of(schedule)); } request = bldr.build(); saveRequest(request); }
@Test(expected = WebApplicationException.class) public void testInvalidQuartzTimeZoneErrors() { SingularityRequest req = new SingularityRequestBuilder(requestId, RequestType.SCHEDULED) .setQuartzSchedule(Optional.of("*/1 * * * * ? 2020")) .setScheduleType(Optional.of(ScheduleType.QUARTZ)) .setScheduleTimeZone(Optional.of("invalid_timezone")) .build(); requestResource.postRequest(req, singularityUser); }
return request.toBuilder().setQuartzSchedule(Optional.fromNullable(quartzSchedule)).build();
@Test public void testSchedulerHandlesFinishedTasks() { initScheduledRequest(); initFirstDeploy(); schedule = "*/1 * * * * ? 1995"; // cause it to be pending requestResource.postRequest(request.toBuilder().setQuartzSchedule(Optional.of(schedule)).build(), singularityUser); scheduler.drainPendingQueue(); Assert.assertTrue(requestResource.getActiveRequests(singularityUser, false, false, false, 10, Collections.emptyList()).isEmpty()); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.FINISHED); Assert.assertTrue(taskManager.getPendingTaskIds().isEmpty()); schedule = "*/1 * * * * ?"; requestResource.postRequest(request.toBuilder().setQuartzSchedule(Optional.of(schedule)).build(), singularityUser); scheduler.drainPendingQueue(); Assert.assertTrue(!requestResource.getActiveRequests(singularityUser, false, false, false, 10, Collections.emptyList()).isEmpty()); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.ACTIVE); Assert.assertTrue(!taskManager.getPendingTaskIds().isEmpty()); }
@Test public void testFinishedRequestCanBeDeployed() { initScheduledRequest(); initFirstDeploy(); schedule = "*/1 * * * * ? 1995"; // cause it to be pending requestResource.postRequest(request.toBuilder().setQuartzSchedule(Optional.of(schedule)).build(), singularityUser); scheduler.drainPendingQueue(); Assert.assertTrue(requestResource.getActiveRequests(singularityUser, false, false, false, 10, Collections.emptyList()).isEmpty()); Assert.assertTrue(requestManager.getRequest(requestId).get().getState() == RequestState.FINISHED); SingularityDeployBuilder db = new SingularityDeployBuilder(requestId, secondDeployId); initDeploy(db, System.currentTimeMillis()); deployChecker.checkDeploys(); Assert.assertEquals(RequestState.ACTIVE, requestManager.getRequest(requestId).get().getState()); Assert.assertEquals(1, requestManager.getPendingRequests().size()); }
@Test public void testCronScheduleChanges() throws Exception { final String requestId = "test-change-cron"; final String oldSchedule = "*/5 * * * *"; final String oldScheduleQuartz = "0 */5 * * * ?"; final String newSchedule = "*/30 * * * *"; final String newScheduleQuartz = "0 */30 * * * ?"; SingularityRequest request = new SingularityRequestBuilder(requestId, RequestType.SCHEDULED) .setSchedule(Optional.of(oldSchedule)) .build(); request = validator.checkSingularityRequest(request, Optional.<SingularityRequest>absent(), Optional.<SingularityDeploy>absent(), Optional.<SingularityDeploy>absent()); saveRequest(request); Assert.assertEquals(oldScheduleQuartz, requestManager.getRequest(requestId).get().getRequest().getQuartzScheduleSafe()); initAndFinishDeploy(request, "1"); scheduler.drainPendingQueue(); final SingularityRequest newRequest = request.toBuilder() .setSchedule(Optional.of(newSchedule)) .setQuartzSchedule(Optional.<String>absent()) .build(); final SingularityDeploy newDeploy = new SingularityDeployBuilder(request.getId(), "2").setCommand(Optional.of("sleep 100")).build(); deployResource.deploy(new SingularityDeployRequest(newDeploy, Optional.absent(), Optional.absent(), Optional.of(newRequest)), singularityUser); deployChecker.checkDeploys(); scheduler.drainPendingQueue(); Assert.assertEquals(newScheduleQuartz, requestManager.getRequest(requestId).get().getRequest().getQuartzScheduleSafe()); }