Пример #1
0
        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>());
        }
Пример #2
0
        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>());
        }
Пример #3
0
        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>());
        }