public async Task DropsMessageAfterMissingPackageRetryCountIsReached() { var validationTrackingId = Guid.NewGuid(); var messageData = PackageValidationMessageData.NewProcessValidationSet( "packageId", "1.2.3", validationTrackingId, ValidatingType.SymbolPackage, entityKey: null); CoreSymbolPackageServiceMock .Setup(ps => ps.FindPackageByIdAndVersionStrict("packageId", "1.2.3")) .Returns <SymbolPackage>(null) .Verifiable(); TelemetryServiceMock .Setup(t => t.TrackMissingPackageForValidationMessage("packageId", "1.2.3", validationTrackingId.ToString())) .Verifiable(); var handler = CreateHandler(); Assert.False(await handler.HandleAsync(OverrideDeliveryCount(messageData, deliveryCount: 1))); Assert.False(await handler.HandleAsync(OverrideDeliveryCount(messageData, deliveryCount: 2))); Assert.True(await handler.HandleAsync(OverrideDeliveryCount(messageData, deliveryCount: 3))); CoreSymbolPackageServiceMock.Verify(ps => ps.FindPackageByIdAndVersionStrict("packageId", "1.2.3"), Times.Exactly(3)); TelemetryServiceMock.Verify(t => t.TrackMissingPackageForValidationMessage("packageId", "1.2.3", validationTrackingId.ToString()), Times.Once); }
private List <string> RecordOperationOrder() { var operations = new List <string>(); PackageStateProcessorMock .Setup(x => x.SetStatusAsync(It.IsAny <IValidatingEntity <Package> >(), It.IsAny <PackageValidationSet>(), It.IsAny <PackageStatus>())) .Returns(Task.CompletedTask) .Callback(() => operations.Add(nameof(IStatusProcessor <Package> .SetStatusAsync))); ValidationStorageServiceMock .Setup(x => x.UpdateValidationSetAsync(It.IsAny <PackageValidationSet>())) .Returns(Task.CompletedTask) .Callback(() => operations.Add(nameof(IValidationStorageService.UpdateValidationSetAsync))); MessageServiceMock .Setup(x => x.SendPublishedMessageAsync(It.IsAny <Package>())) .Returns(Task.CompletedTask) .Callback(() => operations.Add(nameof(IMessageService <Package> .SendPublishedMessageAsync))); MessageServiceMock .Setup(x => x.SendValidationFailedMessageAsync(It.IsAny <Package>(), It.IsAny <PackageValidationSet>())) .Returns(Task.CompletedTask) .Callback(() => operations.Add(nameof(IMessageService <Package> .SendValidationFailedMessageAsync))); TelemetryServiceMock .Setup(x => x.TrackTotalValidationDuration(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <TimeSpan>(), It.IsAny <bool>())) .Callback(() => operations.Add(nameof(ITelemetryService.TrackTotalValidationDuration))); PackageFileServiceMock .Setup(x => x.DeletePackageForValidationSetAsync(It.IsAny <PackageValidationSet>())) .Returns(Task.CompletedTask) .Callback(() => operations.Add(nameof(IValidationFileService.DeletePackageForValidationSetAsync))); return(operations); }
public async Task MarksPackageStatusBasedOnValidatorResults( ValidationStatus validation, PackageStatus fromStatus, PackageStatus toStatus, bool expectedSetPackageStatusCall) { AddValidation("validation1", validation); Package.PackageStatusKey = fromStatus; TimeSpan duration = default(TimeSpan); TelemetryServiceMock .Setup(ts => ts.TrackTotalValidationDuration(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <TimeSpan>(), It.IsAny <bool>())) .Callback <string, string, Guid, TimeSpan, bool>((_1, _2, _3, t, _4) => duration = t); ProcessorStats.AnyRequiredValidationSucceeded = true; ProcessorStats.AnyValidationSucceeded = true; var processor = CreateProcessor(); var before = DateTime.UtcNow; await processor.ProcessValidationOutcomeAsync(ValidationSet, PackageValidatingEntity, ProcessorStats); var after = DateTime.UtcNow; if (expectedSetPackageStatusCall) { PackageStateProcessorMock.Verify( x => x.SetStatusAsync(PackageValidatingEntity, ValidationSet, toStatus), Times.Once); PackageStateProcessorMock.Verify( x => x.SetStatusAsync(It.IsAny <PackageValidatingEntity>(), It.IsAny <PackageValidationSet>(), It.IsAny <PackageStatus>()), Times.Once); } else { PackageStateProcessorMock.Verify( x => x.SetStatusAsync(It.IsAny <PackageValidatingEntity>(), It.IsAny <PackageValidationSet>(), It.IsAny <PackageStatus>()), Times.Never); } if (validation != ValidationStatus.Failed) { PackageFileServiceMock.Verify( x => x.DeletePackageForValidationSetAsync(ValidationSet), Times.Never); } else { PackageFileServiceMock.Verify( x => x.DeletePackageForValidationSetAsync(ValidationSet), Times.Once); } TelemetryServiceMock .Verify(ts => ts.TrackTotalValidationDuration(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <TimeSpan>(), It.IsAny <bool>()), Times.Once()); Assert.InRange(duration, before - ValidationSet.Created, after - ValidationSet.Created); Assert.Equal(ValidationSetStatus.Completed, ValidationSet.ValidationSetStatus); }
public async Task MarksPackageStatusBasedOnValidatorResults( ValidationStatus validation, PackageStatus fromStatus, PackageStatus toStatus, bool setPackageStatus) { AddValidation("validation1", validation); Package.PackageStatusKey = fromStatus; TimeSpan duration = default(TimeSpan); TelemetryServiceMock .Setup(ts => ts.TrackTotalValidationDuration(It.IsAny <TimeSpan>(), It.IsAny <bool>())) .Callback <TimeSpan, bool>((t, _) => duration = t); var processor = CreateProcessor(); var before = DateTime.UtcNow; await processor.ProcessValidationOutcomeAsync(ValidationSet, Package); var after = DateTime.UtcNow; if (setPackageStatus) { PackageStateProcessorMock.Verify( x => x.SetPackageStatusAsync(Package, ValidationSet, toStatus), Times.Once); PackageStateProcessorMock.Verify( x => x.SetPackageStatusAsync(It.IsAny <Package>(), It.IsAny <PackageValidationSet>(), It.IsAny <PackageStatus>()), Times.Once); } else { PackageStateProcessorMock.Verify( x => x.SetPackageStatusAsync(It.IsAny <Package>(), It.IsAny <PackageValidationSet>(), It.IsAny <PackageStatus>()), Times.Never); } PackageFileServiceMock.Verify( x => x.DeletePackageForValidationSetAsync(ValidationSet), Times.Once); TelemetryServiceMock .Verify(ts => ts.TrackTotalValidationDuration(It.IsAny <TimeSpan>(), It.IsAny <bool>()), Times.Once()); Assert.InRange(duration, before - ValidationSet.Created, after - ValidationSet.Created); }