/** @deprecated since 0.9.0; use {@link #displayNameSatisfies(Predicate)} */ @Deprecated public static Predicate<Task<?>> displayNameMatches(Predicate<? super String> matcher) { return displayNameSatisfies(matcher); }
@Test public void testDisplayNameEqualTo() throws Exception { Task<Object> task = execManager.submit(TaskBuilder.builder() .body(Callables.<Object>returning("val")) .displayName("myname") .build()); assertTrue(TaskPredicates.displayNameEqualTo("myname").apply(task)); assertFalse(TaskPredicates.displayNameEqualTo("wrong").apply(task)); }
@Test public void testIsDone() throws Exception { CountDownLatch latch = new CountDownLatch(1); Task<?> task = app.getExecutionContext().submit(new Runnable() { public void run() { try { latch.await(); } catch (InterruptedException e) { throw Exceptions.propagate(e); } }}); assertFalse(TaskPredicates.isDone().apply(task)); latch.countDown(); task.get(); assertTrue(TaskPredicates.isDone().apply(task)); }
@Test public void testIsEffector() throws Exception { Task<?> task = app.invoke(TestApplication.START, ImmutableMap.of("locations", ImmutableList.<Location>of())); Task<?> otherTask = execManager.submit(TaskBuilder.<Object>builder() .body(Callables.<Object>returning("val")) .build()); assertTrue(TaskPredicates.isEffector().apply(task)); assertFalse(TaskPredicates.isEffector().apply(otherTask)); }
private <T extends SoftwareProcess> void assertStreams(T softwareProcessEntity) { Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt.getExecutionManager(), softwareProcessEntity); Task<?> subTask = findTaskOrSubTask(tasks, TaskPredicates.displayNameMatches(StringPredicates.matchesRegex("open iptables.*"))).get(); String stdout = AbstractSoftwareProcessStreamsTest.getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDOUT); String msg = "stdout="+stdout; assertNotEquals(stdout, "", msg); }
public void doTestReleaseEvenIfErrorDuringStop(final Class<? extends SimulatedDriver> driver) throws Exception { MyService entity = app.addChild(EntitySpec.create(MyServiceWithCustomDriver.class) .configure(MyServiceWithCustomDriver.DRIVER_CLASS, driver)); entity.start(ImmutableList.of(loc)); Task<Void> t = entity.invoke(Startable.STOP, ImmutableMap.<String, Object>of()); t.blockUntilEnded(); assertFalse(t.isError(), "Expected parent to succeed, not fail with " + Tasks.getError(t)); Iterator<Task<?>> failures; failures = Tasks.failed(Tasks.descendants(t, true)).iterator(); Assert.assertTrue(failures.hasNext(), "Expected error in descendants"); Optional<Task<?>> stopping = Iterables.tryFind(Tasks.children(t), TaskPredicates.displayNameEqualTo("stopping")); Assert.assertTrue(stopping.isPresent(), "Could not find stopping task"); failures = Tasks.failed(Tasks.children(stopping.get())).iterator(); Assert.assertTrue(failures.hasNext(), "Expected error in child"); Throwable e = Tasks.getError(failures.next()); if (e == null || !e.toString().contains("Simulating stop error")) Assert.fail("Wrong error", e); Assert.assertEquals(loc.getAvailable(), ImmutableSet.of(machine), "Expected location to be available again"); Entities.unmanage(entity); }
Asserts.eventually(Suppliers.ofInstance(t1), TaskPredicates.isDone()); Assert.assertTrue(t1.isCancelled()); Asserts.eventually(new Supplier<Number>() {
public static Predicate<Task<?>> displayNameEqualTo(String name) { return displayNameSatisfies(Predicates.equalTo(name)); }
@Test public void testDisplayNameSatisfies() throws Exception { Task<Object> task = execManager.submit(TaskBuilder.builder() .body(Callables.<Object>returning("val")) .displayName("myname") .build()); assertTrue(TaskPredicates.displayNameSatisfies(Predicates.equalTo("myname")).apply(task)); assertFalse(TaskPredicates.displayNameSatisfies(Predicates.equalTo("wrong")).apply(task)); }
@Test public void testDisplayNameMatches() throws Exception { Task<Object> task = execManager.submit(TaskBuilder.builder() .body(Callables.<Object>returning("val")) .displayName("myname") .build()); assertTrue(TaskPredicates.displayNameSatisfies(Predicates.equalTo("myname")).apply(task)); assertFalse(TaskPredicates.displayNameSatisfies(Predicates.equalTo("wrong")).apply(task)); }
protected void assertSubTaskFailures(SoftwareProcess entity, Map<String, Predicate<CharSequence>> taskErrs) throws Exception { Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt().getExecutionManager(), entity); for (Map.Entry<String, Predicate<CharSequence>> entry : taskErrs.entrySet()) { String taskNameRegex = entry.getKey(); Predicate<? super String> errChecker = entry.getValue(); Task<?> subTask = findTaskOrSubTask(tasks, TaskPredicates.displayNameSatisfies(StringPredicates.matchesRegex(taskNameRegex))).get(); String msg = "regex="+taskNameRegex+"; task="+subTask; assertNotNull(subTask, msg); assertTrue(subTask.isDone(), msg); assertTrue(subTask.isError(), msg); try { subTask.get(); fail(); } catch (Exception e) { if (!errChecker.apply(e.toString())) { throw e; } } } }
protected <T extends SoftwareProcess> void assertStreams(T softwareProcessEntity) { Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt.getExecutionManager(), softwareProcessEntity); for (Map.Entry<String, String> entry : getCommands().entrySet()) { String taskNameRegex = entry.getKey(); String echoed = entry.getValue(); Task<?> subTask = findTaskOrSubTask(tasks, TaskPredicates.displayNameSatisfies(StringPredicates.matchesRegex(taskNameRegex))).get(); String stdin = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDIN); String stdout = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDOUT); String stderr = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDERR); // String env = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_ENV); String msg = "taskName='" + taskNameRegex + "'; expected=" + echoed + "; actual=" + stdout + "\nstdin="+stdin+"\nstdout="+stdout+"\nstderr="+stderr; //+"; env="+env; assertTrue(stdin.contains("echo "+echoed), msg); assertTrue(stdout.contains(echoed), msg); } } }
protected void assertStreams(SoftwareProcess entity, Map<String, List<String>> stdouts) { Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt().getExecutionManager(), entity); for (Map.Entry<String, List<String>> entry : stdouts.entrySet()) { String taskNameRegex = entry.getKey(); List<String> expectedOuts = entry.getValue(); Task<?> subTask = findTaskOrSubTask(tasks, TaskPredicates.displayNameSatisfies(StringPredicates.matchesRegex(taskNameRegex))).get(); String stdin = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDIN); String stdout = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDOUT); String stderr = getStreamOrFail(subTask, BrooklynTaskTags.STREAM_STDERR); String env = getStream(subTask, BrooklynTaskTags.STREAM_ENV); String msg = "stdin="+stdin+"; stdout="+stdout+"; stderr="+stderr+"; env="+env; for (String expectedOut : expectedOuts) { assertTrue(stdout.contains(expectedOut), msg); } } }
@BeforeMethod(alwaysRun=true) @Override public void setUp() throws Exception { super.setUp(); machineEntity = app.addChild(EntitySpec.create(MachineEntity.class) .configure(BrooklynConfigKeys.SKIP_ON_BOX_BASE_DIR_RESOLUTION, true) .location(TestApplication.LOCALHOST_PROVISIONER_SPEC)); machineEntity.start(ImmutableList.<Location>of()); machineEntity.execCommand("echo myval"); Set<Task<?>> tasks = BrooklynTaskTags.getTasksInEntityContext(mgmt.getExecutionManager(), machineEntity); String taskNameRegex = "ssh: echo myval"; streams = Maps.newLinkedHashMap(); subTask = AbstractSoftwareProcessStreamsTest.findTaskOrSubTask(tasks, TaskPredicates.displayNameSatisfies(StringPredicates.matchesRegex(taskNameRegex))).get(); for (String streamId : ImmutableList.of("stdin", "stdout", "stderr")) { streams.put(streamId, AbstractSoftwareProcessStreamsTest.getStreamOrFail(subTask, streamId)); } }