Skip to content
This repository was archived by the owner on Jul 30, 2024. It is now read-only.

Commit ec8adde

Browse files
authored
Merge pull request #544 from NuGet/dev
[ReleasePrep][2018.08.20]RI of dev into master
2 parents d806e31 + aead8dc commit ec8adde

2 files changed

Lines changed: 31 additions & 10 deletions

File tree

src/NuGet.Services.Validation.Orchestrator/ValidationOutcomeProcessor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ private async Task<TimeSpan> UpdateValidationDurationAsync(PackageValidationSet
221221
// is greater than the configured threshold. Service Bus message duplication for a single validation
222222
// set will not cause multiple notices to be sent due to the row version on PackageValidationSet.
223223
if (tooLongNotificationAllowed &&
224+
validatingEntity.Status == PackageStatus.Validating &&
224225
validationSetDuration > _validationConfiguration.ValidationSetNotificationTimeout &&
225226
previousDuration <= _validationConfiguration.ValidationSetNotificationTimeout &&
226227
await _validationStorageService.GetValidationSetCountAsync(validatingEntity) == 1)

tests/NuGet.Services.Validation.Orchestrator.Tests/ValidationOutcomeProcessorFacts.cs

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,12 @@ public async Task DoesNotReEnqueueProcessingIfValidationSetTimesOut()
116116
.Verify(x => x.DeletePackageForValidationSetAsync(It.IsAny<PackageValidationSet>()), Times.Never);
117117
}
118118

119-
[Fact]
120-
public async Task SendsValidatingTooLongMessageOnce()
119+
[Theory]
120+
[InlineData(PackageStatus.Available, false)]
121+
[InlineData(PackageStatus.Deleted, false)]
122+
[InlineData(PackageStatus.Validating, true)]
123+
[InlineData(PackageStatus.FailedValidation, false)]
124+
public async Task SendsValidatingTooLongMessageOnlyIfPackageIsInValidatingState(PackageStatus packageStatus, bool shouldSend)
121125
{
122126
const int postponeMinutes = 1;
123127

@@ -130,6 +134,8 @@ public async Task SendsValidatingTooLongMessageOnce()
130134
ValidationSet.Created = DateTime.UtcNow - TimeSpan.FromMinutes(21);
131135
ValidationSet.Updated = DateTime.UtcNow - TimeSpan.FromMinutes(15);
132136

137+
PackageValidatingEntity.EntityRecord.PackageStatusKey = packageStatus;
138+
133139
ValidationStorageServiceMock
134140
.Setup(s => s.UpdateValidationSetAsync(It.IsAny<PackageValidationSet>()))
135141
.Callback<PackageValidationSet>(s => s.Updated = DateTime.UtcNow)
@@ -143,14 +149,28 @@ public async Task SendsValidatingTooLongMessageOnce()
143149
var processor = CreateProcessor();
144150
await processor.ProcessValidationOutcomeAsync(ValidationSet, PackageValidatingEntity, ProcessorStats);
145151

146-
TelemetryServiceMock
147-
.Verify(t => t.TrackSentValidationTakingTooLongMessage(Package.PackageRegistration.Id, Package.NormalizedVersion, ValidationSet.ValidationTrackingId), Times.Once);
148-
MessageServiceMock
149-
.Verify(m => m.SendValidationTakingTooLongMessage(Package), Times.Once);
150-
ValidationEnqueuerMock
151-
.Verify(ve => ve.StartValidationAsync(It.IsAny<PackageValidationMessageData>(), It.IsAny<DateTimeOffset>()), Times.Once);
152-
PackageFileServiceMock
153-
.Verify(x => x.DeletePackageForValidationSetAsync(It.IsAny<PackageValidationSet>()), Times.Never);
152+
if (shouldSend)
153+
{
154+
TelemetryServiceMock
155+
.Verify(t => t.TrackSentValidationTakingTooLongMessage(Package.PackageRegistration.Id, Package.NormalizedVersion, ValidationSet.ValidationTrackingId), Times.Once);
156+
MessageServiceMock
157+
.Verify(m => m.SendValidationTakingTooLongMessage(Package), Times.Once);
158+
ValidationEnqueuerMock
159+
.Verify(ve => ve.StartValidationAsync(It.IsAny<PackageValidationMessageData>(), It.IsAny<DateTimeOffset>()), Times.Once);
160+
PackageFileServiceMock
161+
.Verify(x => x.DeletePackageForValidationSetAsync(It.IsAny<PackageValidationSet>()), Times.Never);
162+
}
163+
else
164+
{
165+
TelemetryServiceMock
166+
.Verify(t => t.TrackSentValidationTakingTooLongMessage(Package.PackageRegistration.Id, Package.NormalizedVersion, ValidationSet.ValidationTrackingId), Times.Never);
167+
MessageServiceMock
168+
.Verify(m => m.SendValidationTakingTooLongMessage(Package), Times.Never);
169+
ValidationEnqueuerMock
170+
.Verify(ve => ve.StartValidationAsync(It.IsAny<PackageValidationMessageData>(), It.IsAny<DateTimeOffset>()), Times.Once);
171+
PackageFileServiceMock
172+
.Verify(x => x.DeletePackageForValidationSetAsync(It.IsAny<PackageValidationSet>()), Times.Never);
173+
}
154174

155175
TelemetryServiceMock.ResetCalls();
156176
MessageServiceMock.ResetCalls();

0 commit comments

Comments
 (0)