//Characterization test public void CrashingHostMakesClientWritingThrow() { using (var p = RunTestProcess("CrashingHostMakesClientWritingThrow " + _pipeName)) { var client = new UnixSocketStream(_pipeName, SocketUsage.Client); var message = new byte[] { 0x01 }; client.Write(message, 0, 1); p.Kill(); p.WaitForExit(); Assert.Throws <IOException>(() => client.Write(message, 0, 1)); } }
public async Task ClosingHostMakesClientWritingThrow() { var message = new byte[] { 0x01, 0x02, 0x03 }; var hostTask = Task.Run(() => { return(new UnixSocketStream(_pipeName, SocketUsage.Host)); }); var client = new UnixSocketStream(_pipeName, SocketUsage.Client); var host = await hostTask; var readTask = Task.Run(() => { ReadFromHostAndAssertMessageEquals(host, message); }); client.Write(message, 0, message.Length); await readTask; host.Close(); var buffer = new byte[1]; Assert.Throws <IOException>(() => client.Write(buffer, 0, 1)); }
public async Task CanCommunicate() { var message = new byte[] { 0x01, 0x02, 0x03 }; var receive = Task.Run(() => { var host = new UnixSocketStream(_pipeName, SocketUsage.Host); ReadFromHostAndAssertMessageEquals(host, message); }); var sender = new UnixSocketStream(_pipeName, SocketUsage.Client); sender.Write(message, 0, message.Length); await AwaitOrTimeOut(TimeSpan.FromSeconds(3), receive, "receive"); }
public async Task ClosingClientMakesHostReadZeroBytes() { var message = new byte[] { 0x01, 0x02, 0x03 }; var hostTask = Task.Run(() => { return(new UnixSocketStream(_pipeName, SocketUsage.Host)); }); var client = new UnixSocketStream(_pipeName, SocketUsage.Client); var host = await hostTask; var readTask = Task.Run(() => { ReadFromHostAndAssertMessageEquals(host, message); }); client.Write(message, 0, message.Length); await readTask; client.Close(); var buffer = new byte[1]; Assert.AreEqual(0, host.Read(buffer, 0, 1)); }