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

Commit

Permalink
Added EventName property to the PackageValidationAuditEntry (#133)
Browse files Browse the repository at this point in the history
* Added EventName property to the PackageValidationAuditEntry to easier distinguish between types of the entries.

* Added copyright header

* Changed ValidationEvent to enum.
  • Loading branch information
agr authored Apr 25, 2017
1 parent 7571abd commit 477ad80
Show file tree
Hide file tree
Showing 8 changed files with 100 additions and 15 deletions.
2 changes: 2 additions & 0 deletions src/Validation.Common/PackageValidationAuditEntry.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ namespace NuGet.Jobs.Validation.Common
public class PackageValidationAuditEntry
{
public string ValidatorName { get; set; }
public ValidationEvent EventId { get; set; }
public string EventName => EventId.ToString();
public string Message { get; set; }
public DateTimeOffset Timestamp { get; set; }
}
Expand Down
1 change: 1 addition & 0 deletions src/Validation.Common/Validation.Common.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@
<Compile Include="TraceConstant.cs" />
<Compile Include="TraceEvent.cs" />
<Compile Include="TraceHelper.cs" />
<Compile Include="ValidationEvent.cs" />
<Compile Include="Validators\IValidator.cs" />
<Compile Include="Validators\Unzip\UnzipValidator.cs" />
<Compile Include="Validators\ValidationResult.cs" />
Expand Down
68 changes: 68 additions & 0 deletions src/Validation.Common/ValidationEvent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.

namespace NuGet.Jobs.Validation.Common
{
public enum ValidationEvent
{
/// <summary>
/// Virus scan request is about to be sent
/// </summary>
BeforeVirusScanRequest,

/// <summary>
/// The validation queue item was deadlettered after several attempts of processing
/// </summary>
Deadlettered,

/// <summary>
/// The detail item passed with a <see cref="PackageNotClean"/> result
/// </summary>
NotCleanReason,

/// <summary>
/// Virus scan service reported package as clean
/// </summary>
PackageClean,

/// <summary>
/// Packages download was successful
/// </summary>
PackageDownloaded,

/// <summary>
/// Virus scan service reported package as not clean
/// </summary>
PackageNotClean,

/// <summary>
/// Virus scan service reported its failure to scan package (it does *not* mean package is not clean)
/// </summary>
ScanFailed,

/// <summary>
/// The detail item passed with <see cref="ScanFailed"/> result
/// </summary>
ScanFailureReason,

/// <summary>
/// An exception was thrown during validator execution
/// </summary>
ValidatorException,

/// <summary>
/// The virus scan request was submitted
/// </summary>
VirusScanRequestSent,

/// <summary>
/// Sending the virus scanning request had failed
/// </summary>
VirusScanRequestFailed,

/// <summary>
/// Package was successfully unzipped
/// </summary>
UnzipSucceeeded,
}
}
9 changes: 6 additions & 3 deletions src/Validation.Common/Validators/Unzip/UnzipValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,17 @@ public override async Task<ValidationResult> ValidateAsync(PackageValidationMess
await packageStream.CopyToAsync(packageFileStream);

_logger.LogInformation($"Downloaded package from {{{TraceConstant.Url}}}", message.Package.DownloadUrl);
WriteAuditEntry(auditEntries, $"Downloaded package from {message.Package.DownloadUrl}");
WriteAuditEntry(auditEntries, $"Downloaded package from {message.Package.DownloadUrl}",
ValidationEvent.PackageDownloaded);

packageFileStream.Position = 0;

using (var packageZipStream = Package.Open(packageFileStream))
{
var parts = packageZipStream.GetParts();
_logger.LogInformation("Found {PartsCount} parts in package.", parts.Count());
WriteAuditEntry(auditEntries, $"Found {parts.Count()} parts in package.");
WriteAuditEntry(auditEntries, $"Found {parts.Count()} parts in package.",
ValidationEvent.UnzipSucceeeded);

return ValidationResult.Succeeded;
}
Expand All @@ -65,7 +67,8 @@ public override async Task<ValidationResult> ValidateAsync(PackageValidationMess
catch (Exception ex)
{
_logger.TrackValidatorException(ValidatorName, message.ValidationId, ex, message.PackageId, message.PackageVersion);
WriteAuditEntry(auditEntries, $"Exception thrown during validation - {ex.Message}\r\n{ex.StackTrace}");
WriteAuditEntry(auditEntries, $"Exception thrown during validation - {ex.Message}\r\n{ex.StackTrace}",
ValidationEvent.ValidatorException);
return ValidationResult.Failed;
}
finally
Expand Down
5 changes: 3 additions & 2 deletions src/Validation.Common/Validators/ValidatorBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,14 @@ public virtual TimeSpan VisibilityTimeout

public abstract Task<ValidationResult> ValidateAsync(PackageValidationMessage message, List<PackageValidationAuditEntry> auditEntries);

protected void WriteAuditEntry(List<PackageValidationAuditEntry> auditEntries, string message)
protected void WriteAuditEntry(List<PackageValidationAuditEntry> auditEntries, string message, ValidationEvent validationEvent)
{
auditEntries.Add(new PackageValidationAuditEntry
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = Name,
Message = message
Message = message,
EventId = validationEvent,
});
}
}
Expand Down
15 changes: 10 additions & 5 deletions src/Validation.Common/Validators/Vcs/VcsCallbackServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,8 @@ await _notificationService.SendNotificationAsync(
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = VcsValidator.ValidatorName,
Message = "Package did not scan clean."
Message = "Package did not scan clean.",
EventId = ValidationEvent.PackageNotClean,
});

