public async Task HasCorrectCapabilities() { var hostTask = Task.Run(() => { return(new UnixSocketStream(_pipeName, SocketUsage.Host)); }); var client = new UnixSocketStream(_pipeName, SocketUsage.Client); var host = await hostTask; Assert.IsTrue(host.CanWrite); Assert.IsTrue(client.CanWrite); Assert.IsTrue(host.CanRead); Assert.IsTrue(client.CanRead); Assert.IsFalse(host.CanSeek); Assert.IsFalse(client.CanSeek); Assert.Throws <NotSupportedException>(() => { var l = host.Length; }); Assert.Throws <NotSupportedException>(() => { var l = client.Length; }); Assert.Throws <NotSupportedException>(() => { var p = host.Position; }); Assert.Throws <NotSupportedException>(() => { var p = client.Position; }); Assert.Throws <NotSupportedException>(() => { host.Position = 1; }); Assert.Throws <NotSupportedException>(() => { client.Position = 1; }); Assert.Throws <NotSupportedException>(() => { host.Seek(1, SeekOrigin.Begin); }); Assert.Throws <NotSupportedException>(() => { host.Seek(1, SeekOrigin.Begin); }); }
//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 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"); }
//Characterization test public void CrashingClientMakesHostReadZeroBytes() { using (var p = RunTestProcess("CrashingClientMakesHostReadZeroBytes " + _pipeName)) { var message = new byte[] { 0x01 }; var host = new UnixSocketStream(_pipeName, SocketUsage.Host); ReadFromHostAndAssertMessageEquals(host, message); p.Kill(); var buffer = new byte[1]; var count = host.Read(buffer, 0, 1); Assert.AreEqual(0, count); } }
public Stream CreateStream(string name) { var pipeName = new PipeName(GetProcessIdentifier() + name); try { return(new UnixSocketStream(pipeName, SocketUsage.Host)); } catch (Exception) { UnixSocketStream.Unlink(pipeName); } return(new UnixSocketStream(pipeName, SocketUsage.Host)); }
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 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)); }