public async Task CheckpointUpdateFailsWhenOwnerChanges() { var partitionManager = new InMemoryPartitionManager(); var originalOwnership = new PartitionOwnership ("eventHubName", "consumerGroup", "ownerIdentifier1", "partitionId", offset: 1, sequenceNumber: 2, lastModifiedTime: DateTimeOffset.UtcNow); await partitionManager.ClaimOwnershipAsync(new List <PartitionOwnership>() { originalOwnership }); // ETag must have been set by the partition manager. var originalLastModifiedTime = originalOwnership.LastModifiedTime; var originalETag = originalOwnership.ETag; await partitionManager.UpdateCheckpointAsync(new Checkpoint ("eventHubName", "consumerGroup", "ownerIdentifier2", "partitionId", 10, 20)); // Make sure the ownership hasn't changed. var storedOwnership = await partitionManager.ListOwnershipAsync("eventHubName", "consumerGroup"); Assert.That(storedOwnership, Is.Not.Null); Assert.That(storedOwnership.Count, Is.EqualTo(1)); Assert.That(storedOwnership.Single(), Is.EqualTo(originalOwnership)); Assert.That(originalOwnership.OwnerIdentifier, Is.EqualTo("ownerIdentifier1")); Assert.That(originalOwnership.Offset, Is.EqualTo(1)); Assert.That(originalOwnership.SequenceNumber, Is.EqualTo(2)); Assert.That(originalOwnership.LastModifiedTime, Is.EqualTo(originalLastModifiedTime)); Assert.That(originalOwnership.ETag, Is.EqualTo(originalETag)); }
public async Task CheckpointUpdateUpdatesOwnershipInformation() { var partitionManager = new InMemoryPartitionManager(); var originalOwnership = new PartitionOwnership ("eventHubName", "consumerGroup", "ownerIdentifier", "partitionId", offset: 1, sequenceNumber: 2, lastModifiedTime: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(1))); await partitionManager.ClaimOwnershipAsync(new List <PartitionOwnership>() { originalOwnership }); // ETag must have been set by the partition manager. var originalLastModifiedTime = originalOwnership.LastModifiedTime; var originalETag = originalOwnership.ETag; await partitionManager.UpdateCheckpointAsync(new Checkpoint ("eventHubName", "consumerGroup", "ownerIdentifier", "partitionId", 10, 20)); // Make sure the ownership has changed, even though the instance should be the same. var storedOwnership = await partitionManager.ListOwnershipAsync("eventHubName", "consumerGroup"); Assert.That(storedOwnership, Is.Not.Null); Assert.That(storedOwnership.Count, Is.EqualTo(1)); Assert.That(storedOwnership.Single(), Is.EqualTo(originalOwnership)); Assert.That(originalOwnership.Offset, Is.EqualTo(10)); Assert.That(originalOwnership.SequenceNumber, Is.EqualTo(20)); Assert.That(originalOwnership.LastModifiedTime, Is.GreaterThan(originalLastModifiedTime)); Assert.That(originalOwnership.ETag, Is.Not.EqualTo(originalETag)); }
public async Task CheckpointUpdateFailsWhenAssociatedOwnershipDoesNotExist() { var partitionManager = new InMemoryPartitionManager(); await partitionManager.UpdateCheckpointAsync(new Checkpoint ("eventHubName", "consumerGroup", "ownerIdentifier", "partitionId", offset : 10, sequenceNumber : 20)); var storedOwnership = await partitionManager.ListOwnershipAsync("eventHubName", "consumerGroup"); Assert.That(storedOwnership, Is.Not.Null); Assert.That(storedOwnership, Is.Empty); }
public async Task CheckpointUpdateDoesNotInterfereWithOtherPartitions() { var partitionManager = new InMemoryPartitionManager(); var ownership1 = new PartitionOwnership ("eventHubName", "consumerGroup", "ownerIdentifier", "partitionId1", offset: 1); var ownership2 = new PartitionOwnership ("eventHubName", "consumerGroup", "ownerIdentifier", "partitionId2", offset: 1); await partitionManager.ClaimOwnershipAsync(new List <PartitionOwnership>() { ownership1, ownership2 }); await partitionManager.UpdateCheckpointAsync(new Checkpoint ("eventHubName", "consumerGroup", "ownerIdentifier", "partitionId1", 10, 20)); Assert.That(ownership1.Offset, Is.EqualTo(10)); Assert.That(ownership2.Offset, Is.EqualTo(1)); }