if (result.ResultReasons?.ResultReason != null)
Expand All @@ -189,7 +190,8 @@ await _notificationService.SendNotificationAsync(
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = VcsValidator.ValidatorName,
Message = resultReason.RefId + " " + resultReason.Result + " " + resultReason.Determination
Message = resultReason.RefId + " " + resultReason.Result + " " + resultReason.Determination,
EventId = ValidationEvent.NotCleanReason,
});
}
}
Expand Down Expand Up @@ -231,7 +233,8 @@ await _packageValidationAuditor.WriteAuditEntryAsync(validationEntity.Validation
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = VcsValidator.ValidatorName,
Message = "Package scanned clean."
Message = "Package scanned clean.",
EventId = ValidationEvent.PackageClean,
});
}
else if (result.Result == "Results" || result.Result == "Fail")
Expand All @@ -252,7 +255,8 @@ await _packageValidationAuditor.WriteAuditEntryAsync(validationEntity.Validation
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = VcsValidator.ValidatorName,
Message = $"Package scan failed. Response: {body}"
Message = $"Package scan failed. Response: {body}",
EventId = ValidationEvent.ScanFailed,
});

if (result.ResultReasons?.ResultReason != null)
Expand All @@ -263,7 +267,8 @@ await _packageValidationAuditor.WriteAuditEntryAsync(validationEntity.Validation
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = VcsValidator.ValidatorName,
Message = resultReason.RefId + " " + resultReason.Result + " " + resultReason.Determination
Message = resultReason.RefId + " " + resultReason.Result + " " + resultReason.Determination,
EventId = ValidationEvent.ScanFailureReason,
});
}
}
Expand Down
9 changes: 6 additions & 3 deletions src/Validation.Common/Validators/Vcs/VcsValidator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public override async Task<ValidationResult> ValidateAsync(PackageValidationMess
message.ValidationId,
message.PackageId,
message.PackageVersion);
WriteAuditEntry(auditEntries, $"Submitting virus scan job with description \"{description}\"...");
WriteAuditEntry(auditEntries, $"Submitting virus scan job with description \"{description}\"...",
ValidationEvent.BeforeVirusScanRequest);

string errorMessage;
try
Expand All @@ -72,7 +73,8 @@ public override async Task<ValidationResult> ValidateAsync(PackageValidationMess
result.RegionCode);
WriteAuditEntry(auditEntries, $"Submission completed. Request id: {result.RequestId} " +
$"- job id: {result.JobId} " +
$"- region code: {result.RegionCode}");
$"- region code: {result.RegionCode}",
ValidationEvent.VirusScanRequestSent);
return ValidationResult.Asynchronous;
}
else
Expand All @@ -96,7 +98,8 @@ public override async Task<ValidationResult> ValidateAsync(PackageValidationMess
_logger.TrackValidatorException(ValidatorName, message.ValidationId, ex, message.PackageId, message.PackageVersion);
}

WriteAuditEntry(auditEntries, $"Submission failed. Error message: {errorMessage}");
WriteAuditEntry(auditEntries, $"Submission failed. Error message: {errorMessage}",
ValidationEvent.VirusScanRequestFailed);
return ValidationResult.Failed;
}

Expand Down
6 changes: 4 additions & 2 deletions src/Validation.Runner/Job.cs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,8 @@ private async Task RunValidationsAsync(IValidator validator)
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = validator.Name,
Message = $"Message has been attempted too many times and is being deadlettered. Aborting validator."
Message = $"Message has been attempted too many times and is being deadlettered. Aborting validator.",
EventId = ValidationEvent.Deadlettered,
});
}

Expand Down Expand Up @@ -215,7 +216,8 @@ private async Task RunValidationsAsync(IValidator validator)
{
Timestamp = DateTimeOffset.UtcNow,
ValidatorName = validator.Name,
Message = $"Exception thrown during validation - {ex.Message}\r\n{ex.StackTrace}"
Message = $"Exception thrown during validation - {ex.Message}\r\n{ex.StackTrace}",
EventId = ValidationEvent.ValidatorException,
});

_logger.LogError(TraceEvent.ValidatorException, ex,
Expand Down

0 comments on commit 477ad80

Please sign in to comment.