public async Task GivenMultipleChangeFeedEntries_WhenProcessed_ThenEachChangeFeedEntryShouldBeProcessed()
        {
            ChangeFeedEntry[] changeFeeds = new[]
            {
                ChangeFeedGenerator.Generate(1),
                ChangeFeedGenerator.Generate(2),
                ChangeFeedGenerator.Generate(3),
            };

            _changeFeedRetrieveService.RetrieveChangeFeedAsync(0, DefaultCancellationToken).Returns(changeFeeds);

            await ExecuteProcessAsync();

            await _fhirTransactionPipeline.ReceivedWithAnyArgs(3).ProcessAsync(default, default);
Exemple #2
0
        /// <inheritdoc/>
        public async Task ProcessAsync(TimeSpan pollIntervalDuringCatchup, CancellationToken cancellationToken)
        {
            SyncState state = await _syncStateService.GetSyncStateAsync(cancellationToken);

            while (true)
            {
                // Retrieve the change feed for any changes.
                IReadOnlyList <ChangeFeedEntry> changeFeedEntries = await _changeFeedRetrieveService.RetrieveChangeFeedAsync(
                    state.SyncedSequence,
                    cancellationToken);

                if (!changeFeedEntries.Any())
                {
                    _logger.LogInformation("No new DICOM events to process.");

                    return;
                }

                long maxSequence = changeFeedEntries[^ 1].Sequence;