@GwtIncompatible // immediateCheckedFuture public void testImmediateCheckedFuture() throws Exception { CheckedFuture<String, MyException> future = immediateCheckedFuture(DATA1); assertThat(future.toString()).endsWith("[status=SUCCESS, result=[" + DATA1 + "]]"); // Verify that the proper object is returned without waiting assertSame(DATA1, future.get(0L, MILLISECONDS)); assertSame(DATA1, future.checkedGet(0L, MILLISECONDS)); }
@Override public ListenableFuture<?> processFor(Duration duration) { calls.incrementAndGet(); long callStart = System.nanoTime(); startNanos.compareAndSet(-1, callStart); lastReadyTime.compareAndSet(-1, callStart); waitNanos.addAndGet(callStart - lastReadyTime.get()); boolean done = process(); long callEnd = System.nanoTime(); completedProcessNanos.addAndGet(callEnd - callStart); if (done) { doneNanos.compareAndSet(-1, callEnd); if (!isKilled()) { task.splitComplete(this); } return Futures.immediateCheckedFuture(null); } ListenableFuture<?> processResult = getProcessResult(); if (processResult.isDone()) { setSplitReady(); } return processResult; }
@GwtIncompatible // immediateCheckedFuture public void testMultipleImmediateCheckedFutures() throws Exception { CheckedFuture<String, MyException> future1 = immediateCheckedFuture(DATA1); CheckedFuture<String, MyException> future2 = immediateCheckedFuture(DATA2); // Verify that the proper objects are returned without waiting assertSame(DATA1, future1.get(0L, MILLISECONDS)); assertSame(DATA1, future1.checkedGet(0L, MILLISECONDS)); assertSame(DATA2, future2.get(0L, MILLISECONDS)); assertSame(DATA2, future2.checkedGet(0L, MILLISECONDS)); }
/** * Note: a handler that succeeds immediately resets the future to null, so there is a very small * window of opportunity for this scenario. Therefore we consider that if we find a completed * future, the connection was successfully re-established a few milliseconds ago, so we don't * start another attempt. */ @Test(groups = "unit") public void should_yield_to_another_handler_that_just_succeeded() { future.set(Futures.immediateCheckedFuture(null)); handler.start(); schedule.tick(); waitForCompletion(); assertThat(work.success).isFalse(); }
/** * Handles message by simply logging it. Child class should override this method for custom handling of message. * * @see org.apache.twill.internal.state.MessageCallback */ @Override public ListenableFuture<String> onReceived(String messageId, Message message) { LOG.info("Message received: {}", message); return Futures.immediateCheckedFuture(messageId); }
@Override public <T> CheckedFuture<Void, RuntimeException> post(Iterable<T> events) throws IllegalArgumentException { Preconditions.checkNotNull(events, "event is null"); for (T event : events) { Preconditions.checkNotNull(event, "event is null"); } return Futures.immediateCheckedFuture(null); }
@Override public CheckedFuture<Void, DiscoveryException> unannounce() { announcements.set(ImmutableSet.<ServiceDescriptor>of()); return Futures.immediateCheckedFuture(null); }
@Override public <T> CheckedFuture<Void, RuntimeException> post(Iterable<T> events) throws IllegalArgumentException { Preconditions.checkNotNull(events, "event is null"); for (T event : events) { Preconditions.checkNotNull(event, "event is null"); this.events.add(event); } return Futures.immediateCheckedFuture(null); }
@Override public CheckedFuture<Duration, DiscoveryException> announce(Set<ServiceAnnouncement> services) { Preconditions.checkNotNull(services, "services is null"); ImmutableSet.Builder<ServiceDescriptor> builder = ImmutableSet.builder(); for (ServiceAnnouncement service : services) { builder.add(service.toServiceDescriptor(nodeInfo)); } announcements.set(builder.build()); return Futures.immediateCheckedFuture(maxAge); }
@Override public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read( @Nonnull final YangInstanceIdentifier path) { // TODO(HONEYCOMB-192): switch to java.util.Optional when rest of ODL infra does final Optional<NormalizedNode<?, ?>> node = Optional.fromNullable(modification.readNode(path).orElse(null)); if (LOG.isTraceEnabled() && node.isPresent()) { LOG.trace("ConfigSnapshot.read: {}", node.get()); } return immediateCheckedFuture(node); }
@Override CheckedFuture<Boolean, ReadFailedException> doExists(final YangInstanceIdentifier path) { return Futures.immediateCheckedFuture(modification.readNode(path).isPresent()); }
@Override public Future<AsyncPage<T>> nextPageAsync() { if (nextPageCursor() == null || asyncPageFetcher == null) { return Futures.immediateCheckedFuture(null); } return asyncPageFetcher.nextPage(); } }
@Override public CheckedFuture<Boolean, ReadFailedException> exists(final YangInstanceIdentifier path) { LOG.debug("Tx: {} Exists: {}", getIdentifier(), path); checkNotNull(path, "Path must not be null."); try { return Futures.immediateCheckedFuture(read(path).checkedGet().isPresent()); } catch (ReadFailedException e) { return Futures.immediateFailedCheckedFuture(e); } } }
@Override public CheckedFuture<Boolean, ReadFailedException> exists(final YangInstanceIdentifier path) { LOG.debug("Tx: {} Exists: {}", getIdentifier(), path); checkNotNull(path, "Path must not be null."); try { return Futures.immediateCheckedFuture(read(path).checkedGet().isPresent()); } catch (ReadFailedException e) { return Futures.immediateFailedCheckedFuture(e); } } }
@Override public CheckedFuture<Boolean, ReadFailedException> exists(final YangInstanceIdentifier path) { try { return Futures.immediateCheckedFuture( read(path).checkedGet().isPresent()); } catch (ReadFailedException e) { return Futures.immediateFailedCheckedFuture(e); } } }
@Override public CheckedFuture<Boolean, ReadFailedException> exists(final YangInstanceIdentifier path) { try { return Futures.immediateCheckedFuture( read(path).checkedGet().isPresent()); } catch (ReadFailedException e) { return Futures.immediateFailedCheckedFuture(e); } } }
@Override public CheckedFuture<Duration, DiscoveryException> announce(Set<ServiceAnnouncement> services) { Preconditions.checkNotNull(services, "services is null"); ImmutableSet.Builder<ServiceDescriptor> builder = ImmutableSet.builder(); for (ServiceAnnouncement service : services) { builder.add(new ServiceDescriptor(service.getId(), nodeInfo.getNodeId(), service.getType(), nodeInfo.getPool(), null, ServiceState.RUNNING, service.getProperties())); } announcements.set(builder.build()); return Futures.immediateCheckedFuture(maxAge); }
@Override public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { final CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> data = read(store, path); try { return Futures.immediateCheckedFuture(data.get().isPresent()); } catch (InterruptedException | ExecutionException e) { return Futures.immediateFailedCheckedFuture(new ReadFailedException("Exists failed",e)); } }
@GwtIncompatible // immediateCheckedFuture public void testImmediateCheckedFuture() throws Exception { CheckedFuture<String, MyException> future = immediateCheckedFuture( DATA1); assertThat(future.toString()) .endsWith("[status=SUCCESS, result=[" + DATA1 + "]]"); // Verify that the proper object is returned without waiting assertSame(DATA1, future.get(0L, MILLISECONDS)); assertSame(DATA1, future.checkedGet(0L, MILLISECONDS)); }
@GwtIncompatible // immediateCheckedFuture public void testMultipleImmediateCheckedFutures() throws Exception { CheckedFuture<String, MyException> future1 = immediateCheckedFuture( DATA1); CheckedFuture<String, MyException> future2 = immediateCheckedFuture( DATA2); // Verify that the proper objects are returned without waiting assertSame(DATA1, future1.get(0L, MILLISECONDS)); assertSame(DATA1, future1.checkedGet(0L, MILLISECONDS)); assertSame(DATA2, future2.get(0L, MILLISECONDS)); assertSame(DATA2, future2.checkedGet(0L, MILLISECONDS)); }