public async Task WhenStreamVeryLargeStreamToServerThenBroadcasts([Random(750000, 1500000, 5)] int length) { var responseLength = 0; var stream = new EnumerableStream(Enumerable.Repeat((byte)123, length)); var waitHandle = new ManualResetEventSlim(false); Func <MessageEventArgs, Task> onMessage = async e => { var bytes = await e.Data.ReadBytes(length).ConfigureAwait(false); responseLength = bytes.Count(x => x == 123); waitHandle.Set(); }; using (var sender = new WebSocket(WsLocalhostRadio)) { SetCredentials(sender); using (var client = new WebSocket(WsLocalhostRadio, onMessage: onMessage)) { SetCredentials(client); await sender.Connect().ConfigureAwait(false); await client.Connect().ConfigureAwait(false); await sender.Send(stream).ConfigureAwait(false); waitHandle.Wait(); Assert.AreEqual(length, responseLength); } } }
public async Task WhenStreamVeryLargeStreamToServerThenBroadcasts() { var responseLength = 0; const int Length = 1000000; var stream = new EnumerableStream(Enumerable.Repeat((byte)123, Length)); var waitHandle = new ManualResetEventSlim(false); var clientSslConfiguration = new ClientSslConfiguration("localhost", certificateValidationCallback: (sender, certificate, chain, errors) => true); Func <MessageEventArgs, Task> onMessage = async e => { var bytes = await e.Data.ReadBytes(Length).ConfigureAwait(false); responseLength = bytes.Count(x => x == 123); waitHandle.Set(); }; using (var sender = new WebSocket("wss://localhost:443/radio", sslAuthConfiguration: clientSslConfiguration)) { using (var client = new WebSocket("wss://localhost:443/radio", sslAuthConfiguration: clientSslConfiguration, onMessage: onMessage)) { await sender.Connect().ConfigureAwait(false); await client.Connect().ConfigureAwait(false); await sender.Send(stream).ConfigureAwait(false); waitHandle.Wait(); Assert.AreEqual(Length, responseLength); } } }
public async Task WhenStreamVeryLargeStreamToServerThenResponds([Random(750000, 1500000, 5)] int length) { var responseLength = 0; var stream = new EnumerableStream(Enumerable.Repeat((byte)123, length)); var waitHandle = new ManualResetEventSlim(false); Func <MessageEventArgs, Task> onMessage = async e => { var bytesRead = 0; var readLength = 10240000; do { var buffer = new byte[readLength]; bytesRead = await e.Data.ReadAsync(buffer, 0, readLength).ConfigureAwait(false); responseLength += buffer.Count(x => x == 123); }while (bytesRead == readLength); waitHandle.Set(); }; using (var client = new WebSocket(WsLocalhostEcho, onMessage: onMessage)) { SetCredentials(client); await client.Connect().ConfigureAwait(false); await client.Send(stream).ConfigureAwait(false); var result = waitHandle.Wait(Debugger.IsAttached ? -1 : 20000); Assert.AreEqual(length, responseLength); } }