public static SingularityPendingTaskId valueOf(String string) { String[] splits = null; try { splits = JavaUtils.reverseSplit(string, 6, "-"); } catch (IllegalStateException ise) { throw new InvalidSingularityTaskIdException(String.format("PendingTaskId %s was invalid (%s)", string, ise.getMessage())); } try { final String requestId = splits[0]; final String deployId = splits[1]; final long nextRunAt = Long.parseLong(splits[2]); final int instanceNo = Integer.parseInt(splits[3]); final PendingType pendingType = PendingType.valueOf(splits[4]); final long createdAt = Long.parseLong(splits[5]); return new SingularityPendingTaskId(requestId, deployId, nextRunAt, instanceNo, pendingType, createdAt); } catch (IllegalArgumentException e) { throw new InvalidSingularityTaskIdException(String.format("PendingTaskId %s had an invalid parameter (%s)", string, e.getMessage())); } }
public SingularityPendingTaskId createFrom(String string, long createdAt) { if (Character.isDigit(string.charAt(string.length() - 1))) { LOG.warn("Not migrating {} - it appears to be migrated already", string); return SingularityPendingTaskId.valueOf(string); } String[] splits = null; try { splits = JavaUtils.reverseSplit(string, 5, "-"); } catch (IllegalStateException ise) { throw new InvalidSingularityTaskIdException(String.format("PendingTaskId %s was invalid (%s)", string, ise.getMessage())); } try { final String requestId = splits[0]; final String deployId = splits[1]; final long nextRunAt = Long.parseLong(splits[2]); final int instanceNo = Integer.parseInt(splits[3]); final PendingType pendingType = PendingType.valueOf(splits[4]); return new SingularityPendingTaskId(requestId, deployId, nextRunAt, instanceNo, pendingType, createdAt); } catch (IllegalArgumentException e) { throw new InvalidSingularityTaskIdException(String.format("PendingTaskId %s had an invalid parameter (%s)", string, e.getMessage())); } }
protected SingularityPendingTask createAndSchedulePendingTask(String deployId) { Random random = new Random(); SingularityPendingTaskId pendingTaskId = new SingularityPendingTaskId(requestId, deployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(random.nextInt(3)), random.nextInt(10), PendingType.NEW_DEPLOY, System.currentTimeMillis()); SingularityPendingTask pendingTask = new SingularityPendingTaskBuilder().setPendingTaskId(pendingTaskId).build(); taskManager.savePendingTask(pendingTask); return pendingTask; }
private SingularityPendingTask pendingTask(String requestId, String deployId, PendingType pendingType) { return new SingularityPendingTaskBuilder() .setPendingTaskId(new SingularityPendingTaskId(requestId, deployId, System.currentTimeMillis(), 1, pendingType, System.currentTimeMillis())) .build(); }
new SingularityPendingTaskId( request.getId(), deployId, nextRunAt.get(), nextInstanceNumber, pendingRequest.getPendingType(), pendingRequest.getTimestamp()),
@Test public void testDeployClearsObsoleteScheduledTasks() { initRequest(); initFirstDeploy(); initSecondDeploy(); SingularityPendingTaskId taskIdOne = new SingularityPendingTaskId(requestId, firstDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(3), 1, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskOne = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdOne).build(); SingularityPendingTaskId taskIdTwo = new SingularityPendingTaskId(requestId, firstDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1), 2, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskTwo = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdTwo).build(); SingularityPendingTaskId taskIdThree = new SingularityPendingTaskId(requestId, secondDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(3), 1, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskThree = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdThree).build(); SingularityPendingTaskId taskIdFour = new SingularityPendingTaskId(requestId + "hi", firstDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(3), 5, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskFour = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdFour).build(); taskManager.savePendingTask(taskOne); taskManager.savePendingTask(taskTwo); taskManager.savePendingTask(taskThree); taskManager.savePendingTask(taskFour); launchTask(request, secondDeploy, 1, TaskState.TASK_RUNNING); deployChecker.checkDeploys(); List<SingularityPendingTaskId> pendingTaskIds = taskManager.getPendingTaskIds(); Assert.assertTrue(!pendingTaskIds.contains(taskIdOne)); Assert.assertTrue(!pendingTaskIds.contains(taskIdTwo)); Assert.assertTrue(pendingTaskIds.contains(taskIdThree)); Assert.assertTrue(pendingTaskIds.contains(taskIdFour)); }
@Test public void testEnvironmentVariableOverrides() { Map<String, String> overrideVariables = new HashMap<>(); overrideVariables.put("MY_NEW_ENV_VAR", "test"); overrideVariables.put("STARTED_BY_USER", "notTestUser"); final SingularityRequest request = new SingularityRequestBuilder("test", RequestType.WORKER) .build(); final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") .setCommand(Optional.of("/bin/echo hi")) .build(); final SingularityPendingTask pendingTask = new SingularityPendingTaskBuilder() .setPendingTaskId(new SingularityPendingTaskId("test", "1", 0, 1, PendingType.IMMEDIATE, 0)) .setUser(user) .setEnvOverrides(overrideVariables) .build(); final SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask); final TaskInfo task = builder.buildTask(offerHolder, null, taskRequest, taskResources, executorResources).getMesosTask(); Map<String, String> environmentVariables = task .getCommand() .getEnvironment() .getVariablesList() .stream() .collect(Collectors.toMap(Variable::getName, Variable::getValue)); for (String key : overrideVariables.keySet()) { assertEquals( "Environment variable " + key + " not overridden.", environmentVariables.get(key), overrideVariables.get(key)); } }
protected SingularityPendingTask buildPendingTask(SingularityRequest request, SingularityDeploy deploy, long launchTime, int instanceNo, Optional<String> runId) { SingularityPendingTaskId pendingTaskId = new SingularityPendingTaskId(request.getId(), deploy.getId(), launchTime, instanceNo, PendingType.IMMEDIATE, launchTime); SingularityPendingTask pendingTask = new SingularityPendingTaskBuilder() .setPendingTaskId(pendingTaskId) .setRunId(runId) .build(); return pendingTask; }
curator.create().creatingParentsIfNeeded().forPath(getPendingPath("r2", "de"), p2b); SingularityPendingTaskId pt1 = new SingularityPendingTaskId("r1", "d1", 23L, 3, PendingType.BOUNCE, 1L); SingularityPendingTaskId pt2 = new SingularityPendingTaskId("r2", "d3", 231L, 1, PendingType.UNPAUSED, 23L);
@Before public void createMocks() { pendingTask = new SingularityPendingTaskBuilder() .setPendingTaskId(new SingularityPendingTaskId("test", "1", 0, 1, PendingType.IMMEDIATE, 0)) .setUser(user) .build();
public SingularityPendingTaskId createFrom(String string, long createdAt) { if (Character.isDigit(string.charAt(string.length() - 1))) { LOG.warn("Not migrating {} - it appears to be migrated already", string); return SingularityPendingTaskId.valueOf(string); } String[] splits = null; try { splits = JavaUtils.reverseSplit(string, 5, "-"); } catch (IllegalStateException ise) { throw new InvalidSingularityTaskIdException(String.format("PendingTaskId %s was invalid (%s)", string, ise.getMessage())); } try { final String requestId = splits[0]; final String deployId = splits[1]; final long nextRunAt = Long.parseLong(splits[2]); final int instanceNo = Integer.parseInt(splits[3]); final PendingType pendingType = PendingType.valueOf(splits[4]); return new SingularityPendingTaskId(requestId, deployId, nextRunAt, instanceNo, pendingType, createdAt); } catch (IllegalArgumentException e) { throw new InvalidSingularityTaskIdException(String.format("PendingTaskId %s had an invalid parameter (%s)", string, e.getMessage())); } }
protected SingularityPendingTask createAndSchedulePendingTask(String deployId) { Random random = new Random(); SingularityPendingTaskId pendingTaskId = new SingularityPendingTaskId(requestId, deployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(random.nextInt(3)), random.nextInt(10), PendingType.NEW_DEPLOY, System.currentTimeMillis()); SingularityPendingTask pendingTask = new SingularityPendingTaskBuilder().setPendingTaskId(pendingTaskId).build(); taskManager.savePendingTask(pendingTask); return pendingTask; }
private SingularityPendingTask pendingTask(String requestId, String deployId, PendingType pendingType) { return new SingularityPendingTaskBuilder() .setPendingTaskId(new SingularityPendingTaskId(requestId, deployId, System.currentTimeMillis(), 1, pendingType, System.currentTimeMillis())) .build(); }
new SingularityPendingTaskId( request.getId(), deployId, nextRunAt.get(), nextInstanceNumber, pendingRequest.getPendingType(), pendingRequest.getTimestamp()),
@Test public void testDeployClearsObsoleteScheduledTasks() { initRequest(); initFirstDeploy(); initSecondDeploy(); SingularityPendingTaskId taskIdOne = new SingularityPendingTaskId(requestId, firstDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(3), 1, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskOne = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdOne).build(); SingularityPendingTaskId taskIdTwo = new SingularityPendingTaskId(requestId, firstDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1), 2, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskTwo = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdTwo).build(); SingularityPendingTaskId taskIdThree = new SingularityPendingTaskId(requestId, secondDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(3), 1, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskThree = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdThree).build(); SingularityPendingTaskId taskIdFour = new SingularityPendingTaskId(requestId + "hi", firstDeployId, System.currentTimeMillis() + TimeUnit.DAYS.toMillis(3), 5, PendingType.IMMEDIATE, System.currentTimeMillis()); SingularityPendingTask taskFour = new SingularityPendingTaskBuilder().setPendingTaskId(taskIdFour).build(); taskManager.savePendingTask(taskOne); taskManager.savePendingTask(taskTwo); taskManager.savePendingTask(taskThree); taskManager.savePendingTask(taskFour); launchTask(request, secondDeploy, 1, TaskState.TASK_RUNNING); deployChecker.checkDeploys(); List<SingularityPendingTaskId> pendingTaskIds = taskManager.getPendingTaskIds(); Assert.assertTrue(!pendingTaskIds.contains(taskIdOne)); Assert.assertTrue(!pendingTaskIds.contains(taskIdTwo)); Assert.assertTrue(pendingTaskIds.contains(taskIdThree)); Assert.assertTrue(pendingTaskIds.contains(taskIdFour)); }
protected SingularityPendingTask buildPendingTask(SingularityRequest request, SingularityDeploy deploy, long launchTime, int instanceNo, Optional<String> runId) { SingularityPendingTaskId pendingTaskId = new SingularityPendingTaskId(request.getId(), deploy.getId(), launchTime, instanceNo, PendingType.IMMEDIATE, launchTime); SingularityPendingTask pendingTask = new SingularityPendingTaskBuilder() .setPendingTaskId(pendingTaskId) .setRunId(runId) .build(); return pendingTask; }
@Test public void testEnvironmentVariableOverrides() { Map<String, String> overrideVariables = new HashMap<>(); overrideVariables.put("MY_NEW_ENV_VAR", "test"); overrideVariables.put("STARTED_BY_USER", "notTestUser"); final SingularityRequest request = new SingularityRequestBuilder("test", RequestType.WORKER) .build(); final SingularityDeploy deploy = new SingularityDeployBuilder("test", "1") .setCommand(Optional.of("/bin/echo hi")) .build(); final SingularityPendingTask pendingTask = new SingularityPendingTaskBuilder() .setPendingTaskId(new SingularityPendingTaskId("test", "1", 0, 1, PendingType.IMMEDIATE, 0)) .setUser(user) .setEnvOverrides(overrideVariables) .build(); final SingularityTaskRequest taskRequest = new SingularityTaskRequest(request, deploy, pendingTask); final TaskInfo task = builder.buildTask(offerHolder, null, taskRequest, taskResources, executorResources).getMesosTask(); Map<String, String> environmentVariables = task .getCommand() .getEnvironment() .getVariablesList() .stream() .collect(Collectors.toMap(Variable::getName, Variable::getValue)); for (String key : overrideVariables.keySet()) { assertEquals( "Environment variable " + key + " not overridden.", environmentVariables.get(key), overrideVariables.get(key)); } }
@Before public void createMocks() { pendingTask = new SingularityPendingTaskBuilder() .setPendingTaskId(new SingularityPendingTaskId("test", "1", 0, 1, PendingType.IMMEDIATE, 0)) .setUser(user) .build();
curator.create().creatingParentsIfNeeded().forPath(getPendingPath("r2", "de"), p2b); SingularityPendingTaskId pt1 = new SingularityPendingTaskId("r1", "d1", 23L, 3, PendingType.BOUNCE, 1L); SingularityPendingTaskId pt2 = new SingularityPendingTaskId("r2", "d3", 231L, 1, PendingType.UNPAUSED, 23L);