public async Task Given_there_are_no_workers_running_and_there_is_one_item_in_the_reduced_queue__When_worker_manager_is_run__Then_the_final_reduver_is_invoked() { // Arrange var commandDispatcherMock = Substitute.For <ICommandDispatcher>(); var configMock = new ConfigBuiler() .With(reducedQueueName: "reducedQ") .Build(); var queueClientMock = new QueueClientMockBuilder() .WithRandomMessages(configMock.ReducedQueueName, 1) .Build(); var workerRecordStoreServiceMock = new WorkerRecordStoreServiceMockBuilder() .Build(); var workerManager = WorkerManagerFactory( commandDispatcher: commandDispatcherMock, config: configMock, queueClient: queueClientMock, workerRecordStoreService: workerRecordStoreServiceMock); // Act await workerManager.InvokeAsync(); // Assert await commandDispatcherMock.Received().DispatchAsync(Arg.Any <FinalReducerCommand>()); }
public async Task Given_something_in_ingested_queue_and_a_mapper_has_stopped_responding__When_worker_manager_is_run__Then_a_mapper_is_invoked() { // Arrange var commandDispatcherMock = Substitute.For <ICommandDispatcher>(); var configMock = new ConfigBuiler().Build(); var queueClientMock = new QueueClientMockBuilder() .WithRandomMessages(configMock.IngestedQueueName, 1) .Build(); var timeMock = Substitute.For <ITime>(); timeMock.UtcNow.Returns(DateTime.Parse("2018-02-27 12:00")); var workerRecordStoreServiceMock = new WorkerRecordStoreServiceMockBuilder() .WithWorkerRecord("mapper", DateTime.Parse("2018-02-27 11:59")) .Build(); var workerManager = WorkerManagerFactory( commandDispatcher: commandDispatcherMock, config: configMock, queueClient: queueClientMock, workerRecordStoreService: workerRecordStoreServiceMock, time: timeMock); // Act await workerManager.InvokeAsync(); // Assert await commandDispatcherMock.Received().DispatchAsync(Arg.Any <MapperCommand>()); }
public async Task Given_there_are_x_message_on_the_ingested_queue_and_y_running_mappers__When_worker_manager_is_run__Then_z_new_mappers_are_invoked( int inputQueueItemsPerRunningWorker, int inputNoOfMessages, int inputNoOfRunningIngesters, int outputExpectedNewIngestersInvoked) { // Arrange var commandDispatcherMock = Substitute.For <ICommandDispatcher>(); var configMock = new ConfigBuiler() .With( ingestedQueueName: "ingestedQ", queueItemsPerRunningWorker: inputQueueItemsPerRunningWorker) .Build(); var timeMock = Substitute.For <ITime>(); timeMock.UtcNow.Returns(DateTime.Parse("2000-01-01 12:00")); var queueClientMock = new QueueClientMockBuilder() .WithRandomMessages(configMock.IngestedQueueName, inputNoOfMessages) .Build(); var workerRecordStoreServiceMock = new WorkerRecordStoreServiceMockBuilder() .WithWorkerRecords(inputNoOfRunningIngesters, "mapper", timeMock.UtcNow) .Build(); var workerManager = WorkerManagerFactory( commandDispatcher: commandDispatcherMock, config: configMock, queueClient: queueClientMock, workerRecordStoreService: workerRecordStoreServiceMock, time: timeMock); // Act await workerManager.InvokeAsync(); // Assert await commandDispatcherMock.Received(outputExpectedNewIngestersInvoked) .DispatchAsync(Arg.Any <MapperCommand>()); }