[Ignore] // TODO #581
        public async Task ReadWriteTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            Uri uri = new Uri($"ws://{IotHubName}:{Port}{WebSocketConstants.UriSuffix}");
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            s_clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);

            // Test Write API
            var args = new TransportAsyncCallbackArgs();

            args.CompletedCallback = s_onWriteOperationComplete;
            args.SetBuffer(s_byteArray, 0, s_byteArray.Length);
            s_clientWebSocketTransport.WriteAsync(args);

            // Test Read API
            args.CompletedCallback = s_onReadOperationComplete;
            if (s_clientWebSocketTransport.ReadAsync(args))
            {
                while (!s_isReadComplete)
                {
                    Thread.Sleep(s_oneSecond);
                }
            }

            // Once Read operation is complete, close websocket transport
            // Test Close API
            await s_clientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false);
        }
Exemple #2
0
        public async Task ReadWriteTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            Uri uri = new Uri("ws://" + IotHubName + ":" + Port + WebSocketConstants.UriSuffix);
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);

            // Test Write API
            var args = new TransportAsyncCallbackArgs();

            args.CompletedCallback = onWriteOperationComplete;
            args.SetBuffer(byteArray, 0, byteArray.Length);
            clientWebSocketTransport.WriteAsync(args);

            // Test Read API
            args.CompletedCallback = onReadOperationComplete;
            if (clientWebSocketTransport.ReadAsync(args))
            {
                while (!readComplete)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
            }

            // Once Read operation is complete, close websocket transport
            // Test Close API
            await clientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30)).ConfigureAwait(false);
        }
Exemple #3
0
        [Ignore] //TODO #318
        public async Task WriteAfterCloseTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            var uri = new Uri($"ws://{IotHubName}:{Port}{WebSocketConstants.UriSuffix}");
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            using var clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);
            await clientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false);

            var args = new TransportAsyncCallbackArgs();

            args.SetBuffer(s_byteArray, 0, s_byteArray.Length);
            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;
                }
            };
            clientWebSocketTransport.WriteAsync(args);
        }
        public void ReadWriteAfterCloseTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            Uri uri = new Uri("ws://" + IotHubName + ":" + Port + WebSocketConstants.UriSuffix);

            websocket.ConnectAsync(uri, CancellationToken.None).Wait(CancellationToken.None);
            clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);
            clientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30)).Wait(CancellationToken.None);

            try
            {
                TransportAsyncCallbackArgs args = new TransportAsyncCallbackArgs();
                args.SetBuffer(byteArray, 0, byteArray.Length);
                clientWebSocketTransport.WriteAsync(args);
                Assert.Fail("Did not throw object disposed exception");
            }
            catch (ObjectDisposedException)
            {
            }

            try
            {
                TransportAsyncCallbackArgs args = new TransportAsyncCallbackArgs();
                byte[] byteArray = new byte[10];
                args.SetBuffer(byteArray, 0, 10);
                clientWebSocketTransport.ReadAsync(args);
                Assert.Fail("Did not throw object disposed exception");
            }
            catch (ObjectDisposedException)
            {
            }
        }
        static void OnReadOperationComplete(TransportAsyncCallbackArgs args)
        {
            if (args.Exception != null)
            {
                throw args.Exception;
            }

            // Verify that data matches what was sent
            if (byteArray.Length != args.Count)
            {
                throw new InvalidOperationException("Expected " + byteArray.Length + " bytes in response");
            }

            for (int i = 0; i < args.Count; i++)
            {
                if (byteArray[i] != args.Buffer[i])
                {
                    throw new InvalidOperationException("Response contents do not match what was sent");
                }
            }

            // Once Read operation is complete, close websocket transport
            // Test Close API
            clientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30)).Wait(CancellationToken.None);
        }
Exemple #6
0
        public async Task WriteAfterCloseTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            var uri = new Uri("ws://" + IotHubName + ":" + Port + WebSocketConstants.UriSuffix);
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);
            await clientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30)).ConfigureAwait(false);

            var args = new TransportAsyncCallbackArgs();

            args.SetBuffer(byteArray, 0, byteArray.Length);
            args.CompletedCallback = onWriteOperationComplete;
            clientWebSocketTransport.WriteAsync(args);
        }
        [Ignore] // TODO #581
        public async Task WriteAfterCloseTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            var uri = new Uri($"ws://{IotHubName}:{Port}{WebSocketConstants.UriSuffix}");
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            s_clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);
            await s_clientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false);

            var args = new TransportAsyncCallbackArgs();

            args.SetBuffer(s_byteArray, 0, s_byteArray.Length);
            args.CompletedCallback = s_onWriteOperationComplete;
            s_clientWebSocketTransport.WriteAsync(args);
        }
Exemple #8
0
        [Ignore] //TODO #318
        public async Task ReadAfterCloseTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            var uri = new Uri($"ws://{IotHubName}:{Port}{WebSocketConstants.UriSuffix}");
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            using var clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);
            await clientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false);

            var args      = new TransportAsyncCallbackArgs();
            var byteArray = new byte[10];

            args.SetBuffer(byteArray, 0, 10);
            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");
                    }
                }
            };
            clientWebSocketTransport.ReadAsync(args);
        }
        public async Task ReadWriteTest()
        {
            var websocket = new ClientWebSocket();
            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            Uri uri = new Uri("ws://" + IotHubName + ":" + Port + WebSocketConstants.UriSuffix);
            await websocket.ConnectAsync(uri, CancellationToken.None);
            clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);

            // Test Write API
            var args = new TransportAsyncCallbackArgs();
            args.CompletedCallback = onWriteOperationComplete;
            args.SetBuffer(byteArray, 0, byteArray.Length);
            clientWebSocketTransport.WriteAsync(args);

            // Test Read API
            args.CompletedCallback = onReadOperationComplete;
            if (clientWebSocketTransport.ReadAsync(args))
            {
                while (!readComplete)
                {
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
            }

            // Once Read operation is complete, close websocket transport
            // Test Close API
            await clientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30));
        }
        public async Task WriteAfterCloseTest()
        {
            var websocket = new ClientWebSocket();
            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            var uri = new Uri("ws://" + IotHubName + ":" + Port + WebSocketConstants.UriSuffix);
            await websocket.ConnectAsync(uri, CancellationToken.None);
            clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);
            await clientWebSocketTransport.CloseAsync(TimeSpan.FromSeconds(30));

            var args = new TransportAsyncCallbackArgs();
            args.SetBuffer(byteArray, 0, byteArray.Length);
            args.CompletedCallback = onWriteOperationComplete;
            clientWebSocketTransport.WriteAsync(args);
        }
Exemple #11
0
        public async Task ReadWriteTest()
        {
            var websocket = new ClientWebSocket();

            // Set SubProtocol to AMQPWSB10
            websocket.Options.AddSubProtocol(WebSocketConstants.SubProtocols.Amqpwsb10);
            var uri = new Uri($"ws://{IotHubName}:{Port}{WebSocketConstants.UriSuffix}");
            await websocket.ConnectAsync(uri, CancellationToken.None).ConfigureAwait(false);

            using var clientWebSocketTransport = new ClientWebSocketTransport(websocket, null, null);

            // Test Write API
            var 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);
            clientWebSocketTransport.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 (clientWebSocketTransport.ReadAsync(args))
            {
                while (!isReadComplete)
                {
                    await Task.Delay(s_oneSecond);
                }
            }

            // Once Read operation is complete, close websocket transport
            // Test Close API
            await clientWebSocketTransport.CloseAsync(s_thirtySeconds).ConfigureAwait(false);
        }