ConsumerNetworkClient implements Closeable { public void wakeup() { this.wakeup.set(true); this.client.wakeup(); } ConsumerNetworkClient(KafkaClient client,
        Metadata metadata,
        Time time,
        long retryBackoffMs,
        long requestTimeoutMs); void schedule(DelayedTask task, long at); void unschedule(DelayedTask task); RequestFuture<ClientResponse> send(Node node,
        ApiKeys api,
        AbstractRequest request); Node leastLoadedNode(); void awaitMetadataUpdate(); void wakeup(); void ensureFreshMetadata(); void poll(RequestFuture<?> future); boolean poll(RequestFuture<?> future, long timeout); void poll(long timeout); void poll(long timeout, long now); void pollNoWakeup(); void executeDelayedTasks(long now); void awaitPendingRequests(Node node); int pendingRequestCount(Node node); int pendingRequestCount(); void disableWakeups(); void enableWakeups(); @Override void close(); boolean connectionFailed(Node node); void tryConnect(Node node);  }
@Test public void wakeup() { RequestFuture<ClientResponse> future = consumerClient.send(node, ApiKeys.METADATA, heartbeatRequest()); consumerClient.wakeup(); try { consumerClient.poll(0); fail(); } catch (WakeupException e) { } client.respond(heartbeatResponse(Errors.NONE.code())); consumerClient.poll(future); assertTrue(future.isDone()); }