예제 #1
0
        public DeleteService(
            IIndexDataStore indexDataStore,
            IMetadataStore metadataStore,
            IFileStore fileStore,
            IOptions <DeletedInstanceCleanupConfiguration> deletedInstanceCleanupConfiguration,
            ITransactionHandler transactionHandler,
            ILogger <DeleteService> logger,
            IDicomRequestContextAccessor contextAccessor)
        {
            EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
            EnsureArg.IsNotNull(metadataStore, nameof(metadataStore));
            EnsureArg.IsNotNull(fileStore, nameof(fileStore));
            EnsureArg.IsNotNull(deletedInstanceCleanupConfiguration?.Value, nameof(deletedInstanceCleanupConfiguration));
            EnsureArg.IsNotNull(transactionHandler, nameof(transactionHandler));
            EnsureArg.IsNotNull(logger, nameof(logger));
            EnsureArg.IsNotNull(contextAccessor, nameof(contextAccessor));

            _indexDataStore = indexDataStore;
            _metadataStore  = metadataStore;
            _fileStore      = fileStore;
            _deletedInstanceCleanupConfiguration = deletedInstanceCleanupConfiguration.Value;
            _transactionHandler = transactionHandler;
            _logger             = logger;
            _contextAccessor    = contextAccessor;
        }
예제 #2
0
        public DeleteServiceTests()
        {
            _indexDataStore        = Substitute.For <IIndexDataStore>();
            _metadataStore         = Substitute.For <IMetadataStore>();
            _fileDataStore         = Substitute.For <IFileStore>();
            _indexDataStoreFactory = Substitute.For <IIndexDataStoreFactory>();
            _deleteConfiguration   = new DeletedInstanceCleanupConfiguration
            {
                DeleteDelay     = TimeSpan.FromDays(1),
                BatchSize       = 10,
                MaxRetries      = 5,
                PollingInterval = TimeSpan.FromSeconds(1),
                RetryBackOff    = TimeSpan.FromDays(4),
            };

            IOptions <DeletedInstanceCleanupConfiguration> deletedInstanceCleanupConfigurationOptions = Substitute.For <IOptions <DeletedInstanceCleanupConfiguration> >();

            deletedInstanceCleanupConfigurationOptions.Value.Returns(_deleteConfiguration);
            ITransactionHandler transactionHandler = Substitute.For <ITransactionHandler>();

            _transactionScope = Substitute.For <ITransactionScope>();
            transactionHandler.BeginTransaction().Returns(_transactionScope);

            _indexDataStoreFactory.GetInstance().Returns(_indexDataStore);
            _deleteService = new DeleteService(_indexDataStoreFactory, _metadataStore, _fileDataStore, deletedInstanceCleanupConfigurationOptions, transactionHandler, NullLogger <DeleteService> .Instance);
        }
