public void Outgoing_TCP_stream_must_shut_down_both_streams_when_connection_is_aborted_remotely()
{
this.AssertAllStagesStopped(() =>
{
// Client gets a PeerClosed event and does not know that the write side is also closed
var server = new Server(this);
var tcpWriteProbe = new TcpWriteProbe(this);
var tcpReadProbe = new TcpReadProbe(this);
Source.FromPublisher(tcpWriteProbe.PublisherProbe)
.Via(Sys.TcpStream().OutgoingConnection(server.Address))
.To(Sink.FromSubscriber(tcpReadProbe.SubscriberProbe))
.Run(Materializer);
var serverConnection = server.WaitAccept();
serverConnection.Abort();
tcpReadProbe.SubscriberProbe.ExpectSubscriptionAndError();
tcpWriteProbe.TcpWriteSubscription.Value.ExpectCancellation();
serverConnection.ExpectTerminated();
}, Materializer);
}