public void killTask(Protos.TaskID taskId) { driver.get().killTask(taskId); }
public void killTracker(MesosTracker tracker) { if (metrics != null) { metrics.killMeter.mark(); } synchronized (this) { driver.killTask(tracker.taskId); } tracker.stop(); if (mesosTrackers.get(tracker.host) == tracker) { mesosTrackers.remove(tracker.host); } }
@Override public void expect(ClusterState state, SchedulerDriver mockDriver) { Mockito.verify(mockDriver, Mockito.never()).killTask(state.getTaskId(taskName)); }
@Override public void expect(ClusterState state, SchedulerDriver mockDriver) { ArgumentCaptor<Protos.TaskID> taskIdCaptor = ArgumentCaptor.forClass(Protos.TaskID.class); Mockito.verify(mockDriver, Mockito.atLeastOnce()).killTask(taskIdCaptor.capture()); Assert.assertEquals(taskId, taskIdCaptor.getValue().getValue()); }
@Override public void expect(ClusterState state, SchedulerDriver mockDriver) { ArgumentCaptor<Protos.TaskID> taskIdCaptor = ArgumentCaptor.forClass(Protos.TaskID.class); Mockito.verify(mockDriver, Mockito.atLeastOnce()).killTask(taskIdCaptor.capture()); Protos.TaskID taskId = state.getTaskId(taskName); long matchingTaskKills = taskIdCaptor.getAllValues().stream().filter(i -> taskId.equals(i)).count(); Assert.assertEquals(String.format("Task with name %s (id %s) was killed %d time%s", taskName, taskId.getValue(), matchingTaskKills, matchingTaskKills == 1 ? "" : "s"), totalTimes, matchingTaskKills); }
private static void killTaskInternal(TaskID taskId) { LOGGER.info("Killing task: {}", taskId.getValue()); Driver.getInstance().killTask(taskId); }
@Test public void multipleKillAttempts() { verify(driver, never()).killTask(TestConstants.TASK_ID); // Enqueue a task to kill, and it should have a kill call issued immediately TaskKiller.killTask(TestConstants.TASK_ID); verify(driver, times(1)).killTask(TestConstants.TASK_ID); // Validate the next killing interation attempts to kill the task again since we haven't // received a status update yet. TaskKiller.killAllTasks(); verify(driver, times(2)).killTask(TestConstants.TASK_ID); completeKilling(2); }
@Override public void taskComplete(GroomServerStatus status, TaskInProgress task) { Pair<String, Integer> key = new Pair<String, Integer>( status.getGroomHostName(), BSPMaster.resolveWorkerAddress( status.rpcServer).getPort()); groomServers.put(key, status); assignments.remove(key, task); jobAssignments.remove(task.getJob(), new Pair<Object, Object>(key, task)); if (assignments.getCollection(key) == null) { groomServers.remove(key); driver.killTask(groomTaskIDs.get(key)); } }
@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 public void shouldNotRemoveTaskWhenGreater() { when(config.getElasticsearchNodes()).thenReturn(4); // Override before // Start task reaper. TaskReaper taskReaper = new TaskReaper(driver, config, state); taskReaper.run(); // Should not call kill verify(driver, never()).killTask(any()); }
@Before public void before() { // Setup mocks driver = mock(SchedulerDriver.class); when(driver.killTask(any())).thenReturn(Protos.Status.DRIVER_RUNNING); config = mock(Configuration.class); when(config.getElasticsearchNodes()).thenReturn(2); state = mock(ClusterState.class); List<Protos.TaskInfo> list = Arrays.asList(ProtoTestUtil.getDefaultTaskInfo(), ProtoTestUtil.getDefaultTaskInfo(), ProtoTestUtil.getDefaultTaskInfo()); when(state.getTaskList()).thenReturn(list); }
@Test public void shouldRemoveTask() { // Start task reaper. TaskReaper taskReaper = new TaskReaper(driver, config, state); taskReaper.run(); // Should try to kill a task verify(driver, atLeastOnce()).killTask(any()); }
@Test public void shouldNotRemoveTaskWhenEqual() { when(config.getElasticsearchNodes()).thenReturn(3); // Override before // Start task reaper. TaskReaper taskReaper = new TaskReaper(driver, config, state); taskReaper.run(); // Should not call kill verify(driver, never()).killTask(any()); }
@Test public void shouldNotKillMoreThanAvailable() { when(config.getElasticsearchNodes()).thenReturn(-1); // Override before // Start task reaper. TaskReaper taskReaper = new TaskReaper(driver, config, state); taskReaper.run(); // Should not call kill verify(driver, times(3)).killTask(any()); } }
/** * 停止调度作业. * * @param jobName 作业名称 */ public void unschedule(final String jobName) { for (TaskContext each : runningService.getRunningTasks(jobName)) { schedulerDriver.killTask(Protos.TaskID.newBuilder().setValue(each.getId()).build()); } runningService.remove(jobName); readyService.remove(Lists.newArrayList(jobName)); Optional<CloudJobConfiguration> jobConfig = configService.load(jobName); if (jobConfig.isPresent()) { transientProducerScheduler.deregister(jobConfig.get()); } }
@Test public void testRestartPodOneRunning() { when(mockStateStore.fetchTasks()).thenReturn(TASK_INFOS); when(mockStateStore.fetchStatuses()).thenReturn(TASK_STATUSES); Response response = PodQueries.restartPod(mockStateStore, mockConfigStore, "test-1", RecoveryType.TRANSIENT, null); assertEquals(200, response.getStatus()); JSONObject json = new JSONObject((String) response.getEntity()); assertEquals(2, json.length()); assertEquals("test-1", json.getString("pod")); assertEquals(2, json.getJSONArray("tasks").length()); assertEquals("test-1-a", json.getJSONArray("tasks").get(0)); assertEquals("test-1-b", json.getJSONArray("tasks").get(1)); verify(mockDriver).killTask(POD_1_TASK_A.getTaskId()); verify(mockDriver).killTask(POD_1_TASK_B.getTaskId()); verifyNoMoreInteractions(mockDriver); verifyNoMoreInteractions(mockConfigStore); }
private void completeKilling(int count) { // Remove the task from the queue by reporting it as killed TaskKiller.update( TestConstants.TASK_STATUS.toBuilder() .setState(Protos.TaskState.TASK_KILLED) .build()); TaskKiller.killAllTasks(); verify(driver, times(count)).killTask(TestConstants.TASK_ID); } }
@Test public void testStatusUnknownTask() { Driver.setDriver(mockSchedulerDriver); when(mockMesosEventClient.taskStatus(TestConstants.TASK_STATUS)).thenReturn(TaskStatusResponse.unknownTask()); scheduler.statusUpdate(mockSchedulerDriver, TestConstants.TASK_STATUS); verify(mockSchedulerDriver).killTask(TestConstants.TASK_STATUS.getTaskId()); }
@Test public void testStart() { TaskKillStep step = createStep(); step.start(); Assert.assertEquals(Optional.empty(), step.getPodInstanceRequirement()); Assert.assertEquals(Status.COMPLETE, step.getStatus()); Mockito.verify(driver).killTask(taskID); }