Exemplo n.º 1
0
            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);
            }
Exemplo n.º 3
0
            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);
            }
Exemplo n.º 4
0
            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);
            }
Exemplo n.º 5
0
            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);
            }
Exemplo n.º 7
0
        /// <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));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 public FactsBase(ITestOutputHelper output)
 {
     _validationEntitiesContext = new Mock <IValidationEntitiesContext>();
     _target = new SymbolsValidationEntitiesService(_validationEntitiesContext.Object);
 }