@Override public void expect(ClusterState state, SchedulerDriver mockDriver) throws AssertionError { Set<Protos.ExecutorInfo> executors = Arrays.asList(taskNames).stream() .map(name -> state.getLastLaunchedTask(name).getExecutor()) .collect(Collectors.toSet()); Assert.assertEquals(String.format( "Expected tasks to share a single matching executor, but had: %s", executors.stream().map(e -> TextFormat.shortDebugString(e)).collect(Collectors.toList())), 1, executors.size()); }
/** * Returns the last task id for a task of the specified name. * * @param taskName the task name to be found * @return the task id * @throws IllegalStateException if no such task was found */ public Protos.TaskID getTaskId(String taskName) { return getLastLaunchedTask(taskName).getTask().getTaskId(); } }
LaunchedTask task = state.getLastLaunchedTask(taskName); expectedResourceIds.addAll(ResourceUtils.getResourceIds(task.getTask().getResourcesList())); expectedResourceIds.addAll(ResourceUtils.getResourceIds(task.getExecutor().getResourcesList()));
private static void checkNamespace( ServiceTestResult result, String sanitizedServiceName, String resourceNamespace, String persisterPrefix) throws Exception { Collection<String> taskNames = Arrays.asList("hello-0-server", "world-0-server", "world-1-server"); // Persister: everything under a specified prefix (or no prefix). Assert.assertEquals(new TreeSet<>(taskNames), result.getPersister().getChildren(persisterPrefix + "/Tasks")); Assert.assertEquals(1, result.getPersister().getChildren(persisterPrefix + "/Configurations").size()); for (String taskName : taskNames) { LaunchedTask launchedTask = result.getClusterState().getLastLaunchedTask(taskName); // Each task should have a taskId and executorId containing the service name, regardless of namespacing: Assert.assertEquals(sanitizedServiceName, CommonIdUtils.toSanitizedServiceName(launchedTask.getExecutor().getExecutorId()).get()); Assert.assertEquals(sanitizedServiceName, CommonIdUtils.toSanitizedServiceName(launchedTask.getTask().getTaskId()).get()); if (resourceNamespace != null) { // All task+executor resources should have a 'namespace' label for (Protos.Resource resource : ResourceUtils.getAllResources(launchedTask.getTask())) { Assert.assertEquals(resourceNamespace, ResourceUtils.getNamespace(resource).get()); } } else { // All task+executor resources should NOT have a 'namespace' label for (Protos.Resource resource : ResourceUtils.getAllResources(launchedTask.getTask())) { Assert.assertFalse(ResourceUtils.getNamespace(resource).isPresent()); } } } }