public TestableDb2CatalogJob( HttpMessageHandler handler, IStorage catalogStorage, IStorage auditingStorage, bool skipCreatedPackagesProcessing, DateTime?startDate, TimeSpan timeout, int top, bool verbose, Mock <IGalleryDatabaseQueryService> galleryDatabaseMock, PackageContentUriBuilder packageContentUriBuilder, ITestOutputHelper testOutputHelper) : base(new TestLoggerFactory(testOutputHelper), new Mock <ITelemetryClient>().Object, new Dictionary <string, string>()) { _handler = handler; CatalogStorage = catalogStorage; AuditingStorage = auditingStorage; SkipCreatedPackagesProcessing = skipCreatedPackagesProcessing; StartDate = startDate; Timeout = timeout; Top = top; Verbose = verbose; Destination = new Uri("https://nuget.test"); PackageContentUriBuilder = packageContentUriBuilder ?? throw new ArgumentNullException(nameof(galleryDatabaseMock)); GalleryDatabaseQueryService = galleryDatabaseMock?.Object ?? throw new ArgumentNullException(nameof(galleryDatabaseMock)); }
public void ProperlyBuildsPackageContentUrl() { // Arrange var packageContentUriBuilder = new PackageContentUriBuilder("https://unittest.org/packages/{id-lower}/{version-lower}.nupkg"); var expectedUrl = new Uri("https://unittest.org/packages/package.id/1.0.0-alpha.1.nupkg"); // Act var actualUrl = packageContentUriBuilder.Build("Package.Id", "1.0.0-Alpha.1"); // Assert Assert.Equal(expectedUrl, actualUrl); }
protected override void Init(IDictionary <string, string> arguments, CancellationToken cancellationToken) { var verbose = arguments.GetOrDefault(Arguments.Verbose, false); _maxRequeueQueueSize = arguments.GetOrDefault(Arguments.MaxRequeueQueueSize, DefaultMaxQueueSize); CommandHelpers.AssertAzureStorage(arguments); var monitoringStorageFactory = CommandHelpers.CreateStorageFactory(arguments, verbose); _statusService = CommandHelpers.GetPackageMonitoringStatusService(arguments, monitoringStorageFactory, LoggerFactory); _packageValidatorContextQueue = CommandHelpers.CreateStorageQueue <PackageValidatorContext>(arguments, PackageValidatorContext.Version); Logger.LogInformation( "CONFIG storage: {Storage}", monitoringStorageFactory); _monitoringCursor = ValidationFactory.GetFront(monitoringStorageFactory); _galleryCursor = CreateCursor(monitoringStorageFactory, GalleryCursorFileName); _deletedCursor = CreateCursor(monitoringStorageFactory, DeletedCursorFileName); var connectionString = arguments.GetOrThrow <string>(Arguments.ConnectionString); var galleryDbConnection = new AzureSqlConnectionFactory( connectionString, SecretInjector, LoggerFactory.CreateLogger <AzureSqlConnectionFactory>()); var packageContentUriBuilder = new PackageContentUriBuilder( arguments.GetOrThrow <string>(Arguments.PackageContentUrlFormat)); var timeoutInSeconds = arguments.GetOrDefault(Arguments.SqlCommandTimeoutInSeconds, 300); _galleryDatabaseQueryService = new GalleryDatabaseQueryService( galleryDbConnection, packageContentUriBuilder, TelemetryService, timeoutInSeconds); var auditingStorageFactory = CommandHelpers.CreateSuffixedStorageFactory( "Auditing", arguments, verbose, new SemaphoreSlimThrottle(new SemaphoreSlim(ServicePointManager.DefaultConnectionLimit))); _auditingStorage = auditingStorageFactory.Create(); var messageHandlerFactory = CommandHelpers.GetHttpMessageHandlerFactory(TelemetryService, verbose); _client = new CollectorHttpClient(messageHandlerFactory()); }
protected override void Init(IDictionary <string, string> arguments, CancellationToken cancellationToken) { Verbose = arguments.GetOrDefault(Arguments.Verbose, false); StartDate = arguments.GetOrDefault(Arguments.StartDate, Constants.DateTimeMinValueUtc); Top = arguments.GetOrDefault(Arguments.CursorSize, 20); SkipCreatedPackagesProcessing = arguments.GetOrDefault(Arguments.SkipCreatedPackagesProcessing, false); StorageFactory preferredPackageSourceStorageFactory = null; var preferAlternatePackageSourceStorage = arguments.GetOrDefault(Arguments.PreferAlternatePackageSourceStorage, false); if (preferAlternatePackageSourceStorage) { preferredPackageSourceStorageFactory = CommandHelpers.CreateSuffixedStorageFactory( "PreferredPackageSourceStorage", arguments, Verbose, new SemaphoreSlimThrottle(new SemaphoreSlim(ServicePointManager.DefaultConnectionLimit))); } var catalogStorageFactory = CommandHelpers.CreateStorageFactory( arguments, Verbose, new SemaphoreSlimThrottle(new SemaphoreSlim(ServicePointManager.DefaultConnectionLimit))); var auditingStorageFactory = CommandHelpers.CreateSuffixedStorageFactory( "Auditing", arguments, Verbose, new SemaphoreSlimThrottle(new SemaphoreSlim(ServicePointManager.DefaultConnectionLimit))); Logger.LogInformation("CONFIG source: \"{ConfigSource}\" storage: \"{Storage}\" preferred package source storage: \"{PreferredPackageSourceStorage}\"", GalleryDbConnection, catalogStorageFactory, preferredPackageSourceStorageFactory); CatalogStorage = catalogStorageFactory.Create(); AuditingStorage = auditingStorageFactory.Create(); if (preferAlternatePackageSourceStorage) { PreferredPackageSourceStorage = preferredPackageSourceStorageFactory.Create(); } Destination = catalogStorageFactory.BaseAddress; TelemetryService.GlobalDimensions[TelemetryConstants.Destination] = Destination.AbsoluteUri; // Setup gallery database access PackageContentUriBuilder = new PackageContentUriBuilder( arguments.GetOrThrow <string>(Arguments.PackageContentUrlFormat)); var connectionString = arguments.GetOrThrow <string>(Arguments.ConnectionString); GalleryDbConnection = new AzureSqlConnectionFactory( connectionString, SecretInjector, LoggerFactory.CreateLogger <AzureSqlConnectionFactory>()); var timeoutInSeconds = arguments.GetOrDefault(Arguments.SqlCommandTimeoutInSeconds, 300); Timeout = TimeSpan.FromSeconds(timeoutInSeconds); GalleryDatabaseQueryService = new GalleryDatabaseQueryService( GalleryDbConnection, PackageContentUriBuilder, TelemetryService, timeoutInSeconds); }
protected override void Init(IDictionary <string, string> arguments, CancellationToken cancellationToken) { var gallery = arguments.GetOrThrow <string>(Arguments.Gallery); var index = arguments.GetOrThrow <string>(Arguments.Index); var packageBaseAddress = arguments.GetOrThrow <string>(Arguments.ContentBaseAddress); var source = arguments.GetOrThrow <string>(Arguments.Source); var requireRepositorySignature = arguments.GetOrDefault(Arguments.RequireRepositorySignature, false); var verbose = arguments.GetOrDefault(Arguments.Verbose, false); var timeoutInSeconds = arguments.GetOrDefault(Arguments.SqlCommandTimeoutInSeconds, 300); var sqlTimeout = TimeSpan.FromSeconds(timeoutInSeconds); var connectionString = arguments.GetOrThrow <string>(Arguments.ConnectionString); var galleryDbConnection = new AzureSqlConnectionFactory( connectionString, SecretInjector, LoggerFactory.CreateLogger <AzureSqlConnectionFactory>()); var packageContentUriBuilder = new PackageContentUriBuilder( arguments.GetOrThrow <string>(Arguments.PackageContentUrlFormat)); var galleryDatabase = new GalleryDatabaseQueryService( galleryDbConnection, packageContentUriBuilder, TelemetryService, timeoutInSeconds); CommandHelpers.AssertAzureStorage(arguments); var monitoringStorageFactory = CommandHelpers.CreateStorageFactory(arguments, verbose); var auditingStorageFactory = CommandHelpers.CreateSuffixedStorageFactory("Auditing", arguments, verbose); var endpointConfiguration = CommandHelpers.GetEndpointConfiguration(arguments); var messageHandlerFactory = CommandHelpers.GetHttpMessageHandlerFactory(TelemetryService, verbose); Logger.LogInformation( "CONFIG gallery: {Gallery} index: {Index} storage: {Storage} auditingStorage: {AuditingStorage} registration cursor uri: {RegistrationCursorUri} flat-container cursor uri: {FlatContainerCursorUri}", gallery, index, monitoringStorageFactory, auditingStorageFactory, endpointConfiguration.RegistrationCursorUri, endpointConfiguration.FlatContainerCursorUri); var validatorConfig = new ValidatorConfiguration( packageBaseAddress, requireRepositorySignature); _packageValidator = ValidationFactory.CreatePackageValidator( gallery, index, auditingStorageFactory, validatorConfig, endpointConfiguration, messageHandlerFactory, galleryDatabase, LoggerFactory); _queue = CommandHelpers.CreateStorageQueue <PackageValidatorContext>(arguments, PackageValidatorContext.Version); _statusService = CommandHelpers.GetPackageMonitoringStatusService(arguments, monitoringStorageFactory, LoggerFactory); _notificationService = new LoggerMonitoringNotificationService(LoggerFactory.CreateLogger <LoggerMonitoringNotificationService>()); _client = new CollectorHttpClient(messageHandlerFactory()); _queueLoopDuration = TimeSpan.FromHours( arguments.GetOrDefault( Arguments.QueueLoopDurationHours, DefaultQueueLoopDurationHours)); _queueDelay = TimeSpan.FromSeconds( arguments.GetOrDefault( Arguments.QueueDelaySeconds, DefaultQueueDelaySeconds)); _workerCount = arguments.GetOrDefault(Arguments.WorkerCount, DefaultWorkerCount); SetUserAgentString(); }
public void ThrowsForNullArguments(string packageId, string normalizedPackageVersion) { var packageContentUriBuilder = new PackageContentUriBuilder("https://unittest.org/packages/{id-lower}/{version-lower}.nupkg"); Assert.Throws <ArgumentNullException>(() => packageContentUriBuilder.Build(packageId, normalizedPackageVersion)); }
public TheReadFeedPackageDetailsFromDataReaderMethod() { _packageContentUriBuilder = new PackageContentUriBuilder(PackageContentUrlFormat); _db2catalogProjection = new Db2CatalogProjection(_packageContentUriBuilder); }
public TheReadDeprecationInfoFromDataReaderMethod() { _packageContentUriBuilder = new PackageContentUriBuilder(PackageContentUrlFormat); _db2catalogProjection = new Db2CatalogProjection(_packageContentUriBuilder); }