public void TestETagViolation409() { var doc1 = TestHelpers.CreateStarDocument(); var doc2 = TestHelpers.CreateStarDocument(); doc2.Version++; doc2.Name = "Document Version 2 name"; XCollectionResult result; TargetCollection tcol = new TargetCollection(_client, _collection); int retryAttempt = 0; result = tcol.Write(doc1, () => { if (retryAttempt++ == 0) { result = tcol.Write(doc2); Assert.IsFalse(result.Discarded); } } ); Assert.IsTrue(result.Discarded); var rdoc = tcol.ReadDocument <StarDocument>(doc1.Id); TestHelpers.AssertEqualStars(doc2, rdoc); }
public void TestETagViolation412WithSuccessfulRetry() { var doc1 = TestHelpers.CreateStarDocument(); var doc2 = TestHelpers.CreateStarDocument(); doc2.Version = 2; doc2.Name = "Document Version 2 name"; var doc3 = TestHelpers.CreateStarDocument(); doc3.Version = 3; doc3.Name = "Document Version 3 name"; TargetCollection tcol = new TargetCollection(_client, _collection); XCollectionResult result; StarDocument rdoc; result = tcol.Write(doc1); Assert.IsFalse(result.Discarded); // Test ETag violation as HTTP code 412 int retryAttempt = 0; result = tcol.Write(doc3, () => { if (retryAttempt++ == 0) { result = tcol.Write(doc2); Assert.IsFalse(result.Discarded); rdoc = tcol.ReadDocument <StarDocument>(doc2.Id); TestHelpers.AssertEqualStars(doc2, rdoc); } } ); Assert.IsFalse(result.Discarded); rdoc = tcol.ReadDocument <StarDocument>(doc3.Id); TestHelpers.AssertEqualStars(doc3, rdoc); }
public void DocumentConsistent() { const string gatewayKey = "Stars"; // create gateway blob storage var gateBlob = new InMemoryGatewayBlobStore(); // create a gateway queue var gateQueue = new QueueWrapper(TestHelpers.GenUnique("gateq"), TestConfig.GatewayStorageAccount); var gateQueueWriter = new GatewayQueueWriter(gateQueue, gateBlob); var doc = TestHelpers.CreateStarDocument(); SourceCollection scol = new SourceCollection(_primaryClient, _primaryCollection, gateQueueWriter, gatewayKey); DocdbGatewayQueueProcessor gateQueueProcessor = new DocdbGatewayQueueProcessor( new GatewayQueueReader(gateQueue, gateBlob), new FixedTargetCollectionResolver(_secondaryClient, _secondaryCollection) ); var tcol = new TargetCollection(_secondaryClient, _secondaryCollection); scol.Write(doc); Assert.IsTrue(gateQueueProcessor.ProcessNext()); var tdoc = tcol.ReadDocument <StarDocument>(doc.Id); TestHelpers.AssertEqualStars(doc, tdoc); Assert.AreEqual(1, tdoc.Version); // same Id but different data in the object doc = TestHelpers.CreateStarDocument(); scol.Write(doc); Assert.AreEqual(2, doc.Version); // verify the side effect of setting Version Assert.IsTrue(gateQueueProcessor.ProcessNext()); tdoc = tcol.ReadDocument <StarDocument>(doc.Id); TestHelpers.AssertEqualStars(doc, tdoc); Assert.AreEqual(2, tdoc.Version); }