public void ShouldCreateDatabaseAddDocumentToItReplicateAndRead() { var dbA = "db_" + Guid.NewGuid(); var dbB = "db_" + Guid.NewGuid(); var savedDocument = Entity.CreateDocWithoutRevision(); var couchApi = (ICouchApi) new CouchApi(new CouchApiSettings("http://127.0.0.1:5984/"), null); couchApi.Db(dbA).Synchronously.Create(); var docInfo = couchApi.Db(dbA).Synchronously.SaveDocument(savedDocument); couchApi.Db(dbB).Synchronously.Create(); var replicationDescriptorId = dbA + "_to_" + dbB; var replicationTaskDescriptor = new ReplicationTaskDescriptor { Id = replicationDescriptorId, Target = new Uri(dbB, UriKind.Relative), Source = new Uri(dbA, UriKind.Relative) }; couchApi.Replicator.Synchronously.SaveDescriptor(replicationTaskDescriptor); var replicationDoneEvent = new ManualResetEvent(false); WatchForReplicationToFinish( () => couchApi.Replicator.RequestDescriptorById(replicationDescriptorId), replicationDoneEvent); replicationDoneEvent.WaitOrThrowOnTimeout(); var loadedDocument = couchApi.Db(dbB).Synchronously.RequestDocument(savedDocument.Id); Assert.Equal(savedDocument.Id, loadedDocument.Id); Assert.Equal(docInfo.Revision, loadedDocument.Revision); couchApi.Replicator.DeleteDescriptor(replicationTaskDescriptor); couchApi.Db(dbA).Synchronously.Delete(); couchApi.Db(dbB).Synchronously.Delete(); }
public Task <DocumentInfo> SaveDescriptor(ReplicationTaskDescriptor replicationTask) { if (replicationTask == null) { throw new ArgumentNullException("replicationTask"); } if (replicationTask.Id.HasNoValue()) { throw new ArgumentException("Replication task descriptor ID should be specified", "replicationTask"); } var json = (JsonObject)parent.Settings.Serializer.ConvertToJson(replicationTask); var doc = new Document(new JsonObject( from kvp in json where !kvp.Key.StartsWith("_replication_") select kvp )); using (SyncContext.SwitchToDefault()) return(replicatorDbApi.SaveDocument(doc, overwriteConcurrentUpdates: true) .ContinueWith(rt => { var docInfo = rt.Result; replicationTask.Revision = docInfo.Revision; return docInfo; })); }
public Task <DocumentInfo> DeleteDescriptor(ReplicationTaskDescriptor replicationTask) { if (replicationTask == null) { throw new ArgumentNullException("replicationTask"); } if (replicationTask.Id.HasNoValue()) { throw new ArgumentException("Replication task descriptor ID should be specified", "replicationTask"); } if (replicationTask.Revision.HasNoValue()) { throw new ArgumentException("Replication task descriptor revision should be specified", "replicationTask"); } using (SyncContext.SwitchToDefault()) return(replicatorDbApi.DeleteDocument(replicationTask.Id, replicationTask.Revision)); }
public DocumentInfo Delete(ReplicationTaskDescriptor replicationTask) { return(replicatorApi.DeleteDescriptor(replicationTask).WaitForResult()); }
public DocumentInfo SaveDescriptor(ReplicationTaskDescriptor replicationTask) { return replicatorApi.SaveDescriptor(replicationTask).WaitForResult(); }