コード例 #1
0
        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));
        }
コード例 #2
0
        /// <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));
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }
コード例 #7
0
        /// <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"))));
                    }
            }
        }