예제 #3
0
        public DeleteServiceTests()
        {
            _indexDataStore      = Substitute.For <IIndexDataStore>();
            _metadataStore       = Substitute.For <IMetadataStore>();
            _fileDataStore       = Substitute.For <IFileStore>();
            _deleteConfiguration = new DeletedInstanceCleanupConfiguration
            {
                DeleteDelay     = TimeSpan.FromDays(1),
                BatchSize       = 10,
                MaxRetries      = 5,
                PollingInterval = TimeSpan.FromSeconds(1),
                RetryBackOff    = TimeSpan.FromDays(4),
            };

            IOptions <DeletedInstanceCleanupConfiguration> deletedInstanceCleanupConfigurationOptions = Substitute.For <IOptions <DeletedInstanceCleanupConfiguration> >();

            deletedInstanceCleanupConfigurationOptions.Value.Returns(_deleteConfiguration);
            ITransactionHandler transactionHandler = Substitute.For <ITransactionHandler>();

            _transactionScope = Substitute.For <ITransactionScope>();
            transactionHandler.BeginTransaction().Returns(_transactionScope);
            _dicomRequestContextAccessor = Substitute.For <IDicomRequestContextAccessor>();
            _dicomRequestContextAccessor.RequestContext.DataPartitionEntry = new PartitionEntry(DefaultPartition.Key, DefaultPartition.Name);

            _deleteService = new DeleteService(_indexDataStore, _metadataStore, _fileDataStore, deletedInstanceCleanupConfigurationOptions, transactionHandler, NullLogger <DeleteService> .Instance, _dicomRequestContextAccessor);
        }
        /// <summary>
        /// Deletes the instance index with no back off on cleaning up the underlying files.
        /// </summary>
        /// <param name="indexDataStore">The IIndexDataStore.</param>
        /// <param name="instanceIdentifier">The instance to delete.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>A task representing the asynchronous delete command.</returns>
        public static async Task DeleteInstanceIndexAsync(this IIndexDataStore indexDataStore, InstanceIdentifier instanceIdentifier, CancellationToken cancellationToken = default)
        {
            EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
            EnsureArg.IsNotNull(instanceIdentifier, nameof(instanceIdentifier));

            await indexDataStore.DeleteInstanceIndexAsync(
                instanceIdentifier.PartitionKey, instanceIdentifier.StudyInstanceUid, instanceIdentifier.SeriesInstanceUid, instanceIdentifier.SopInstanceUid, Clock.UtcNow, cancellationToken);
        }
        public LoggingIndexDataStore(IIndexDataStore indexDataStore, ILogger <LoggingIndexDataStore> logger)
        {
            EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
            EnsureArg.IsNotNull(logger, nameof(logger));

            IndexDataStore = indexDataStore;
            _logger        = logger;
        }
예제 #6
0
 public InstanceStoreTests(SqlDataStoreTestsFixture fixture)
 {
     _instanceStore                   = EnsureArg.IsNotNull(fixture?.InstanceStore, nameof(fixture.InstanceStore));
     _indexDataStore                  = EnsureArg.IsNotNull(fixture?.IndexDataStore, nameof(fixture.IndexDataStore));
     _extendedQueryTagStore           = EnsureArg.IsNotNull(fixture?.ExtendedQueryTagStore, nameof(fixture.ExtendedQueryTagStore));
     _indexDataStoreTestHelper        = EnsureArg.IsNotNull(fixture?.IndexDataStoreTestHelper, nameof(fixture.IndexDataStoreTestHelper));
     _extendedQueryTagStoreTestHelper = EnsureArg.IsNotNull(fixture?.ExtendedQueryTagStoreTestHelper, nameof(fixture.ExtendedQueryTagStoreTestHelper));
     _partitionStore                  = EnsureArg.IsNotNull(fixture?.PartitionStore, nameof(fixture.PartitionStore));
 }
예제 #7
0
 public IndexDataStoreTests(SqlDataStoreTestsFixture fixture)
 {
     EnsureArg.IsNotNull(fixture, nameof(fixture));
     EnsureArg.IsNotNull(fixture.IndexDataStore, nameof(fixture.IndexDataStore));
     EnsureArg.IsNotNull(fixture.TestHelper, nameof(fixture.IndexDataStore));
     EnsureArg.IsNotNull(fixture.ExtendedQueryTagStore, nameof(fixture.ExtendedQueryTagStore));
     _indexDataStore        = fixture.IndexDataStore;
     _testHelper            = fixture.TestHelper;
     _extendedQueryTagStore = fixture.ExtendedQueryTagStore;
 }
 public ExtendedQueryTagErrorStoreTests(SqlDataStoreTestsFixture fixture)
 {
     EnsureArg.IsNotNull(fixture, nameof(fixture));
     _extendedQueryTagStore      = EnsureArg.IsNotNull(fixture.ExtendedQueryTagStore, nameof(fixture.ExtendedQueryTagStore));
     _extendedQueryTagErrorStore = EnsureArg.IsNotNull(fixture.ExtendedQueryTagErrorStore, nameof(fixture.ExtendedQueryTagErrorStore));
     _tagStoreTestHelper         = EnsureArg.IsNotNull(fixture.ExtendedQueryTagStoreTestHelper, nameof(fixture.ExtendedQueryTagStoreTestHelper));
     _indexDataStore             = EnsureArg.IsNotNull(fixture.IndexDataStore, nameof(fixture.IndexDataStore));
     _errorStoreTestHelper       = EnsureArg.IsNotNull(fixture.ExtendedQueryTagErrorStoreTestHelper, nameof(fixture.ExtendedQueryTagErrorStoreTestHelper));
     _indexDataStoreTestHelper   = EnsureArg.IsNotNull(fixture.IndexDataStoreTestHelper, nameof(fixture.IndexDataStoreTestHelper));
 }
