public void SetOfflineStatusOverridesNetworkUnavailableStatus()
        {
            var testData     = TestData.DataSource();
            var connectivity = new MockConnectivityStateManager(false);
            var config       = BasicConfig()
                               .DataSource(testData)
                               .ConnectivityStateManager(connectivity)
                               .Offline(true)
                               .Build();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                Assert.True(client.DataSourceStatusProvider.WaitFor(DataSourceState.SetOffline, TimeSpan.FromSeconds(5)));

                var statuses = new EventSink <DataSourceStatus>();
                client.DataSourceStatusProvider.StatusChanged += statuses.Add;

                client.SetOffline(false, TimeSpan.FromSeconds(1));

                var newStatus1 = statuses.ExpectValue();
                Assert.Equal(DataSourceState.NetworkUnavailable, newStatus1.State);

                connectivity.Connect(true);

                var newStatus2 = statuses.ExpectValue();
                Assert.Equal(DataSourceState.Initializing, newStatus2.State);

                var newStatus3 = statuses.ExpectValue();
                Assert.Equal(DataSourceState.Valid, newStatus3.State);
            }
        }
Пример #2
0
        public void EventProcessorIsOfflineWhenNetworkIsUnavailable()
        {
            var connectivityStateManager = new MockConnectivityStateManager(false);
            var eventProcessor           = new MockEventProcessor();
            var config = BasicConfig()
                         .ConnectivityStateManager(connectivityStateManager)
                         .Events(eventProcessor.AsSingletonFactory())
                         .Build();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                Assert.True(eventProcessor.Offline);

                connectivityStateManager.Connect(true);
                Assert.False(eventProcessor.Offline);

                connectivityStateManager.Connect(false);
                Assert.True(eventProcessor.Offline);

                // If client is configured offline...
                client.SetOffline(true, TimeSpan.FromSeconds(1));

                // ...then even if the network comes back on, events stay off
                connectivityStateManager.Connect(true);
                Assert.True(eventProcessor.Offline);
            }
        }
        public void DataSourceStatusStartsAsNetworkUnavailableIfNetworkIsUnavailable()
        {
            var connectivity = new MockConnectivityStateManager(false);
            var config       = BasicConfig().ConnectivityStateManager(connectivity).Build();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                var initialStatus = client.DataSourceStatusProvider.Status;
                Assert.Equal(DataSourceState.NetworkUnavailable, initialStatus.State);
                Assert.Null(initialStatus.LastError);
            }
        }
Пример #4
0
        public void ConnectionChangeShouldStopDataSource()
        {
            var mockUpdateProc = new MockPollingProcessor(null);
            var mockConnectivityStateManager = new MockConnectivityStateManager(true);
            var config = BasicConfig()
                         .DataSource(mockUpdateProc.AsFactory())
                         .ConnectivityStateManager(mockConnectivityStateManager)
                         .Build();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                mockConnectivityStateManager.Connect(false);
                Assert.False(mockUpdateProc.IsRunning);
            }
        }
        public void DiagnosticEventsAreNotSentWhenNetworkIsUnavailable()
        {
            var connectivityStateManager = new MockConnectivityStateManager(false);
            var config = BasicConfig()
                         .ConnectivityStateManager(connectivityStateManager)
                         .Events(Components.SendEvents()
                                 .EventSender(_testEventSender)
                                 .DiagnosticRecordingIntervalNoMinimum(TimeSpan.FromMilliseconds(50)))
                         .Build();

            using (var client = TestUtil.CreateClient(config, BasicUser))
            {
                _testEventSender.RequireNoPayloadSent(TimeSpan.FromMilliseconds(100));

                connectivityStateManager.Connect(true);

                _testEventSender.RequirePayload();
            }
        }