public void ToValidationResponseNull() { // Act var result = SymbolsValidationEntitiesService.ToValidationResponse(null); // Assert Assert.Equal(ValidationStatus.NotStarted, result.Status); }
public void ConvertToIValidationResultNull() { // Act var result = SymbolsValidationEntitiesService.ConvertToIValidationResult(null); // Assert Assert.Equal(ValidationStatus.NotStarted, result.Status); }
public void CreateRequestName() { // Arrange var id = Guid.NewGuid(); var vRequest = new NuGetValidationRequest(id, 10, "pId", "1.1.1", "url"); // Act var requestName = SymbolsValidationEntitiesService.CreateSymbolServerRequestNameFromValidationRequest(vRequest); // Assert Assert.Equal($"{vRequest.PackageKey}_{vRequest.ValidationId}", requestName); }
public void CreateFromValidationRequestValidRequest() { // Arrange var request = new NuGetValidationRequest(Guid.NewGuid(), PackageKey, PackageId, PackageVersion, ""); var requestName = "DummyRequestName"; // Act var result = SymbolsValidationEntitiesService.CreateFromValidationRequest(request, SymbolsPackageIngestRequestStatus.FailedIngestion, requestName); // Assert Assert.Equal(PackageKey, result.SymbolsKey); Assert.Equal(requestName, result.RequestName); Assert.Equal(SymbolsPackageIngestRequestStatus.FailedIngestion, result.RequestStatusKey); }
public void ToValidationResponseIngesting() { // Arrange SymbolsServerRequest request = new SymbolsServerRequest() { RequestStatusKey = SymbolsPackageIngestRequestStatus.Ingesting }; // Act var result = SymbolsValidationEntitiesService.ToValidationResponse(request); // Assert Assert.Equal(ValidationStatus.Incomplete, result.Status); }
public void ConvertToIValidationResultIngested() { // Arrange SymbolsServerRequest request = new SymbolsServerRequest() { RequestStatusKey = SymbolsPackageIngestRequestStatus.Ingested }; // Act var result = SymbolsValidationEntitiesService.ConvertToIValidationResult(request); // Assert Assert.Equal(ValidationStatus.Succeeded, result.Status); }
/// <summary> /// The pattern used for the StartAsync: /// 1. Check if an ingestion for the specific symbols package key was already started /// 2. Only if a ingestion was not started queue the message to be processed. /// 3. After the message is queued, update the SymbolServerRequests table. /// </summary> /// <param name="request">The request to be sent to the ingester job queue.</param> /// <returns>The operation status as <see cref="INuGetValidationResponse"/>.</returns> public async Task <INuGetValidationResponse> StartAsync(INuGetValidationRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var symbolsRequest = await _symbolsValidationEntitiesService.GetSymbolsServerRequestAsync(request); var response = SymbolsValidationEntitiesService.ToValidationResponse(symbolsRequest); if (response.Status != ValidationStatus.NotStarted) { _logger.LogWarning( "Symbol ingestion for {PackageId} {PackageNormalizedVersion} {SymbolsPackageKey} has already started.", request.PackageId, request.PackageVersion, request.PackageKey); return(response); } _telemetryService.TrackSymbolsMessageEnqueued(request.PackageId, request.PackageVersion, ValidatorName.SymbolsIngester, request.ValidationId); var message = await _symbolMessageEnqueuer.EnqueueSymbolsIngestionMessageAsync(request); var newSymbolsRequest = SymbolsValidationEntitiesService.CreateFromValidationRequest(request, SymbolsPackageIngestRequestStatus.Ingesting, message.RequestName); var savedSymbolRequest = await _symbolsValidationEntitiesService.AddSymbolsServerRequestAsync(newSymbolsRequest); if (savedSymbolRequest.RequestStatusKey != SymbolsPackageIngestRequestStatus.Ingesting) { _logger.LogWarning( "The symbols ingestion request already in the database. RequestStatus:{Status} for {PackageId} {PackageNormalizedVersion} {SymbolsPackageKey}.", newSymbolsRequest.RequestStatusKey, request.PackageId, request.PackageVersion, request.PackageKey); } else { _logger.LogInformation( "The symbols ingestion request added to the database. RequestStatus:{Status} for {PackageId} {PackageNormalizedVersion} {SymbolsPackageKey}.", newSymbolsRequest.RequestStatusKey, request.PackageId, request.PackageVersion, request.PackageKey); } return(SymbolsValidationEntitiesService.ToValidationResponse(savedSymbolRequest)); }
public async Task <SymbolsIngesterMessage> EnqueueSymbolsIngestionMessageAsync(IValidationRequest request) { var message = new SymbolsIngesterMessage(validationId: request.ValidationId, symbolPackageKey: request.PackageKey, packageId: request.PackageId, packageNormalizedVersion: request.PackageVersion, snupkgUrl: request.NupkgUrl, requestName: SymbolsValidationEntitiesService.CreateSymbolServerRequestNameFromValidationRequest(request)); var brokeredMessage = _serializer.Serialize(message); var visibleAt = DateTimeOffset.UtcNow + (_messageDelay ?? TimeSpan.Zero); brokeredMessage.ScheduledEnqueueTimeUtc = visibleAt; await _topicClient.SendAsync(brokeredMessage); return(message); }
public async Task <IValidationResult> GetResultAsync(IValidationRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } var result = SymbolsValidationEntitiesService.ConvertToIValidationResult(await _symbolsValidationEntitiesService.GetSymbolsServerRequestAsync(request)); _logger.LogInformation( "Symbols status {Status} for PackageId: {PackageId}, PackageNormalizedVersion {PackageNormalizedVersion}, SymbolsPackageKey {SymbolsPackageKey} ValidationId {ValidationId}", result.Status, request.PackageId, request.PackageVersion, request.PackageKey, request.ValidationId); return(result); }
public FactsBase(ITestOutputHelper output) { _validationEntitiesContext = new Mock <IValidationEntitiesContext>(); _target = new SymbolsValidationEntitiesService(_validationEntitiesContext.Object); }