InitReceived() public method

public InitReceived ( ) : void
return void
        public async Task InitTaskIsFailedIfFailureOccursAfterStartRequestStarted()
        {
            var mockTransportHelper = new Mock <TransportHelper>();
            var mockConnection      = new Mock <IConnection>();

            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(0.5));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            var onFailureInvoked = false;

            initHandler.OnFailure += () => onFailureInvoked = true;

            var exception = new Exception("test exception");

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()))
            .Returns <IHttpClient, IConnection, string, string>(
                (httpClient, connection, connectionData, transport) =>
            {
                initHandler.Fail(exception);
                return(Task.FromResult("{ \"Response\" : \"started\" }"));
            });

            initHandler.InitReceived();

            var startException = await Assert.ThrowsAsync <StartException>(() => initHandler.Task);

            Assert.Same(exception, startException.InnerException);

            Assert.True(onFailureInvoked);
        }
        public async Task TimeoutDoesNotFailTheTaskAfterInitReceived()
        {
            var mockTransportHelper = new Mock <TransportHelper>();
            var mockConnection      = new Mock <IConnection>();

            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromMilliseconds(200));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()))
            .Returns <IHttpClient, IConnection, string, string>(
                (httpClient, connection, connectionData, transport) =>
                // wait for the timeout to fire
                Task.Delay(250).ContinueWith(t => "{ \"Response\" : \"started\" }"));

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);
            var onFailureInvoked = false;

            initHandler.OnFailure += () => onFailureInvoked = true;

            initHandler.InitReceived();

            await initHandler.Task;

            Assert.False(onFailureInvoked);
        }
        public async Task FailIsNoOpAfterStartCompletedSuccessfully()
        {
            var mockTransportHelper = new Mock <TransportHelper>();
            var mockConnection      = new Mock <IConnection>();

            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromMilliseconds(200));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            var onFailureInvoked = false;

            initHandler.OnFailure += () => onFailureInvoked = true;

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()))
            .Returns <IHttpClient, IConnection, string, string>(
                (httpClient, connection, connectionData, transport) => Task.FromResult("{ \"Response\" : \"started\" }"));

            initHandler.InitReceived();
            Assert.False(initHandler.TryFailStart());
            Assert.False(initHandler.TryFailStart());

            await initHandler.Task;

            Assert.False(onFailureInvoked);
        }
        public async Task InitTaskThrowsStartFailedExceptionIfStartRequestReturnsIncorrectResult()
        {
            var mockTransportHelper = new Mock <TransportHelper>();
            var mockConnection      = new Mock <IConnection>();

            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(5));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            var onFailureInvoked = false;

            initHandler.OnFailure += () => onFailureInvoked = true;

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()))
            .Returns <IHttpClient, IConnection, string, string>(
                (httpClient, connection, connectionData, transport)
                => Task.FromResult("{ \"foo\" : \"bar\" }"));

            initHandler.InitReceived();

            await Assert.ThrowsAsync <StartException>(() => initHandler.Task);

            Assert.True(onFailureInvoked);
        }
        public async Task StartRequestNotCalledIfTransportAlreadyFailed()
        {
            var mockConnection = new Mock <IConnection>();

            mockConnection.Setup(c => c.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(1));

            var mockTransportHelper = new Mock <TransportHelper>();
            var failureInvokedTcs   = new TaskCompletionSource <object>();

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            initHandler.OnFailure += () => failureInvokedTcs.TrySetResult(null);

            Assert.True(initHandler.TryFailStart());
            Assert.True(initHandler.TryFailStart());

            await failureInvokedTcs.Task.OrTimeout();

            initHandler.InitReceived();

            mockTransportHelper.Verify(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()), Times.Never());
        }
