public void ShallSaveAndNotify() { _dicomToolkit.Setup(p => p.Save(It.IsAny <DicomFile>(), It.IsAny <string>())); _notificationService.Setup(p => p.NewInstanceStored(It.IsAny <InstanceStorageInfo>())); var config = new ClaraApplicationEntity(); config.AeTitle = "my-aet"; config.Processor = "Nvidia.Clara.DicomAdapter.Test.Unit.MockJobProcessor, Nvidia.Clara.Dicom.Test.Unit"; var handler = new ApplicationEntityHandler(_serviceProvider, config, _rootStoragePath, _cancellationTokenSource.Token, _fileSystem); var request = GenerateRequest(); var instance = InstanceStorageInfo.CreateInstanceStorageInfo(request, _rootStoragePath, config.AeTitle, _fileSystem); handler.Save(request, instance); _fileSystem.File.Create(instance.InstanceStorageFullPath); handler.Save(request, instance); _logger.VerifyLogging(LogLevel.Error, Times.Never()); _logger.VerifyLogging("Instance already exists, skipping.", LogLevel.Information, Times.Once()); _logger.VerifyLogging("Instance saved successfully.", LogLevel.Debug, Times.Once()); _logger.VerifyLogging("Instance stored and notified successfully.", LogLevel.Information, Times.Once()); _dicomToolkit.Verify(p => p.Save(It.IsAny <DicomFile>(), It.IsAny <string>()), Times.Exactly(1)); _notificationService.Verify(p => p.NewInstanceStored(instance), Times.Once()); }
public void ShallRespectRetryPolicyOnFailures() { _dicomToolkit.Setup(p => p.Save(It.IsAny <DicomFile>(), It.IsAny <string>())).Throws <Exception>(); var config = new ClaraApplicationEntity(); config.AeTitle = "my-aet"; config.Processor = "Nvidia.Clara.DicomAdapter.Test.Unit.MockJobProcessor, Nvidia.Clara.Dicom.Test.Unit"; var handler = new ApplicationEntityHandler(_serviceProvider, config, _rootStoragePath, _cancellationTokenSource.Token, _fileSystem); var request = GenerateRequest(); var instance = InstanceStorageInfo.CreateInstanceStorageInfo(request, _rootStoragePath, config.AeTitle, _fileSystem); var exception = Assert.Throws <Exception>(() => { handler.Save(request, instance); }); _logger.VerifyLogging(LogLevel.Error, Times.Exactly(3)); _dicomToolkit.Verify(p => p.Save(It.IsAny <DicomFile>(), It.IsAny <string>()), Times.Exactly(4)); }
public void ShallIngoreInstancesWithConfiguredSopClassUids() { _dicomToolkit.Setup(p => p.Save(It.IsAny <DicomFile>(), It.IsAny <string>())); var config = new ClaraApplicationEntity(); config.AeTitle = "my-aet"; config.IgnoredSopClasses = new List <string>() { DicomUID.SecondaryCaptureImageStorage.UID }; config.Processor = "Nvidia.Clara.DicomAdapter.Test.Unit.MockJobProcessor, Nvidia.Clara.Dicom.Test.Unit"; var handler = new ApplicationEntityHandler(_serviceProvider, config, _rootStoragePath, _cancellationTokenSource.Token, _fileSystem); var request = GenerateRequest(); var instance = InstanceStorageInfo.CreateInstanceStorageInfo(request, _rootStoragePath, config.AeTitle, _fileSystem); handler.Save(request, instance); _logger.VerifyLogging($"Instance with SOP Class {DicomUID.SecondaryCaptureImageStorage.UID} ignored based on configured AET {config.AeTitle}", LogLevel.Warning, Times.Once()); _dicomToolkit.Verify(p => p.Save(It.IsAny <DicomFile>(), It.IsAny <string>()), Times.Never()); }
public void ShallRemoveExistingDataAtStartup() { var config = new ClaraApplicationEntity(); config.AeTitle = "my-aet"; config.IgnoredSopClasses = new List <string>() { DicomUID.SecondaryCaptureImageStorage.UID }; config.Processor = "Nvidia.Clara.DicomAdapter.Test.Unit.MockJobProcessor, Nvidia.Clara.Dicom.Test.Unit"; var rootPath = _fileSystem.Path.Combine(_rootStoragePath, config.AeTitle.RemoveInvalidPathChars()); _fileSystem.Directory.CreateDirectory(rootPath); _fileSystem.File.Create(_fileSystem.Path.Combine(rootPath, "test.txt")); #pragma warning disable xUnit2013 Assert.Equal(1, _fileSystem.Directory.GetFiles(rootPath).Count()); var handler = new ApplicationEntityHandler(_serviceProvider, config, _rootStoragePath, _cancellationTokenSource.Token, _fileSystem); _logger.VerifyLogging($"Existing AE Title storage directory {rootPath} found, deleting...", LogLevel.Information, Times.Once()); _logger.VerifyLogging($"Existing AE Title storage directory {rootPath} deleted.", LogLevel.Information, Times.Once()); Assert.Equal(0, _fileSystem.Directory.GetFiles(rootPath).Count()); #pragma warning restore xUnit2013 }