예제 #9
0
 public InstanceReindexer(
     IMetadataStore metadataStore,
     IIndexDataStore indexDataStore,
     IReindexDatasetValidator dicomDatasetReindexValidator,
     ILogger <InstanceReindexer> logger)
 {
     _metadataStore  = EnsureArg.IsNotNull(metadataStore, nameof(metadataStore));
     _indexDataStore = EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
     _dicomDatasetReindexValidator = EnsureArg.IsNotNull(dicomDatasetReindexValidator, nameof(dicomDatasetReindexValidator));
     _logger = EnsureArg.IsNotNull(logger, nameof(logger));
 }
예제 #10
0
 public RetrieveResourceServiceTests(DataStoreTestsFixture blobStorageFixture, SqlDataStoreTestsFixture sqlIndexStorageFixture)
 {
     _indexDataStore                = sqlIndexStorageFixture.IndexDataStore;
     _instanceStore                 = sqlIndexStorageFixture.InstanceStore;
     _fileStore                     = blobStorageFixture.FileStore;
     _retrieveTranscoder            = Substitute.For <ITranscoder>();
     _frameHandler                  = Substitute.For <IFrameHandler>();
     _retrieveTransferSyntaxHandler = new RetrieveTransferSyntaxHandler(NullLogger <RetrieveTransferSyntaxHandler> .Instance);
     _recyclableMemoryStreamManager = blobStorageFixture.RecyclableMemoryStreamManager;
     _retrieveResourceService       = new RetrieveResourceService(
         _instanceStore, _fileStore, _retrieveTranscoder, _frameHandler, _retrieveTransferSyntaxHandler, blobStorageFixture.RecyclableMemoryStreamManager, NullLogger <RetrieveResourceService> .Instance);
 }
예제 #11
0
 public StoreOrchestrator(
     IDicomRequestContextAccessor contextAccessor,
     IFileStore fileStore,
     IMetadataStore metadataStore,
     IIndexDataStore indexDataStore,
     IDeleteService deleteService,
     IQueryTagService queryTagService)
 {
     _contextAccessor = EnsureArg.IsNotNull(contextAccessor, nameof(contextAccessor));
     _fileStore       = EnsureArg.IsNotNull(fileStore, nameof(fileStore));
     _metadataStore   = EnsureArg.IsNotNull(metadataStore, nameof(metadataStore));
     _indexDataStore  = EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
     _deleteService   = EnsureArg.IsNotNull(deleteService, nameof(deleteService));
     _queryTagService = EnsureArg.IsNotNull(queryTagService, nameof(queryTagService));
 }