Beispiel #6
0
        public void InitTaskThrowsStartFailedExceptionIfStartRequestThrows()
        {
            var mockTransportHelper = new Mock <TransportHelper>();
            var mockConnection      = new Mock <IConnection>();

            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(5));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            var onFailureInvoked = false;

            initHandler.OnFailure += () => onFailureInvoked = true;

            var exception = new Exception("test exception");

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()))
            .Returns <IHttpClient, IConnection, string, string>(
                (httpClient, connection, connectionData, transport) =>
            {
                var tcs = new TaskCompletionSource <string>();
                tcs.SetException(exception);
                return(tcs.Task);
            });

            initHandler.InitReceived();

            var startException =
                Assert.Throws <AggregateException>(
                    () => Assert.True(initHandler.Task.Wait(TimeSpan.FromSeconds(1)))).InnerException;

            Assert.IsType <StartException>(startException);
            // startException.InnerException is an AggregateException
            Assert.Same(exception, startException.InnerException.InnerException);
            Assert.True(onFailureInvoked);
        }
        public void StartRequestNotCalledIfTransportAlreadyFailed()
        {
            var mockConnection = new Mock<IConnection>();
            mockConnection.Setup(c => c.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(1));

            var mockTransportHelper = new Mock<TransportHelper>();
            var failureInvokedMre = new ManualResetEvent(false);

            var initHandler = new TransportInitializationHandler(Mock.Of<IHttpClient>(), mockConnection.Object,
                string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            initHandler.OnFailure += () => failureInvokedMre.Set();

            initHandler.Fail();

            Assert.True(failureInvokedMre.WaitOne(1000));

            initHandler.InitReceived();

            mockTransportHelper.Verify(
                h => h.GetStartResponse(It.IsAny<IHttpClient>(), It.IsAny<IConnection>(), 
                    It.IsAny<string>(), It.IsAny<string>()), Times.Never());
        }
Beispiel #8
0
        public void StartRequestNotCalledIfTransportAlreadyFailed()
        {
            var mockConnection = new Mock <IConnection>();

            mockConnection.Setup(c => c.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(1));

            var mockTransportHelper = new Mock <TransportHelper>();
            var failureInvokedMre   = new ManualResetEvent(false);

            var initHandler = new TransportInitializationHandler(Mock.Of <IHttpClient>(), mockConnection.Object,
                                                                 string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            initHandler.OnFailure += () => failureInvokedMre.Set();

            initHandler.Fail();

            Assert.True(failureInvokedMre.WaitOne(1000));

            initHandler.InitReceived();

            mockTransportHelper.Verify(
                h => h.GetStartResponse(It.IsAny <IHttpClient>(), It.IsAny <IConnection>(),
                                        It.IsAny <string>(), It.IsAny <string>()), Times.Never());
        }
        public void InitTaskIsFailedIfFailureOccursAfterStartRequestStarted()
        {
            var mockTransportHelper = new Mock<TransportHelper>();
            var mockConnection = new Mock<IConnection>();
            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(0.5));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            var initHandler = new TransportInitializationHandler(Mock.Of<IHttpClient>(), mockConnection.Object,
                string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            var onFailureInvoked = false;
            initHandler.OnFailure += () => onFailureInvoked = true;

            var exception = new Exception("test exception");

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny<IHttpClient>(), It.IsAny<IConnection>(),
                    It.IsAny<string>(), It.IsAny<string>()))
                .Returns<IHttpClient, IConnection, string, string>(
                    (httpClient, connection, connectionData, transport) =>
                    {
                        initHandler.Fail(exception);
                        return Task.FromResult("{ \"Response\" : \"started\" }");
                    });

            initHandler.InitReceived();

            var startException = 
                Assert.Throws<AggregateException>(
                    () => Assert.True(initHandler.Task.Wait(TimeSpan.FromSeconds(1)))).InnerException;

            Assert.IsType<StartException>(startException);
            Assert.Same(exception, startException.InnerException);

            Assert.True(onFailureInvoked);
        }
        public async Task TimeoutDoesNotFailTheTaskAfterInitReceived()
        {
            var mockTransportHelper = new Mock<TransportHelper>();
            var mockConnection = new Mock<IConnection>();
            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromMilliseconds(200));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny<IHttpClient>(), It.IsAny<IConnection>(),
                    It.IsAny<string>(), It.IsAny<string>()))
                .Returns<IHttpClient, IConnection, string, string>(
                    (httpClient, connection, connectionData, transport) =>
                        // wait for the timeout to fire
                        Task.Delay(250).ContinueWith(t => "{ \"Response\" : \"started\" }"));

            var initHandler = new TransportInitializationHandler(Mock.Of<IHttpClient>(), mockConnection.Object,
                string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);
            var onFailureInvoked = false;  
            initHandler.OnFailure += () => onFailureInvoked = true;

            initHandler.InitReceived();

            await initHandler.Task;
            Assert.False(onFailureInvoked);
        }
        public void InitTaskThrowsStartFailedExceptionIfStartRequestReturnsIncorrectResult()
        {
            var mockTransportHelper = new Mock<TransportHelper>();
            var mockConnection = new Mock<IConnection>();
            mockConnection.Setup(p => p.TotalTransportConnectTimeout).Returns(TimeSpan.FromSeconds(5));
            mockConnection.Setup(c => c.JsonSerializer).Returns(JsonSerializer.CreateDefault());

            var initHandler = new TransportInitializationHandler(Mock.Of<IHttpClient>(), mockConnection.Object,
                string.Empty, "fakeTransport", CancellationToken.None, mockTransportHelper.Object);

            var onFailureInvoked = false;
            initHandler.OnFailure += () => onFailureInvoked = true;

            mockTransportHelper.Setup(
                h => h.GetStartResponse(It.IsAny<IHttpClient>(), It.IsAny<IConnection>(),
                    It.IsAny<string>(), It.IsAny<string>()))
                .Returns<IHttpClient, IConnection, string, string>(
                    (httpClient, connection, connectionData, transport) 
                        => Task.FromResult("{ \"foo\" : \"bar\" }"));

            initHandler.InitReceived();

            Assert.IsType<StartException>(
                Assert.Throws<AggregateException>(
                    () => Assert.True(initHandler.Task.Wait(TimeSpan.FromSeconds(1)))).InnerException);

            Assert.True(onFailureInvoked);
        }