public void VerifyUnrecoverableHttpError(int errorStatus) { var errorCondition = ServerErrorCondition.FromStatus(errorStatus); WithServerErrorCondition(errorCondition, null, (uri, httpConfig, recorder) => { using (var dataSource = MakeDataSource(uri, BasicUser, c => c.DataSource(Components.PollingDataSource().PollInterval(BriefInterval)) .Http(httpConfig))) { var initTask = dataSource.Start(); bool completed = initTask.Wait(TimeSpan.FromSeconds(1)); Assert.True(completed); Assert.False(dataSource.Initialized); var status = _updateSink.ExpectStatusUpdate(); errorCondition.VerifyDataSourceStatusError(status); recorder.RequireRequest(); recorder.RequireNoRequests(TimeSpan.FromMilliseconds(100)); // did not retry errorCondition.VerifyLogMessage(logCapture); } }); }
public void VerifyUnrecoverableHttpError(int errorStatus) { var errorCondition = ServerErrorCondition.FromStatus(errorStatus); WithServerErrorCondition(errorCondition, StreamWithEmptyData, (uri, httpConfig, recorder) => { using (var dataSource = MakeDataSource(uri, BasicUser, c => c.DataSource(Components.StreamingDataSource().InitialReconnectDelay(TimeSpan.Zero)) .Http(httpConfig))) { var initTask = dataSource.Start(); var status = _updateSink.ExpectStatusUpdate(); errorCondition.VerifyDataSourceStatusError(status); _updateSink.ExpectNoMoreActions(); recorder.RequireRequest(); recorder.RequireNoRequests(TimeSpan.FromMilliseconds(100)); Assert.True(AsyncUtils.WaitSafely(() => initTask, TimeSpan.FromSeconds(1))); errorCondition.VerifyLogMessage(logCapture); } }); }
public void VerifyRecoverableHttpError(int errorStatus) { var errorCondition = ServerErrorCondition.FromStatus(errorStatus); WithServerErrorCondition(errorCondition, StreamWithEmptyData, (uri, httpConfig, recorder) => { using (var dataSource = MakeDataSource(uri, BasicUser, c => c.DataSource(Components.StreamingDataSource().InitialReconnectDelay(TimeSpan.Zero)) .Http(httpConfig))) { var initTask = dataSource.Start(); var status = _updateSink.ExpectStatusUpdate(); errorCondition.VerifyDataSourceStatusError(status); // We don't check here for a second status update to the Valid state, because that was // done by DataSourceUpdatesImpl when Init was called - our test fixture doesn't do it. _updateSink.ExpectInit(BasicUser); recorder.RequireRequest(); recorder.RequireRequest(); Assert.True(AsyncUtils.WaitSafely(() => initTask, TimeSpan.FromSeconds(1))); errorCondition.VerifyLogMessage(logCapture); } }); }
public void VerifyRecoverableError(int errorStatus) { var errorCondition = ServerErrorCondition.FromStatus(errorStatus); var successResponse = PollingResponse(AllData); // Verify that it does not immediately retry the failed request WithServerErrorCondition(errorCondition, successResponse, (uri, httpConfig, recorder) => { using (var dataSource = MakeDataSource(uri, BasicUser, c => c.DataSource(Components.PollingDataSource().PollInterval(TimeSpan.FromHours(1))) .Http(httpConfig))) { dataSource.Start(); var status = _updateSink.ExpectStatusUpdate(); errorCondition.VerifyDataSourceStatusError(status); recorder.RequireRequest(); recorder.RequireNoRequests(TimeSpan.FromMilliseconds(100)); errorCondition.VerifyLogMessage(logCapture); } }); // Verify (with a small polling interval) that it does do another request at the next interval WithServerErrorCondition(errorCondition, successResponse, (uri, httpConfig, recorder) => { using (var dataSource = MakeDataSource(uri, BasicUser, c => c.DataSource(Components.PollingDataSource().PollIntervalNoMinimum(BriefInterval)) .Http(httpConfig))) { var initTask = dataSource.Start(); bool completed = initTask.Wait(TimeSpan.FromSeconds(1)); Assert.True(completed); Assert.True(dataSource.Initialized); var status = _updateSink.ExpectStatusUpdate(); errorCondition.VerifyDataSourceStatusError(status); // We don't check here for a second status update to the Valid state, because that was // done by DataSourceUpdatesImpl when Init was called - our test fixture doesn't do it. recorder.RequireRequest(); recorder.RequireRequest(); errorCondition.VerifyLogMessage(logCapture); } }); }