public void TestBulkPullPermanentExceptionSurrender() { if (!Boolean.Parse((string)GetProperty("replicationTestsEnabled"))) { Assert.Inconclusive("Replication tests disabled."); return; } Log.Domains.Sync.Level = Log.LogLevel.Debug; var fakeFactory = new MockHttpClientFactory(false); FlowControl flow = new FlowControl(new FlowItem[] { new ExceptionThrower(new SocketException()) { ExecutionCount = -1 }, }); fakeFactory.HttpHandler.SetResponder("_bulk_get", (request) => flow.ExecuteNext<HttpResponseMessage>()); manager.DefaultHttpClientFactory = fakeFactory; using (var remoteDb = _sg.CreateDatabase(TempDbName())) { CreatePullAndTest(20, remoteDb, repl => Assert.IsTrue(database.GetDocumentCount() < 20, "Somehow got all the docs")); } }
public void TestBulkPullPermanentExceptionSurrender() { if (!Boolean.Parse((string)Runtime.Properties["replicationTestsEnabled"])) { Assert.Inconclusive("Replication tests disabled."); return; } var fakeFactory = new MockHttpClientFactory(false); FlowControl flow = new FlowControl(new FlowItem[] { new ExceptionThrower(new TaskCanceledException()) { ExecutionCount = -1 }, }); fakeFactory.HttpHandler.SetResponder("_bulk_get", (request) => flow.ExecuteNext<HttpResponseMessage>()); manager.DefaultHttpClientFactory = fakeFactory; ManagerOptions.Default.RequestTimeout = TimeSpan.FromSeconds(5); using (var remoteDb = _sg.CreateDatabase(TempDbName())) { CreatePullAndTest(20, remoteDb, repl => Assert.IsTrue(database.GetDocumentCount() < 20, "Somehow got all the docs")); } }
public void TestBulkPullTransientExceptionRecovery() { if (!Boolean.Parse((string)GetProperty("replicationTestsEnabled"))) { Assert.Inconclusive("Replication tests disabled."); return; } var fakeFactory = new MockHttpClientFactory(false); FlowControl flow = new FlowControl(new FlowItem[] { new FunctionRunner<HttpResponseMessage>(() => { Sleep(7000); return new RequestCorrectHttpMessage(); }) { ExecutionCount = 2 }, new FunctionRunner<HttpResponseMessage>(() => { fakeFactory.HttpHandler.ClearResponders(); return new RequestCorrectHttpMessage(); }) { ExecutionCount = 1 } }); fakeFactory.HttpHandler.SetResponder("_bulk_get", (request) => flow.ExecuteNext<HttpResponseMessage>()); manager.DefaultHttpClientFactory = fakeFactory; #pragma warning disable 618 ManagerOptions.Default.RequestTimeout = TimeSpan.FromSeconds(5); #pragma warning restore 618 using (var remoteDb = _sg.CreateDatabase(TempDbName())) { CreatePullAndTest(20, remoteDb, (repl) => Assert.AreEqual(20, database.GetDocumentCount(), "Didn't recover from the error")); } Thread.Sleep(1000); }
public void TestBulkPullTransientExceptionRecovery() { if (!Boolean.Parse((string)Runtime.Properties["replicationTestsEnabled"])) { Assert.Inconclusive("Replication tests disabled."); return; } var initialRowCount = SyncGatewayRowCount(); var fakeFactory = new MockHttpClientFactory(false); FlowControl flow = new FlowControl(new FlowItem[] { new FunctionRunner<HttpResponseMessage>(() => { Thread.Sleep(7000); return new RequestCorrectHttpMessage(); }) { ExecutionCount = 2 }, new FunctionRunner<HttpResponseMessage>(() => { fakeFactory.HttpHandler.ClearResponders(); return new RequestCorrectHttpMessage(); }) { ExecutionCount = 1 } }); fakeFactory.HttpHandler.SetResponder("_bulk_get", (request) => flow.ExecuteNext<HttpResponseMessage>()); manager.DefaultHttpClientFactory = fakeFactory; ManagerOptions.Default.RequestTimeout = TimeSpan.FromSeconds(5); CreatePullAndTest(20, (repl) => Assert.IsTrue(database.DocumentCount - initialRowCount == 20, "Didn't recover from the error")); }