public async Task LegacyWebSocketReadWriteTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", TimeSpan.FromMinutes(1)); legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, TimeSpan.FromSeconds(60), null, null); // Test Write API TransportAsyncCallbackArgs args = new TransportAsyncCallbackArgs(); args.CompletedCallback = onWriteOperationComplete; args.SetBuffer(byteArray, 0, byteArray.Length); legacyClientWebSocketTransport.WriteAsync(args); // Test Read API args.CompletedCallback = onReadOperationComplete; if (legacyClientWebSocketTransport.ReadAsync(args)) { while (!readComplete) { Thread.Sleep(TimeSpan.FromSeconds(1)); } } // Once Read operation is complete, close websocket transport legacyClientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30)).Wait(CancellationToken.None); }
private static async Task <IotHubClientWebSocket> CreateLegacyClientWebSocketAsync(Uri webSocketUri, X509Certificate2 clientCertificate, TimeSpan timeout) { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(webSocketUri.Host, webSocketUri.Port, WebSocketConstants.Scheme, clientCertificate, timeout).ConfigureAwait(false); return(websocket); }
[Ignore] // TODO #581 public async Task LegacyWebSocketReadWriteTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); using var cts = new CancellationTokenSource(s_oneMinute); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, cts.Token).ConfigureAwait(false); s_legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); // Test Write API TransportAsyncCallbackArgs args = new TransportAsyncCallbackArgs(); args.CompletedCallback = s_onWriteOperationComplete; args.SetBuffer(s_byteArray, 0, s_byteArray.Length); s_legacyClientWebSocketTransport.WriteAsync(args); // Test Read API args.CompletedCallback = s_onReadOperationComplete; if (s_legacyClientWebSocketTransport.ReadAsync(args)) { while (!s_isReadComplete) { Thread.Sleep(s_oneSecond); } } // Once Read operation is complete, close websocket transport s_legacyClientWebSocketTransport.CloseAsync(s_thirtySeconds).Wait(CancellationToken.None); }
public async Task LegacyWebSocketWriteAfterCloseTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, TimeSpan.FromMinutes(1)).ConfigureAwait(false); legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, TimeSpan.FromMinutes(1), null, null); await legacyClientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30)).ConfigureAwait(false); var args = new TransportAsyncCallbackArgs(); args.SetBuffer(byteArray, 0, byteArray.Length); legacyClientWebSocketTransport.WriteAsync(args); }
[Ignore] // TODO #581 public async Task LegacyWebSocketWriteAfterCloseTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, s_oneMinute).ConfigureAwait(false); s_legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); await s_legacyClientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false); var args = new TransportAsyncCallbackArgs(); args.SetBuffer(s_byteArray, 0, s_byteArray.Length); s_legacyClientWebSocketTransport.WriteAsync(args); }
public async Task LegacyWebSocketWriteAfterAbortTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, TimeSpan.FromMinutes(1)).ConfigureAwait(false); legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, TimeSpan.FromMinutes(1), null, null); legacyClientWebSocketTransport.Abort(); var args = new TransportAsyncCallbackArgs(); args.SetBuffer(byteArray, 0, byteArray.Length); legacyClientWebSocketTransport.WriteAsync(args); Assert.Fail("Did not throw object disposed exception"); }
[Ignore] //TODO #318 public async Task LegacyWebSocketReadAfterAbortTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", s_oneMinute).ConfigureAwait(false); legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); legacyClientWebSocketTransport.Abort(); var args = new TransportAsyncCallbackArgs(); var byteArray = new byte[10]; args.SetBuffer(byteArray, 0, 10); legacyClientWebSocketTransport.ReadAsync(args); Assert.Fail("Did not throw object disposed exception"); }
[Ignore] // TODO #581 public async Task LegacyWebSocketWriteAfterAbortTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); using var cts = new CancellationTokenSource(s_oneMinute); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, cts.Token).ConfigureAwait(false); s_legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); s_legacyClientWebSocketTransport.Abort(); var args = new TransportAsyncCallbackArgs(); args.SetBuffer(s_byteArray, 0, s_byteArray.Length); s_legacyClientWebSocketTransport.WriteAsync(args); Assert.Fail("Did not throw object disposed exception"); }
[Ignore] // TODO #581 public async Task LegacyWebSocketReadAfterCloseTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); using var cts = new CancellationTokenSource(s_oneMinute); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, cts.Token).ConfigureAwait(false); s_legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); await s_legacyClientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false); var args = new TransportAsyncCallbackArgs(); var byteArray = new byte[10]; args.SetBuffer(byteArray, 0, 10); s_legacyClientWebSocketTransport.ReadAsync(args); }
[Ignore] //TODO #318 public async Task LegacyWebSocketReadWriteTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", s_oneMinute).ConfigureAwait(false); legacyClientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); // Test Write API TransportAsyncCallbackArgs args = new TransportAsyncCallbackArgs(); args.CompletedCallback = (TransportAsyncCallbackArgs args) => { if (args.BytesTransfered != s_byteArray.Length) { throw new InvalidOperationException("All the bytes sent were not transferred"); } if (args.Exception != null) { throw args.Exception; } }; args.SetBuffer(s_byteArray, 0, s_byteArray.Length); legacyClientWebSocketTransport.WriteAsync(args); // Test Read API bool isReadComplete = false; args.CompletedCallback = (TransportAsyncCallbackArgs args) => { if (args.Exception != null) { throw args.Exception; } // Verify that data matches what was sent if (s_byteArray.Length != args.Count) { throw new InvalidOperationException("Expected " + s_byteArray.Length + " bytes in response"); } for (int i = 0; i < args.Count; i++) { if (s_byteArray[i] != args.Buffer[i]) { throw new InvalidOperationException("Response contents do not match what was sent"); } } isReadComplete = true; }; if (legacyClientWebSocketTransport.ReadAsync(args)) { while (!isReadComplete) { await Task.Delay(s_oneSecond); } } // Once Read operation is complete, close websocket transport legacyClientWebSocketTransport.CloseAsync(s_thirtySeconds).Wait(CancellationToken.None); }