[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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 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];
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 8
0
        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)}");
                }
            }
        }
Exemplo n.º 10
0
        [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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        [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);
        }