[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 LegacyWebSocketReadWriteTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); await websocket.ConnectAsync(IotHubName, Port, "ws://", null, TimeSpan.FromMinutes(1)).ConfigureAwait(false); 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); }
public void LegacyClientWebSocketTransportWriteWithoutConnectTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); var clientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, TimeSpan.FromSeconds(60), null, null); var args = new TransportAsyncCallbackArgs(); args.SetBuffer(byteArray, 0, byteArray.Length); clientWebSocketTransport.WriteAsync(args); }
public LegacyClientWebSocketTransport(IotHubClientWebSocket webSocket, TimeSpan operationTimeout, EndPoint localEndpoint, EndPoint remoteEndpoint) : base("legacyclientwebsocket") { this.webSocket = webSocket; this.operationTimeout = operationTimeout; this.localEndPoint = localEndpoint; this.remoteEndPoint = remoteEndpoint; this.asyncReadBufferSize = MaxReadBufferSize; // TODO: read from Config Settings this.asyncReadBuffer = new byte[this.asyncReadBufferSize]; }
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"); }
private async Task <TransportBase> CreateClientWebSocketTransportAsync(CancellationToken cancellationToken) { try { cancellationToken.ThrowIfCancellationRequested(); if (Logging.IsEnabled) { Logging.Enter(this, nameof(CreateClientWebSocketTransportAsync)); } string additionalQueryParams = ""; var websocketUri = new Uri($"{WebSocketConstants.Scheme}{_hostName}:{WebSocketConstants.SecurePort}{WebSocketConstants.UriSuffix}{additionalQueryParams}"); // Use Legacy WebSocket if it is running on Windows 7 or older. Windows 7/Windows 2008 R2 is version 6.1 #if NET451 if (Environment.OSVersion.Version.Major < 6 || (Environment.OSVersion.Version.Major == 6 && Environment.OSVersion.Version.Minor <= 1)) { IotHubClientWebSocket websocket = await CreateLegacyClientWebSocketAsync( websocketUri, this._amqpTransportSettings.ClientCertificate, cancellationToken) .ConfigureAwait(false); return(new LegacyClientWebSocketTransport( websocket, this._amqpTransportSettings.OperationTimeout, null, null)); } else { #endif ClientWebSocket websocket = await CreateClientWebSocketAsync(websocketUri, cancellationToken).ConfigureAwait(false); return(new ClientWebSocketTransport(websocket, null, null)); #if NET451 } #endif } finally { if (Logging.IsEnabled) { Logging.Exit(this, $"{nameof(CreateClientWebSocketTransportAsync)}"); } } }
[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); }
public async Task LegacyClientWebSocketTransportReadWithoutConnectTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); var clientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, TimeSpan.FromSeconds(60), null, null); var args = new TransportAsyncCallbackArgs(); var byteArray = new byte[10]; args.SetBuffer(byteArray, 0, 10); if (clientWebSocketTransport.ReadAsync(args)) { while (!readComplete) { Thread.Sleep(TimeSpan.FromSeconds(1)); } } await websocket.CloseAsync().ConfigureAwait(false); }
public async Task LegacyClientWebSocketTransportReadWithoutConnectTest() { var websocket = new IotHubClientWebSocket(WebSocketConstants.SubProtocols.Amqpwsb10); var clientWebSocketTransport = new LegacyClientWebSocketTransport(websocket, s_oneMinute, null, null); var args = new TransportAsyncCallbackArgs(); 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; }; var byteArray = new byte[10]; args.SetBuffer(byteArray, 0, 10); if (clientWebSocketTransport.ReadAsync(args)) { while (!isReadComplete) { await Task.Delay(s_oneSecond); } } await websocket.CloseAsync().ConfigureAwait(false); }
[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); }