@Override public Protos.TaskID newTaskID() throws Exception { Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASKID_FORMAT.format(++taskCount)).build(); return taskID; }
/** {@inheritDoc} */ @Override public synchronized void resourceOffers(SchedulerDriver schedulerDriver, List<Protos.Offer> offers) { log.log(Level.FINE, "Offers resources: {0}", offers.size()); for (Protos.Offer offer : offers) { IgniteTask igniteTask = checkOffer(offer); // Decline offer which doesn't match by mem or cpu. if (igniteTask == null) { schedulerDriver.declineOffer(offer.getId()); continue; } // Generate a unique task ID. Protos.TaskID taskId = Protos.TaskID.newBuilder() .setValue(Integer.toString(taskIdGenerator.incrementAndGet())).build(); log.log(Level.INFO, "Launching task: {0}", igniteTask); // Create task to run. Protos.TaskInfo task = createTask(offer, igniteTask, taskId); try { schedulerDriver.launchTasks(Collections.singletonList(offer.getId()), Collections.singletonList(task), Protos.Filters.newBuilder().setRefuseSeconds(1).build()); } catch (RuntimeException e) { log.log(Level.SEVERE, "Failed launch task. Task id: {0}. Task info: {1}", new Object[]{taskId, task, e}); throw e; } tasks.put(taskId.getValue(), igniteTask); } }
/** * Generates a new task ID. */ @Override public Protos.TaskID newTaskID() throws Exception { synchronized (startStopLock) { verifyIsRunning(); int nextCount; boolean success; do { ZooKeeperVersionedValue<Integer> count = totalTaskCountInZooKeeper.getVersionedValue(); nextCount = count.getValue() + 1; success = totalTaskCountInZooKeeper.trySetCount(count, nextCount); } while (!success); Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASKID_FORMAT.format(nextCount)).build(); return taskID; } }
private Protos.TaskStatus taskStatus() { return Protos.TaskStatus.newBuilder() .setTaskId(Protos.TaskID.newBuilder().setValue("TestId").build()) .setState(Protos.TaskState.TASK_RUNNING) .build(); } }
@Test(expected = TaskException.class) public void testInvalidToTaskName() throws Exception { CommonIdUtils.toTaskName(Protos.TaskID.newBuilder().setValue(TEST_TASK_NAME + "_id").build()); }
public static Protos.TaskStatus getDefaultTaskStatus(Protos.TaskState state, Double timestamp) { Protos.SlaveID slaveID = Protos.SlaveID.newBuilder().setValue(SLAVE_ID).build(); Protos.ExecutorID executorID = Protos.ExecutorID.newBuilder().setValue(EXECUTOR_ID).build(); Protos.TaskID taskID = Protos.TaskID.newBuilder().setValue(TASK_ID).build(); return Protos.TaskStatus.newBuilder().setSlaveId(slaveID).setTaskId(taskID).setExecutorId(executorID).setTimestamp(timestamp) .setState(state).build(); }
@Test public void shouldReturnCorrectNumberOfExecutors() throws IOException { ArrayList<Protos.TaskInfo> mock = Mockito.spy(new ArrayList<>()); mock.add(ProtoTestUtil.getDefaultTaskInfo()); Protos.TaskInfo defaultTaskInfo = Protos.TaskInfo.newBuilder().mergeFrom(ProtoTestUtil.getDefaultTaskInfo()).setTaskId(Protos.TaskID.newBuilder().setValue("Task2")).build(); mock.add(defaultTaskInfo); when(state.get(contains(ESTaskStatus.STATE_KEY))).thenReturn(ProtoTestUtil.getDefaultTaskStatus(Protos.TaskState.TASK_RUNNING)); when(state.get(contains(ClusterState.STATE_LIST))).thenReturn(mock); // Be careful, the state list and state key both have the word state in them. Order is important. assertEquals(2, clusterState.getGuiTaskList().size()); clusterState.removeTask(defaultTaskInfo); assertEquals(1, clusterState.getGuiTaskList().size()); }
private static List<Protos.TaskInfo> clearTaskIds(Collection<Protos.TaskInfo> taskInfos) { List<Protos.TaskInfo> outTaskInfos = new ArrayList<>(); for (Protos.TaskInfo restartTaskInfo : taskInfos) { outTaskInfos.add( Protos.TaskInfo.newBuilder(restartTaskInfo) .setTaskId(Protos.TaskID.newBuilder().setValue("")) .build()); } return outTaskInfos; }
private Protos.TaskInfo normalizeCassandraTaskInfo(CassandraDaemonTask daemonTask) { Protos.TaskInfo daemonTaskInfo = daemonTask.getTaskInfo(); Protos.ExecutorInfo expectedExecutorInfo = Protos.ExecutorInfo.newBuilder(daemonTaskInfo.getExecutor()) .setExecutorId(Protos.ExecutorID.newBuilder().setValue("")) .build(); daemonTaskInfo = Protos.TaskInfo.newBuilder(daemonTaskInfo) .setTaskId(Protos.TaskID.newBuilder().setValue("")) .setExecutor(expectedExecutorInfo) .build(); return daemonTaskInfo; }
private Protos.TaskStatus getTestTaskStatus() { return Protos.TaskStatus.newBuilder() .setTaskId(Protos.TaskID.newBuilder() .setValue(testTaskId) .build()) .setState(Protos.TaskState.TASK_RUNNING) .build(); }
@Override public Protos.TaskStatus apply(final TaskContext input) { return Protos.TaskStatus.newBuilder() .setTaskId(Protos.TaskID.newBuilder().setValue(input.getId()).build()) .setSlaveId(Protos.SlaveID.newBuilder().setValue(input.getSlaveId()).build()) .setState(Protos.TaskState.TASK_RUNNING).build(); } }));
private static Protos.TaskInfo getTestTaskInfo() { return Protos.TaskInfo.newBuilder() .setName(testTaskName) .setTaskId(Protos.TaskID.newBuilder().setValue(testTaskId)) .setSlaveId(Protos.SlaveID.newBuilder().setValue(testAgentId)) .build(); } }
@Test public void testValidToTaskName() throws Exception { Protos.TaskID validTaskId = Protos.TaskID.newBuilder().setValue(TEST_TASK_NAME + "__id").build(); Assert.assertEquals(TEST_TASK_NAME, CommonIdUtils.toTaskName(validTaskId)); }
@Test public void emptyTaskId() { verify(driver, never()).killTask(TestConstants.TASK_ID); TaskKiller.killTask(Protos.TaskID.newBuilder().setValue("").build()); verify(driver, never()).killTask(TestConstants.TASK_ID); TaskKiller.killAllTasks(); verify(driver, never()).killTask(TestConstants.TASK_ID); }
@Test(expected = StateStoreException.class) public void testStoreUnknownStatus() { // Store initial status as RUNNING store.storeStatus(TestConstants.TASK_NAME, TestConstants.TASK_STATUS); // Create status with unknown TaskID but the same task name Protos.TaskStatus status = TestConstants.TASK_STATUS.toBuilder() .setTaskId(Protos.TaskID.newBuilder().setValue(UUID.randomUUID().toString())) .build(); store.storeStatus(TestConstants.TASK_NAME, status); }
@SuppressWarnings("PMD.AvoidUsingHardCodedIP") private Protos.TaskStatus getFailedTaskStatus(String taskId) { return Protos.TaskStatus.newBuilder() .setState(Protos.TaskState.TASK_FAILED) .setTaskId(Protos.TaskID.newBuilder().setValue(taskId)) .setContainerStatus( Protos.ContainerStatus.newBuilder() .addNetworkInfos(Protos.NetworkInfo.newBuilder() .addIpAddresses(Protos.NetworkInfo.IPAddress.newBuilder() .setIpAddress("10.10.10.10")))) .build(); }
private Protos.TaskInfo buildCommandExecutorTaskInfo(final TaskContext taskContext, final CloudJobConfiguration jobConfig, final ShardingContexts shardingContexts, final Protos.Offer offer, final Protos.CommandInfo command) { Protos.TaskInfo.Builder result = Protos.TaskInfo.newBuilder().setTaskId(Protos.TaskID.newBuilder().setValue(taskContext.getId()).build()) .setName(taskContext.getTaskName()).setSlaveId(offer.getSlaveId()) .addResources(buildResource("cpus", jobConfig.getCpuCount(), offer.getResourcesList())) .addResources(buildResource("mem", jobConfig.getMemoryMB(), offer.getResourcesList())) .setData(ByteString.copyFrom(new TaskInfoData(shardingContexts, jobConfig).serialize())); return result.setCommand(command).build(); }
@Test public void testExtractTaskFromExtraElements() throws Exception { // Just in case, we support additional elements at the start of the id for future use. Protos.TaskID taskId = Protos.TaskID.newBuilder() .setValue("something-else__" + TEST_FOLDERED_SERVICE_NAME2 + "__" + TEST_TASK_NAME + "__uuid") .build(); Assert.assertEquals(TEST_TASK_NAME, CommonIdUtils.toTaskName(taskId)); Assert.assertEquals(TEST_FOLDERED_SERVICE_NAME2, CommonIdUtils.toSanitizedServiceName(taskId).get()); }
private Protos.TaskInfo createTask(String hostname) throws InvalidProtocolBufferException { return Protos.TaskInfo.newBuilder() .setName("Test") .setTaskId(Protos.TaskID.newBuilder().setValue("TestId").build()) .setSlaveId(Protos.SlaveID.newBuilder().setValue(hostname).build()) .build(); }
private void sendStatusUpdate(SingularityExecutorTask task, Protos.TaskState taskState, String message) { executorUtils.sendStatusUpdate(task.getDriver(), TaskID.newBuilder().setValue(task.getTaskId()).build(), taskState, message, task.getLog()); }