@Test(timeout = 10000)
public void testCloseAbortsRead() throws InterruptedException, ExecutionException {
Segment segment = new Segment("scope", "testRetry", 4);
PravegaNodeUri endpoint = new PravegaNodeUri("localhost", SERVICE_PORT);
MockConnectionFactoryImpl connectionFactory = new MockConnectionFactoryImpl();
MockController controller = new MockController(endpoint.getEndpoint(), endpoint.getPort(), connectionFactory);
@Cleanup
AsyncSegmentInputStreamImpl in = new AsyncSegmentInputStreamImpl(controller, connectionFactory, segment, "");
ClientConnection c = mock(ClientConnection.class);
connectionFactory.provideConnection(endpoint, c);
in.getConnection().get();
CompletableFuture<SegmentRead> read = in.read(1234, 5678);
assertFalse(read.isDone());
in.close();
assertThrows(ConnectionClosedException.class, () -> Futures.getThrowingException(read));
verify(c).close();
}