public async Task TryCheckpoint_OnSuccess() { string leaseToken = Guid.NewGuid().ToString(); string continuation = Guid.NewGuid().ToString(); ResponseMessage responseMessage = new ResponseMessage(HttpStatusCode.OK); responseMessage.Headers.ContinuationToken = continuation; Mock <PartitionCheckpointer> checkpointer = new Mock <PartitionCheckpointer>(); checkpointer.Setup(c => c.CheckpointPartitionAsync(It.Is <string>(s => s == continuation))).Returns(Task.CompletedTask); ChangeFeedObserverContextCore changeFeedObserverContextCore = new ChangeFeedObserverContextCore(leaseToken, responseMessage, checkpointer.Object); await changeFeedObserverContextCore.CheckpointAsync(); }
public async Task TryCheckpoint_OnUnknownException() { NotImplementedException cosmosException = new NotImplementedException(); string leaseToken = Guid.NewGuid().ToString(); string continuation = Guid.NewGuid().ToString(); ResponseMessage responseMessage = new ResponseMessage(HttpStatusCode.OK); responseMessage.Headers.ContinuationToken = continuation; Mock <PartitionCheckpointer> checkpointer = new Mock <PartitionCheckpointer>(); checkpointer.Setup(c => c.CheckpointPartitionAsync(It.Is <string>(s => s == continuation))).ThrowsAsync(cosmosException); ChangeFeedObserverContextCore changeFeedObserverContextCore = new ChangeFeedObserverContextCore(leaseToken, responseMessage, checkpointer.Object); NotImplementedException exception = await Assert.ThrowsExceptionAsync <NotImplementedException>(() => changeFeedObserverContextCore.CheckpointAsync()); Assert.ReferenceEquals(cosmosException, exception); }
public async Task TryCheckpoint_OnLeaseLost() { string leaseToken = Guid.NewGuid().ToString(); string continuation = Guid.NewGuid().ToString(); ResponseMessage responseMessage = new ResponseMessage(HttpStatusCode.OK); responseMessage.Headers.ContinuationToken = continuation; Mock <PartitionCheckpointer> checkpointer = new Mock <PartitionCheckpointer>(); checkpointer.Setup(c => c.CheckpointPartitionAsync(It.Is <string>(s => s == continuation))).ThrowsAsync(new LeaseLostException()); ChangeFeedObserverContextCore changeFeedObserverContextCore = new ChangeFeedObserverContextCore(leaseToken, responseMessage, checkpointer.Object); CosmosException exception = await Assert.ThrowsExceptionAsync <CosmosException>(() => changeFeedObserverContextCore.CheckpointAsync()); Assert.AreEqual(HttpStatusCode.PreconditionFailed, exception.StatusCode); }