Exemple #1
0
            public async Task EventuallyFailsIfBatchPusherNeverSucceeds()
            {
                Config.MaxConcurrentVersionListWriters = 1;
                Changes["PackageA"] = 1;
                Changes["PackageB"] = 2;
                BatchPusher
                .Setup(x => x.TryFinishAsync())
                .ReturnsAsync(new BatchPusherResult(new[] { "PackageB" }));

                var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => Target.ExecuteAsync());

                Assert.Equal("The index operations for the following package IDs failed due to version list concurrency: PackageB", ex.Message);
                VerifyCompletedTelemetry(JobOutcome.Failure);
                VerifyAllIdsAreProcessed(new[] { "PackageA", "PackageB", "PackageB", "PackageB" });
                IndexActionBuilder.Verify(
                    x => x.UpdateAsync(
                        "PackageA",
                        It.IsAny <Func <SearchFilters, KeyedDocument> >()),
                    Times.Once);
                IndexActionBuilder.Verify(
                    x => x.UpdateAsync(
                        "PackageB",
                        It.IsAny <Func <SearchFilters, KeyedDocument> >()),
                    Times.Exactly(3));
                BatchPusher.Verify(
                    x => x.EnqueueIndexActions(It.IsAny <string>(), It.IsAny <IndexActions>()),
                    Times.Exactly(4));
                BatchPusher.Verify(x => x.TryFinishAsync(), Times.Exactly(3));
                BatchPusher.Verify(x => x.TryPushFullBatchesAsync(), Times.Never);
            }