예제 #12
0
        public BackgroundServiceHealthCheck(
            IIndexDataStoreFactory indexDataStoreFactory,
            IOptions <DeletedInstanceCleanupConfiguration> deletedInstanceCleanupConfiguration,
            TelemetryClient telemetryClient,
            BackgroundServiceHealthCheckCache backgroundServiceHealthCheckCache)
        {
            EnsureArg.IsNotNull(indexDataStoreFactory, nameof(indexDataStoreFactory));
            EnsureArg.IsNotNull(deletedInstanceCleanupConfiguration?.Value, nameof(deletedInstanceCleanupConfiguration));
            EnsureArg.IsNotNull(telemetryClient, nameof(telemetryClient));
            EnsureArg.IsNotNull(backgroundServiceHealthCheckCache, nameof(backgroundServiceHealthCheckCache));

            _indexDataStore = indexDataStoreFactory.GetInstance();
            _deletedInstanceCleanupConfiguration = deletedInstanceCleanupConfiguration.Value;
            _telemetryClient = telemetryClient;
            _backgroundServiceHealthCheckCache = backgroundServiceHealthCheckCache;
        }
예제 #13
0
        public StoreOrchestrator(
            IFileStore fileStore,
            IMetadataStore metadataStore,
            IIndexDataStore indexDataStore,
            IDeleteService deleteService)
        {
            EnsureArg.IsNotNull(fileStore, nameof(fileStore));
            EnsureArg.IsNotNull(metadataStore, nameof(metadataStore));
            EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
            EnsureArg.IsNotNull(deleteService, nameof(deleteService));

            _fileStore      = fileStore;
            _metadataStore  = metadataStore;
            _indexDataStore = indexDataStore;
            _deleteService  = deleteService;
        }
        public RetrieveResourceServiceTests(DataStoreTestsFixture blobStorageFixture, SqlDataStoreTestsFixture sqlIndexStorageFixture)
        {
            EnsureArg.IsNotNull(sqlIndexStorageFixture, nameof(sqlIndexStorageFixture));
            EnsureArg.IsNotNull(blobStorageFixture, nameof(blobStorageFixture));
            _instanceStore      = sqlIndexStorageFixture.InstanceStore;
            _indexDataStore     = sqlIndexStorageFixture.IndexDataStore;
            _fileStore          = blobStorageFixture.FileStore;
            _retrieveTranscoder = Substitute.For <ITranscoder>();
            _frameHandler       = Substitute.For <IFrameHandler>();

            _dicomRequestContextAccessor = Substitute.For <IDicomRequestContextAccessor>();
            _dicomRequestContextAccessor.RequestContext.DataPartitionEntry = new PartitionEntry(DefaultPartition.Key, DefaultPartition.Name);

            _retrieveTransferSyntaxHandler = new RetrieveTransferSyntaxHandler(NullLogger <RetrieveTransferSyntaxHandler> .Instance);
            _recyclableMemoryStreamManager = blobStorageFixture.RecyclableMemoryStreamManager;
            _retrieveResourceService       = new RetrieveResourceService(
                _instanceStore, _fileStore, _retrieveTranscoder, _frameHandler, _retrieveTransferSyntaxHandler, _dicomRequestContextAccessor, NullLogger <RetrieveResourceService> .Instance);
        }
        public BackgroundServiceHealthCheck(
            IIndexDataStore indexDataStore,
            IOptions <DeletedInstanceCleanupConfiguration> deletedInstanceCleanupConfiguration,
            TelemetryClient telemetryClient,
            BackgroundServiceHealthCheckCache backgroundServiceHealthCheckCache,
            ILogger <BackgroundServiceHealthCheck> logger)
        {
            EnsureArg.IsNotNull(indexDataStore, nameof(indexDataStore));
            EnsureArg.IsNotNull(deletedInstanceCleanupConfiguration?.Value, nameof(deletedInstanceCleanupConfiguration));
            EnsureArg.IsNotNull(telemetryClient, nameof(telemetryClient));
            EnsureArg.IsNotNull(backgroundServiceHealthCheckCache, nameof(backgroundServiceHealthCheckCache));
            EnsureArg.IsNotNull(logger, nameof(logger));

            _indexDataStore = indexDataStore;
            _deletedInstanceCleanupConfiguration = deletedInstanceCleanupConfiguration.Value;
            _telemetryClient = telemetryClient;
            _backgroundServiceHealthCheckCache = backgroundServiceHealthCheckCache;
            _logger = logger;
        }
        public StoreOrchestrator(
            IFileStore fileStore,
            IMetadataStore metadataStore,
            IIndexDataStoreFactory indexDataStoreFactory,
            IDeleteService deleteService,
            IQueryTagService queryTagService)
        {
            EnsureArg.IsNotNull(fileStore, nameof(fileStore));
            EnsureArg.IsNotNull(metadataStore, nameof(metadataStore));
            EnsureArg.IsNotNull(indexDataStoreFactory, nameof(indexDataStoreFactory));
            EnsureArg.IsNotNull(deleteService, nameof(deleteService));
            EnsureArg.IsNotNull(queryTagService, nameof(queryTagService));

            _fileStore       = fileStore;
            _metadataStore   = metadataStore;
            _deleteService   = deleteService;
            _queryTagService = queryTagService;
            _indexDataStore  = indexDataStoreFactory.GetInstance();
        }
