public async Task ProcessAllMessagesInQueue_TriggersDelivery() { // Setup Mock.Get(eventQueueStore) .SetupSequence(s => s.PeekEventAsync()) .ReturnsAsync(new ServerEventMessage { }) .ReturnsAsync(null); var triggerService = new TriggerService(); bool DeliverySet = false; var cts = new CancellationTokenSource(); var waitingTask = Task.Factory.StartNew(() => { triggerService.DeliveryStart.WaitOne(); DeliverySet = true; }, cts.Token); // Test var options = Options.Create(new EventServerOptions()); var service = new HostedProcessingService(new TriggerService(), serviceProvider, logger, options); await service.ProcessAllMessagesInQueue(); // Assert Mock.Get(eventQueueStore).Verify(); Assert.IsTrue(DeliverySet, "DeliveryStart was not set"); Mock.Get(objectUpdateService).VerifyNoOtherCalls(); Mock.Get(metadataService).VerifyNoOtherCalls(); Mock.Get(eventProcessingService).VerifyNoOtherCalls(); cts.Cancel(); }
public async Task ProcessAllMessagesInQueue_Exceptions_PoisonMessage() { // Setup Mock.Get(eventQueueStore) .SetupSequence(s => s.PeekEventAsync()) .ReturnsAsync(new ServerEventMessage { LogId = 53232L, Topic = "TopicA", EventJson = "{Event-Data-Here}" }) .ReturnsAsync(null); Mock.Get(eventQueueStore) .Setup(s => s.PoisonedEventAsync(It.Is <long>(v => v == 53232L))) .Returns(Task.CompletedTask) .Verifiable(); Mock.Get(eventProcessingService) .Setup(s => s.ProcessEvent(It.Is <string>(v => v == "TopicA"), It.Is <string>(v => v == "{Event-Data-Here}"))) .ThrowsAsync(new Exception()) .Verifiable(); // Test var options = Options.Create(new EventServerOptions { AutoDiscoverEvents = false, AutoDiscoverObjectTypes = false }); var service = new HostedProcessingService(new TriggerService(), serviceProvider, logger, options); await service.ProcessAllMessagesInQueue(); // Assert Mock.Get(eventQueueStore).Verify(); Mock.Get(eventProcessingService).Verify(); Mock.Get(eventQueueStore).Verify(); Mock.Get(objectUpdateService).VerifyNoOtherCalls(); Mock.Get(metadataService).VerifyNoOtherCalls(); }
public async Task ProcessAllMessagesInQueue_ObjectMessage_OnlySends() { // Setup Mock.Get(eventQueueStore) .SetupSequence(s => s.PeekEventAsync()) .ReturnsAsync(new ServerEventMessage { LogId = 53232L, ObjectType = "ObjectTypeA", ObjectId = "235", ObjectUpdate = "{Object-Data}" }) .ReturnsAsync(null); Mock.Get(eventQueueStore) .Setup(s => s.DequeueEventAsync(It.Is <long>(v => v == 53232L))) .Returns(Task.CompletedTask) .Verifiable(); Mock.Get(objectUpdateService) .Setup(s => s.UpdateObject(It.Is <string>(v => v == "ObjectTypeA"), It.Is <string>(v => v == "235"), It.Is <string>(v => v == "{Object-Data}"))) .Returns(Task.CompletedTask) .Verifiable(); // Test var options = Options.Create(new EventServerOptions { AutoDiscoverEvents = false, AutoDiscoverObjectTypes = false }); var service = new HostedProcessingService(new TriggerService(), serviceProvider, logger, options); await service.ProcessAllMessagesInQueue(); // Assert Mock.Get(eventQueueStore).Verify(); Mock.Get(objectUpdateService).Verify(); Mock.Get(eventQueueStore).Verify(); Mock.Get(eventProcessingService).VerifyNoOtherCalls(); Mock.Get(metadataService).VerifyNoOtherCalls(); }