public async Task CheckpointUpdateFailsWhenContainerDoesNotExist() { await using (StorageScope storageScope = await StorageScope.CreateAsync()) { var storageConnectionString = StorageTestEnvironment.Instance.StorageConnectionString; var containerClient = new BlobContainerClient(storageConnectionString, $"test-container-{Guid.NewGuid()}"); var checkpointStore = new BlobsCheckpointStore(containerClient, DefaultRetryPolicy); var checkpoint = new EventProcessorCheckpoint { FullyQualifiedNamespace = "namespace", EventHubName = "eventHubName", ConsumerGroup = "consumerGroup", PartitionId = "partitionId" }; var mockEvent = new MockEventData( eventBody: Array.Empty <byte>(), offset: 10, sequenceNumber: 20); Assert.That(async() => await checkpointStore.UpdateCheckpointAsync(checkpoint, mockEvent, default), Throws.InstanceOf <RequestFailedException>()); } }
public async Task CheckpointManagerCreatesScope() { using ClientDiagnosticListener listener = new ClientDiagnosticListener(DiagnosticSourceName); var eventHubName = "SomeName"; var endpoint = new Uri("amqp://some.endpoint.com/path"); Func <EventHubConnection> fakeFactory = () => new MockConnection(endpoint, eventHubName); var context = new MockPartitionContext("partition"); var data = new MockEventData(new byte[0], sequenceNumber: 0, offset: 0); var storageManager = new Mock <PartitionManager>(); var eventProcessor = new Mock <EventProcessorClient>(Mock.Of <BlobContainerClient>(), "cg", endpoint.Host, eventHubName, fakeFactory, null); storageManager .Setup(manager => manager.UpdateCheckpointAsync(It.IsAny <Checkpoint>())) .Returns(Task.CompletedTask); eventProcessor .Setup(processor => processor.CreateStorageManager(It.IsAny <BlobContainerClient>())) .Returns(storageManager.Object); await eventProcessor.Object.UpdateCheckpointAsync(data, context); ClientDiagnosticListener.ProducedDiagnosticScope scope = listener.Scopes.Single(); Assert.That(scope.Name, Is.EqualTo(DiagnosticProperty.EventProcessorCheckpointActivityName)); }
// Task.Run(async () => await ExecuteLoadItemsCommand()); async Task ExecuteLoadItemsCommand() { IsBusy = true; try { Eventz.Clear(); var events = await DataStore.GetItemsAsync(true); //loading up mock data to be used foreach (var evett in events) { Eventz.Add(evett); } MockEventData bb = new MockEventData(); var not = await bb.GetNotesAsync(true); foreach (var nott in not) { notes.Add(nott); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
async Task ExecuteLoadItemsCommand() { IsBusy = true; try { Events.Clear(); var events = await DataStore.GetItemsAsync(true); //loading up mock data to be used foreach (var evett in events) { // Events.Add(evett); // Events.Add(evett); } MockEventData bb = new MockEventData(); var col = await bb.GetColoursAsync(true); foreach (var colo in col) { Colours.Add(colo); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }
public async Task CheckpointUpdateDoesNotInterfereWithOtherPartitions() { await using (StorageScope storageScope = await StorageScope.CreateAsync()) { var storageConnectionString = StorageTestEnvironment.Instance.StorageConnectionString; var containerClient = new BlobContainerClient(storageConnectionString, storageScope.ContainerName); var checkpointStore = new BlobsCheckpointStore(containerClient, DefaultRetryPolicy); var mockEvent = new MockEventData( eventBody: Array.Empty <byte>(), offset: 10, sequenceNumber: 20); await checkpointStore.UpdateCheckpointAsync(new EventProcessorCheckpoint { FullyQualifiedNamespace = "namespace", EventHubName = "eventHubName", ConsumerGroup = "consumerGroup", PartitionId = "partitionId1" }, mockEvent, default); await checkpointStore.UpdateCheckpointAsync(new EventProcessorCheckpoint { FullyQualifiedNamespace = "namespace", EventHubName = "eventHubName", ConsumerGroup = "consumerGroup", PartitionId = "partitionId2" }, mockEvent, default); IEnumerable <EventProcessorCheckpoint> storedCheckpointsList = await checkpointStore.ListCheckpointsAsync("namespace", "eventHubName", "consumerGroup", default); Assert.That(storedCheckpointsList, Is.Not.Null); Assert.That(storedCheckpointsList.Count, Is.EqualTo(2)); EventProcessorCheckpoint storedCheckpoint1 = storedCheckpointsList.First(checkpoint => checkpoint.PartitionId == "partitionId1"); EventProcessorCheckpoint storedCheckpoint2 = storedCheckpointsList.First(checkpoint => checkpoint.PartitionId == "partitionId2"); Assert.That(storedCheckpoint1, Is.Not.Null); Assert.That(storedCheckpoint2, Is.Not.Null); } }
public async Task BlobStorageManagerCanUpdateCheckpoint() { await using (StorageScope storageScope = await StorageScope.CreateAsync()) { var storageConnectionString = StorageTestEnvironment.Instance.StorageConnectionString; var containerClient = new BlobContainerClient(storageConnectionString, storageScope.ContainerName); var checkpointStore = new BlobsCheckpointStore(containerClient, DefaultRetryPolicy); var ownershipList = new List <EventProcessorPartitionOwnership> { // Make sure the ownership exists beforehand so we hit all storage SDK calls in the checkpoint store. new EventProcessorPartitionOwnership { FullyQualifiedNamespace = "namespace", EventHubName = "eventHubName", ConsumerGroup = "consumerGroup", OwnerIdentifier = "ownerIdentifier", PartitionId = "partitionId" } }; await checkpointStore.ClaimOwnershipAsync(ownershipList, default); var checkpoint = new EventProcessorCheckpoint { FullyQualifiedNamespace = "namespace", EventHubName = "eventHubName", ConsumerGroup = "consumerGroup", PartitionId = "partitionId" }; var mockEvent = new MockEventData( eventBody: Array.Empty <byte>(), offset: 10, sequenceNumber: 20); Assert.That(async() => await checkpointStore.UpdateCheckpointAsync(checkpoint, mockEvent, default), Throws.Nothing); } }
public async Task UpdateCheckpointAsyncCreatesScope() { using ClientDiagnosticListener listener = new ClientDiagnosticListener(DiagnosticSourceName); var eventHubName = "SomeName"; var endpoint = new Uri("amqp://some.endpoint.com/path"); Func <EventHubConnection> fakeFactory = () => new MockConnection(endpoint, eventHubName); var context = new MockPartitionContext("partition"); var data = new MockEventData(new byte[0], sequenceNumber: 0, offset: 0); var storageManager = new Mock <PartitionManager>(); var eventProcessor = new Mock <EventProcessorClient>(Mock.Of <PartitionManager>(), "cg", endpoint.Host, eventHubName, fakeFactory, null); // UpdateCheckpointAsync does not invoke the handlers, but we are setting them here in case // this fact changes in the future. eventProcessor.Object.ProcessEventAsync += eventArgs => Task.CompletedTask; eventProcessor.Object.ProcessErrorAsync += eventArgs => Task.CompletedTask; await eventProcessor.Object.UpdateCheckpointAsync(data, context, default); ClientDiagnosticListener.ProducedDiagnosticScope scope = listener.Scopes.Single(); Assert.That(scope.Name, Is.EqualTo(DiagnosticProperty.EventProcessorCheckpointActivityName)); }