public async Task CheckpointUpdateDoesNotInterfereWithOtherPartitions() { await using (StorageScope storageScope = await StorageScope.CreateAsync()) { var storageConnectionString = StorageTestEnvironment.StorageConnectionString; var containerClient = new BlobContainerClient(storageConnectionString, storageScope.ContainerName); var partitionManager = new Processor.BlobsCheckpointStore(containerClient); await partitionManager.UpdateCheckpointAsync(new MockCheckpoint ("namespace", "eventHubName", "consumerGroup", "partitionId1", 10, 20)); await partitionManager.UpdateCheckpointAsync(new MockCheckpoint ("namespace", "eventHubName", "consumerGroup", "partitionId2", 10, 20)); IEnumerable <Checkpoint> storedCheckpointsList = await partitionManager.ListCheckpointsAsync("namespace", "eventHubName", "consumerGroup"); Assert.That(storedCheckpointsList, Is.Not.Null); Assert.That(storedCheckpointsList.Count, Is.EqualTo(2)); Checkpoint storedCheckpoint1 = storedCheckpointsList.First(checkpoint => checkpoint.PartitionId == "partitionId1"); Checkpoint storedCheckpoint2 = storedCheckpointsList.First(checkpoint => checkpoint.PartitionId == "partitionId2"); Assert.That(storedCheckpoint1, Is.Not.Null); Assert.That(storedCheckpoint2, Is.Not.Null); } }
public async Task BlobPartitionManagerCanUpdateCheckpoint() { await using (StorageScope storageScope = await StorageScope.CreateAsync()) { var storageConnectionString = StorageTestEnvironment.StorageConnectionString; var containerClient = new BlobContainerClient(storageConnectionString, storageScope.ContainerName); var partitionManager = new Processor.BlobsCheckpointStore(containerClient); var ownershipList = new List <PartitionOwnership> { // Make sure the ownership exists beforehand so we hit all storage SDK calls in the partition manager. new MockPartitionOwnership ( "namespace", "eventHubName", "consumerGroup", "ownerIdentifier", "partitionId" ) }; await partitionManager.ClaimOwnershipAsync(ownershipList); var checkpoint = new MockCheckpoint("namespace", "eventHubName", "consumerGroup", "partitionId", 10, 20); Assert.That(async() => await partitionManager.UpdateCheckpointAsync(checkpoint), Throws.Nothing); } }
public async Task CheckpointUpdateFailsWhenContainerDoesNotExist() { await using (StorageScope storageScope = await StorageScope.CreateAsync()) { var storageConnectionString = StorageTestEnvironment.StorageConnectionString; var containerClient = new BlobContainerClient(storageConnectionString, $"test-container-{Guid.NewGuid()}"); var partitionManager = new Processor.BlobsCheckpointStore(containerClient); Assert.That(async() => await partitionManager.UpdateCheckpointAsync(new MockCheckpoint ("namespace", "eventHubName", "consumerGroup", "partitionId", offset: 10, sequenceNumber: 20)), Throws.InstanceOf <RequestFailedException>()); } }