예제 #17
0
        public DeleteService(
            IIndexDataStoreFactory indexDataStoreFactory,
            IMetadataStore metadataStore,
            IFileStore fileStore,
            IOptions <DeletedInstanceCleanupConfiguration> deletedInstanceCleanupConfiguration,
            ITransactionHandler transactionHandler,
            ILogger <DeleteService> logger)
        {
            EnsureArg.IsNotNull(indexDataStoreFactory, nameof(indexDataStoreFactory));
            EnsureArg.IsNotNull(metadataStore, nameof(metadataStore));
            EnsureArg.IsNotNull(fileStore, nameof(fileStore));
            EnsureArg.IsNotNull(deletedInstanceCleanupConfiguration?.Value, nameof(deletedInstanceCleanupConfiguration));
            EnsureArg.IsNotNull(transactionHandler, nameof(transactionHandler));
            EnsureArg.IsNotNull(logger, nameof(logger));

            _indexDataStore = indexDataStoreFactory.GetInstance();
            _metadataStore  = metadataStore;
            _fileStore      = fileStore;
            _deletedInstanceCleanupConfiguration = deletedInstanceCleanupConfiguration.Value;
            _transactionHandler = transactionHandler;
            _logger             = logger;
        }
 public static Task EndCreateInstanceIndexAsync(this IIndexDataStore indexDataStore, int partitionKey, DicomDataset dicomDataset, long watermark, CancellationToken cancellationToken = default)
 => indexDataStore.EndCreateInstanceIndexAsync(partitionKey, dicomDataset, watermark, Array.Empty <QueryTag>(), true, cancellationToken);
예제 #19
0
 public IndexDataStoreTests(SqlDataStoreTestsFixture fixture)
 {
     _indexDataStore = fixture.IndexDataStore;
     _testHelper     = fixture.TestHelper;
 }
예제 #20
0
 public static Task <long> CreateInstanceIndexAsync(this IIndexDataStore indexDataStore, DicomDataset dicomDataset, CancellationToken cancellationToken = default)
 {
     return(indexDataStore.CreateInstanceIndexAsync(dicomDataset, Array.Empty <QueryTag>(), cancellationToken));
 }
예제 #21
0
 public IndexParser(IIndexDataStore indexDataStore)
 {
     _indexDataStore = indexDataStore;
 }
예제 #22
0
 public IndexDataStoreTests(SqlDataStoreTestsFixture fixture)
 {
     EnsureArg.IsNotNull(fixture, nameof(fixture));
     _indexDataStore = fixture.IndexDataStore;
     _testHelper     = fixture.TestHelper;
 }
 public static Task <long> BeginCreateInstanceIndexAsync(this IIndexDataStore indexDataStore, int partitionKey, DicomDataset dicomDataset, CancellationToken cancellationToken = default)
 => indexDataStore.BeginCreateInstanceIndexAsync(partitionKey, dicomDataset, Array.Empty <QueryTag>(), cancellationToken);