public void TestLoadAETConfigInvalidFiles() { var configurationDirectory = CreateTemporaryDirectory().FullName; var random = new Random(); var aetConfigFolder = Path.Combine(configurationDirectory, AETConfigProvider.AETConfigFolderName); Directory.CreateDirectory(aetConfigFolder); var expectedAETConfigModels = RandomArray(random, 3, 10, RandomAETConfigModel); Serialise(expectedAETConfigModels, aetConfigFolder, "test1.json"); // Write a random GatewayProcessorConfig var gatewayProcessorConfig = RandomGatewayProcessorConfig(random); Serialise(gatewayProcessorConfig, aetConfigFolder, "test2.json"); // Write a random GatewayReceiverConfig var gatewayReceiveConfig = RandomGatewayReceiveConfig(random); Serialise(gatewayReceiveConfig, aetConfigFolder, "test3.json"); var aetConfigProvider = new AETConfigProvider(_baseTestLogger, configurationDirectory); var actualAETConfigModels = aetConfigProvider.GetAETConfigs().ToArray(); Assert.IsTrue(expectedAETConfigModels.SequenceEqual(actualAETConfigModels)); }
/// <summary> /// Create a list of random AET config models, save them to a single file, and check they load correctly. /// </summary> /// <param name="useFile">True to use AETConfigProvider in single file mode, false to use it in folder mode.</param> public void TestLoadAETConfigCommon(bool useFile) { var configurationDirectory = CreateTemporaryDirectory().FullName; var random = new Random(); var expectedAETConfigModels = RandomArray(random, 2, 10, RandomAETConfigModel); var folder = string.Empty; var filename = string.Empty; if (useFile) { folder = configurationDirectory; filename = AETConfigProvider.AETConfigFileName; } else { folder = Path.Combine(configurationDirectory, AETConfigProvider.AETConfigFolderName); Directory.CreateDirectory(folder); filename = "test1.json"; } Serialise(expectedAETConfigModels, folder, filename); var aetConfigProvider = new AETConfigProvider(_baseTestLogger, configurationDirectory, useFile); var actualAETConfigModels = aetConfigProvider.GetAETConfigs().ToArray(); Assert.IsTrue(expectedAETConfigModels.SequenceEqual(actualAETConfigModels)); }
/// <summary> /// Initializes a new instance of the <see cref="BaseTestClass"/> class. /// </summary> public BaseTestClass() { ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; _loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); _baseTestLogger = _loggerFactory.CreateLogger("BaseTest"); // Set a logger for fo-dicom network operations so that they show up in VS output when debugging Dicom.Log.LogManager.SetImplementation(new Dicom.Log.TextWriterLogManager(new DataProviderTests.DebugTextWriter())); _testAETConfigProvider = new AETConfigProvider(_loggerFactory.CreateLogger("ModelSettings"), _basePathConfigs); TestGatewayProcessorConfigProvider = new GatewayProcessorConfigProvider(_loggerFactory.CreateLogger("ProcessorSettings"), _basePathConfigs); _testGatewayReceiveConfigProvider = new GatewayReceiveConfigProvider(_loggerFactory.CreateLogger("ProcessorSettings"), _basePathConfigs); }
public void TestLoadAETConfigSplitAndMerge() { var configurationDirectory = CreateTemporaryDirectory().FullName; var random = new Random(); var aetConfigFolder = Path.Combine(configurationDirectory, AETConfigProvider.AETConfigFolderName); Directory.CreateDirectory(aetConfigFolder); var expectedAETConfigModels = RandomArray(random, 3, 10, RandomAETConfigModel); for (var j = 0; j < expectedAETConfigModels.Length; j++) { if (expectedAETConfigModels[j].AETConfig.Config.ModelsConfig != null) { // If this model has ModelsConfig then create a new AET config model for each of the // models config. for (var i = 0; i < expectedAETConfigModels[j].AETConfig.Config.ModelsConfig.Length; i++) { // Clone the expected AET config model taking only the ith models config. var expectedAETConfig0 = expectedAETConfigModels[j].With( aetConfig: expectedAETConfigModels[j].AETConfig.With( config: expectedAETConfigModels[j].AETConfig.Config.With( modelsConfig: new[] { expectedAETConfigModels[j].AETConfig.Config.ModelsConfig[i] }))); var expectedAETConfig = new[] { expectedAETConfig0 }; Serialise(expectedAETConfig, aetConfigFolder, string.Format("GatewayModelRulesConfig{0}_{1}.json", j, i), true); } } else { // No ModelsConfig so just clone at the base. var expectedAETConfig = new[] { expectedAETConfigModels[j] }; Serialise(expectedAETConfig, aetConfigFolder, string.Format("GatewayModelRulesConfig{0}.json", j), true); } } var aetConfigProvider = new AETConfigProvider(_baseTestLogger, configurationDirectory); var actualAETConfigModels = aetConfigProvider.GetAETConfigs().ToArray(); Assert.IsTrue(expectedAETConfigModels.SequenceEqual(actualAETConfigModels)); }
public void TestLoadAETConfigConcatenate() { var configurationDirectory = CreateTemporaryDirectory().FullName; var random = new Random(); var aetConfigFolder = Path.Combine(configurationDirectory, AETConfigProvider.AETConfigFolderName); Directory.CreateDirectory(aetConfigFolder); var expectedAETConfigModels = RandomArray(random, 3, 10, RandomAETConfigModel); for (var i = 0; i < expectedAETConfigModels.Length; i++) { var expectedAETConfig = new[] { expectedAETConfigModels[i] }; Serialise(expectedAETConfig, aetConfigFolder, string.Format("GatewayModelRulesConfig{0}.json", i)); } var aetConfigProvider = new AETConfigProvider(_baseTestLogger, configurationDirectory); var actualAETConfigModels = aetConfigProvider.GetAETConfigs().ToArray(); Assert.IsTrue(expectedAETConfigModels.SequenceEqual(actualAETConfigModels)); }
public void TestLoadAETConfigMerge() { var configurationDirectory = CreateTemporaryDirectory().FullName; var random = new Random(); var aetConfigFolder = Path.Combine(configurationDirectory, AETConfigProvider.AETConfigFolderName); Directory.CreateDirectory(aetConfigFolder); // This test needs ModelConfigs, but the AETConfigType will be one of: Model, ModelDryRun, ModelWithResultDryRun // just loop until it has the right type. var expectedAETConfigModels = RandomArray(random, 3, 1, RandomAETConfigModel); while (expectedAETConfigModels[0].AETConfig.Config.ModelsConfig == null || expectedAETConfigModels[0].AETConfig.Config.ModelsConfig.Length == 0) { expectedAETConfigModels = RandomArray(random, 3, 1, RandomAETConfigModel); } for (var i = 0; i < expectedAETConfigModels[0].AETConfig.Config.ModelsConfig.Length; i++) { // Clone the expected AET config model taking only the ith models config. var expectedAETConfig0 = expectedAETConfigModels[0].With( aetConfig: expectedAETConfigModels[0].AETConfig.With( config: expectedAETConfigModels[0].AETConfig.Config.With( modelsConfig: new[] { expectedAETConfigModels[0].AETConfig.Config.ModelsConfig[i] }))); var expectedAETConfig = new[] { expectedAETConfig0 }; Serialise(expectedAETConfig, aetConfigFolder, string.Format("GatewayModelRulesConfig{0}.json", i), true); } var aetConfigProvider = new AETConfigProvider(_baseTestLogger, configurationDirectory); var actualAETConfigModels = aetConfigProvider.GetAETConfigs().ToArray(); Assert.IsTrue(expectedAETConfigModels.SequenceEqual(actualAETConfigModels)); }
/// <summary> /// The main entry point for the application. /// </summary> public static void Main() { // Create the loggerFactory as Console + Log4Net. using (var loggerFactory = LoggerFactory.Create(builder => { builder.AddConsole(); builder.SetMinimumLevel(LogLevel.Trace); builder.AddLog4Net(); })) { var relativePaths = new[] { "../Config", "../../../../../SampleConfigurations" }; var configurationsPathRoot = ConfigurationService.FindRelativeDirectory(relativePaths, loggerFactory.CreateLogger("Main")); using (var aetConfigurationProvider = new AETConfigProvider( loggerFactory.CreateLogger("ModelSettings"), configurationsPathRoot)) using (var gatewayProcessorConfigProvider = new GatewayProcessorConfigProvider( loggerFactory.CreateLogger("ProcessorSettings"), configurationsPathRoot)) { var segmentationClientLogger = loggerFactory.CreateLogger("SegmentationClient"); // The ProjectInstaller.cs uses the service name to install the service. // If you change it please update the ProjectInstaller.cs ServiceHelpers.RunServices( ServiceName, gatewayProcessorConfigProvider.ServiceSettings(), new ConfigurationService( gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient(segmentationClientLogger), gatewayProcessorConfigProvider.ConfigurationServiceConfig, loggerFactory.CreateLogger("ConfigurationService"), new UploadService( gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient(segmentationClientLogger), aetConfigurationProvider.AETConfigModels, GatewayMessageQueue.UploadQueuePath, GatewayMessageQueue.DownloadQueuePath, GatewayMessageQueue.DeleteQueuePath, gatewayProcessorConfigProvider.DequeueServiceConfig, loggerFactory.CreateLogger("UploadService"), instances: 2), new DownloadService( gatewayProcessorConfigProvider.CreateInnerEyeSegmentationClient(segmentationClientLogger), GatewayMessageQueue.DownloadQueuePath, GatewayMessageQueue.PushQueuePath, GatewayMessageQueue.DeleteQueuePath, gatewayProcessorConfigProvider.DownloadServiceConfig, gatewayProcessorConfigProvider.DequeueServiceConfig, loggerFactory.CreateLogger("DownloadService"), instances: 1), new PushService( aetConfigurationProvider.AETConfigModels, new DicomDataSender(), GatewayMessageQueue.PushQueuePath, GatewayMessageQueue.DeleteQueuePath, gatewayProcessorConfigProvider.DequeueServiceConfig, loggerFactory.CreateLogger("PushService"), instances: 1), new DeleteService( GatewayMessageQueue.DeleteQueuePath, gatewayProcessorConfigProvider.DequeueServiceConfig, loggerFactory.CreateLogger("DeleteService")))); } } }