예제 #1
0
        public void AppSettingsLoader_Load_NoExceptionWhenClassOptional()
        {
            var mockSettingsLoader = new SettingLoaderMock();
            var settings           = new SettingsOptionalConnectionString();

            // Should not throw an exception
            AppSettingsLoader.Load(mockSettingsLoader, ref settings);
            Assert.IsNull(settings.ConnectionString);
        }
예제 #2
0
        public void AppSettingsLoader_Load_UsesKeyOverride()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("IsFooBar", "Foobar");

            var settings2 = new Settings2();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings2), "Load returned false");
            Assert.AreEqual("Foobar", settings2.IsFoo, "String setting not set");
        }
예제 #3
0
        public void AppSettingsLoader_Load_NoExceptionIfOptionalSettingDoesNotExist()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            // Set the required setting to avoid the exception, but don't set the optional setting
            mockSettingsLoader.Settings.Add("RequiredSetting", "Exists");

            var settings3 = new Settings3();

            AppSettingsLoader.Load(mockSettingsLoader, ref settings3);
        }
예제 #4
0
        public void AppSettingsLoader_Load_LoadsBool()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("IsTrue", "true");

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");
            Assert.IsTrue(settings.IsTrue, "Boolean setting not set to true");
        }
예제 #5
0
        public void AppSettingsLoader_Load_LoadsInt()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("Is42", "42");

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");
            Assert.AreEqual(42, settings.Is42, "Int setting not set");
        }
예제 #6
0
        public void AppSettingsLoader_Load_LoadsString()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("IsFoobar", "Foobar");

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");
            Assert.AreEqual("Foobar", settings.IsFoobar, "String setting not set");
        }
예제 #7
0
        public void AppSettingsLoader_Load_LoadsUndecoratedPropertyWhenClassIsDecorated()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("Is42", "42");

            var settings2 = new Settings2();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings2), "Load returned false");
            Assert.AreEqual(42, settings2.Is42, "Int setting not set");
        }
예제 #8
0
        public void AppSettingsLoader_Load_LoadsDateTime()
        {
            var      mockSettingsLoader = new SettingLoaderMock();
            DateTime today = DateTime.Today;

            mockSettingsLoader.Settings.Add("IsToday", today.ToString());

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");
            Assert.AreEqual(today, settings.IsToday, "DateTime setting not set");
        }
예제 #9
0
        public void AppSettingsLoader_Load_LoadsGuid()
        {
            var  mockSettingsLoader = new SettingLoaderMock();
            Guid guid = Guid.NewGuid();

            mockSettingsLoader.Settings.Add("IsGuid", guid.ToString());

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");
            Assert.AreEqual(guid, settings.IsGuid, "Guid setting not set");
        }
예제 #10
0
        public void AppSettingsLoader_Load_LoadsEnumByValue()
        {
            var    mockSettingsLoader = new SettingLoaderMock();
            Option option             = Option.Option2;

            mockSettingsLoader.Settings.Add("IsOption2", ((int)option).ToString());

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");
            Assert.AreEqual(option, settings.IsOption2, "Enum setting not set");
        }
예제 #11
0
        public void AppSetingsLoader_Load_LoadsAConnectionString()
        {
            var connectionStringName  = "SingleConnectionString";
            var connectionStringValue = "ConnectionStringValue";
            var mockSettingLoader     = new SettingLoaderMock();

            mockSettingLoader.ConnectionStrings.Add(connectionStringName, connectionStringValue);

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingLoader, ref settings), "Load returned flase");
            Assert.AreEqual(connectionStringValue, settings.SingleConnectionString);
        }
예제 #12
0
        public void AppSettings_Load_CollectionHandlesSpaces()
        {
            string[] values             = new[] { "one", "two", "three" };
            var      mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("Values", String.Join(", ", values));

            var settings = new ListVarieties();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingsLoader, ref settings), "Load returned false");

            CollectionAssert.AreEqual(values, settings.Values);
        }
예제 #13
0
        public void AppSetingsLoader_Load_LoadsConnectionStringsWhenPropertyIsDecoratedWithConnectionString()
        {
            var connectionStringName  = "Name";
            var connectionStringValue = "Value";
            var mockSettingLoader     = new SettingLoaderMock();

            mockSettingLoader.ConnectionStrings.Add(connectionStringName, connectionStringValue);

            var settings = new Settings();

            Assert.IsTrue(AppSettingsLoader.Load(mockSettingLoader, ref settings), "Load returned flase");
            Assert.IsTrue(settings.ConnectionStrings.ContainsKey(connectionStringName));
        }
예제 #14
0
        public void AppSettings_Load_NoDevSettingPresentLoadsAsNormal()
        {
            string settingName = "OptionalSetting";
            string prodSetting = "prod";

            var devLoader = new SettingLoaderMock();

            var prodLoader = new SettingLoaderMock();

            prodLoader.Settings.Add(settingName, prodSetting);

            var settings = new SettingsOptionalClass();

            AppSettingsLoader.DevSettings = devLoader;
            Assert.IsTrue(AppSettingsLoader.Load(prodLoader, ref settings), "Load returned false");

            Assert.AreEqual(prodSetting, settings.OptionalSetting);
        }
예제 #15
0
        public void AppSettings_Load_DevSettingOverrides()
        {
            string settingName = "OptionalSetting";
            string devSetting  = "dev";

            var devLoader = new SettingLoaderMock();

            devLoader.Settings.Add(settingName, devSetting);

            var prodLoader = new SettingLoaderMock();

            prodLoader.Settings.Add(settingName, "prod");

            var settings = new SettingsOptionalClass();

            AppSettingsLoader.DevSettings = devLoader;
            Assert.IsTrue(AppSettingsLoader.Load(prodLoader, ref settings), "Load returned false");

            Assert.AreEqual(devSetting, settings.OptionalSetting);
        }
예제 #16
0
        public void AppSettings_Load_DevConnectionStringOverrides()
        {
            string csName   = "OptionalSetting";
            string expected = "dev";

            var devLoader = new SettingLoaderMock();

            devLoader.ConnectionStrings.Add(csName, expected);

            var prodLoader = new SettingLoaderMock();

            prodLoader.ConnectionStrings.Add(csName, "prod");

            var settings = new SettingsConnectionStrings();

            AppSettingsLoader.DevSettings = devLoader;
            Assert.IsTrue(AppSettingsLoader.Load(prodLoader, ref settings), "Load returned false");

            Assert.AreEqual(1, settings.ConnectionStrings.Count);
            Assert.AreEqual(settings.ConnectionStrings[csName], expected);
        }
예제 #17
0
        public static void Main(string[] args)
        {
            Console.WriteLine(CurrentDirectory);

            var configRoot = new ConfigurationBuilder()
                             .SetBasePath(CurrentDirectory)
                             .AddJsonFile("appSettings.json", optional: true, reloadOnChange: true)
                             .Build();

            var appSettings = AppSettingsLoader.Load(configRoot);

            //Host.CreateDefaultBuilder(args)

            var webHostBuilder = new WebHostBuilder()
                                 .SuppressStatusMessages(true)
                                 .ConfigureLogging((hostingContext, loggingBuilder) =>
            {
                loggingBuilder
                .AddConsoleFormatter <CustomConsoleFormatter, CustomConsoleFormatterOptions>(options => { })
                .AddConfiguration(appSettings.LoggingConfig)
                .AddConsole(options => options.FormatterName = nameof(CustomConsoleFormatter));
            })
                                 .ConfigureServices(services =>
            {
                services
                .AddSingleton(appSettings)
                .AddSingleton <IRequestManager, RequestManager>()
                .AddSingleton <ITinfoilIndexBuilder, TinfoilIndexBuilder>()
                .AddSingleton <IFileFilter, FileFilter>();
            })
                                 .UseConfiguration(configRoot)
                                 .UseKestrel((ctx, options) =>
            {
                options.Configure(appSettings.KestrelConfig);
            })
                                 .UseContentRoot(appSettings.ServedDirectory)
                                 .UseStartup <Startup>();

            webHostBuilder.Build().Run();
        }
예제 #18
0
        public void AppSettingsLoader_Load_ExceptionOnFailToParse()
        {
            var mockSettingsLoader = new SettingLoaderMock();

            mockSettingsLoader.Settings.Add("Is42", "fourty-two");

            var settings = new Settings();

            bool exceptionCaught = false;

            try
            {
                AppSettingsLoader.Load(mockSettingsLoader, ref settings);
            }
            catch (AggregateException aggEx)
            {
                exceptionCaught = true;
                Assert.AreEqual(1, aggEx.InnerExceptions.Count);
            }

            Assert.IsTrue(exceptionCaught, "An exception was not thrown");
        }
예제 #19
0
        private void BtnLoadSelectedClick(object sender, EventArgs e)
        {
            _logRef.Target.Clear();
            _logRef.Target.LogDebug("Loading commenced...");
            var nameSpace = cBoxNameSpaces.Text;

            using (ICoreClient client = _factory.Create())
            {
                if (chkDeleteAllConfig.Checked)
                {
                    chkDeleteAllConfig.Checked = false;
                    client.DeleteTypedObjects(null, Expr.StartsWith(Expr.SysPropItemName, nameSpace + ".Configuration."));
                }
                if (chkDeleteAllStatus.Checked)
                {
                    chkDeleteAllStatus.Checked = false;
                    client.DeleteTypedObjects(null, Expr.StartsWith(Expr.SysPropItemName, nameSpace + ".Status."));
                }
                if (chkDeleteAllAppSettings.Checked)
                {
                    chkDeleteAllAppSettings.Checked = false;
                    client.DeleteObjects <AppCfgRuleV2>(Expr.ALL);
                }
                if (chkMDSProviderMaps.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.MarketDataConfigHelper.LoadProviderRules(_logRef.Target, client);
                    }
                    else
                    {
                        MarketDataConfigHelper.LoadProviderRules(_logRef.Target, client, nameSpace);
                    }
                    chkMDSProviderMaps.Checked = false;
                }
                if (chkPricingStructureDefs.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.PricingStructureLoader.LoadPricingStructures(_logRef.Target, client);
                    }
                    else
                    {
                        PricingStructureLoader.LoadPricingStructures(_logRef.Target, client, nameSpace);
                    }
                    chkPricingStructureDefs.Checked = false;
                }
                if (chkAlertMonitorRules.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.AlertRulesLoader.Load(_logRef.Target, client);
                    }
                    else
                    {
                        AlertRulesLoader.Load(_logRef.Target, client, nameSpace);
                    }
                    chkAlertMonitorRules.Checked = false;
                }
                if (chkFileImportRules.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.FileImportRuleLoader.Load(_logRef.Target, client);
                    }
                    else
                    {
                        FileImportRuleLoader.Load(_logRef.Target, client, nameSpace);
                    }
                    chkFileImportRules.Checked = false;
                }
                if (chkTradeImportRules.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.TradeImportRuleLoader.Load(_logRef.Target, client);
                    }
                    else
                    {
                        TradeImportRuleLoader.Load(_logRef.Target, client, nameSpace);
                    }
                    chkTradeImportRules.Checked = false;
                }
                if (chkStressRules.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.StressDefinitionLoader.LoadStressDefinitions(_logRef.Target, client);
                        //Orion.Configuration.StressDefinitionLoader.LoadScenarioDefinitions(_logRef.Target, client);
                    }
                    else
                    {
                        StressDefinitionLoader.LoadStressDefinitions(_logRef.Target, client, nameSpace);
                        StressDefinitionLoader.LoadScenarioDefinitions(_logRef.Target, client, nameSpace);
                    }
                    chkStressRules.Checked = false;
                }
                if (chkAppSettings.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.AppSettingsLoader.Load(_logRef.Target, client);
                    }
                    else
                    {
                        AppSettingsLoader.Load(_logRef.Target, client, nameSpace);
                    }
                    chkAppSettings.Checked = false;
                }
                if (chkInstrumentsConfig.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.ConfigDataLoader.LoadInstrumentsConfig(_logRef.Target, client);
                    }
                    else
                    {
                        ConfigDataLoader.LoadInstrumentsConfig(_logRef.Target, client, nameSpace);
                    }
                    chkInstrumentsConfig.Checked = false;
                }
                if (chkAlgorithmConfig.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.ConfigDataLoader.LoadPricingStructureAlgorithm(_logRef.Target, client);
                    }
                    else
                    {
                        ConfigDataLoader.LoadPricingStructureAlgorithm(_logRef.Target, client, nameSpace);
                    }
                    chkAlgorithmConfig.Checked = false;
                }
                if (chkDateRules.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.ConfigDataLoader.LoadDateRules(_logRef.Target, client);
                    }
                    else
                    {
                        ConfigDataLoader.LoadDateRules(_logRef.Target, client, nameSpace);
                    }
                    chkDateRules.Checked = false;
                }
                if (bondDataCheckBox.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.MarketLoader.LoadFixedIncomeData(_logRef.Target, client);
                    }
                    else
                    {
                        MarketLoader.LoadFixedIncomeData(_logRef.Target, client, nameSpace);
                    }
                    bondDataCheckBox.Checked = false;
                }
                if (checkBoxMarkets.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.MarketLoader.Load(_logRef.Target, client);
                    }
                    else
                    {
                        MarketLoader.Load(_logRef.Target, client, nameSpace);
                    }
                    checkBoxMarkets.Checked = false;
                }
                if (checkBoxFpML.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.ConfigDataLoader.LoadFpml(_logRef.Target, client);
                        //Orion.Configuration.ConfigDataLoader.LoadGwml(_logRef.Target, client);
                    }
                    else
                    {
                        ConfigDataLoader.LoadFpMLCodes(_logRef.Target, client, nameSpace);
                    }
                    checkBoxFpML.Checked = false;
                }
                if (checkBoxHolidayDates.Checked)
                {
                    if (nameSpace == "FpML.V4r7")
                    {
                        //Orion.Configuration.ConfigDataLoader.LoadNewHolidayDates(_logRef.Target, client);
                    }
                    else
                    {
                        ConfigDataLoader.LoadNewHolidayDates(_logRef.Target, client, nameSpace);
                    }
                    checkBoxHolidayDates.Checked = false;
                }
            }
            _logRef.Target.LogDebug("Load completed.");
        }
예제 #20
0
        public static void Main(string[] args)
        {
            const string?CONFIG_FILE_NAME = "TinfoilWebServer.config.json";

            IConfigurationRoot configRoot;

            try
            {
                configRoot = new ConfigurationBuilder()
                             .SetBasePath(CurrentDirectory)
                             .AddJsonFile(CONFIG_FILE_NAME, optional: true, reloadOnChange: true)
                             .Build();
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"Failed to build configuration: {ex.Message}{Environment.NewLine}Is «{CONFIG_FILE_NAME}» a valid JSON file?");
                Environment.ExitCode = 1;
                return;
            }

            IAppSettings?appSettings;

            string[]? settingsLoadingErrors;
            try
            {
                appSettings = AppSettingsLoader.Load(configRoot, out settingsLoadingErrors);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine($"Failed to load configuration from file «{CONFIG_FILE_NAME}»: {ex.Message}");
                Environment.ExitCode = 1;
                return;
            }

            var webHostBuilder = new WebHostBuilder()
                                 .SuppressStatusMessages(true)
                                 .ConfigureLogging((hostingContext, loggingBuilder) =>
            {
                loggingBuilder
                .AddConsoleFormatter <CustomConsoleFormatter, CustomConsoleFormatterOptions>(options => { })
                .AddConfiguration(appSettings.LoggingConfig)
                .AddConsole(options => options.FormatterName = nameof(CustomConsoleFormatter));
            })
                                 .ConfigureServices(services =>
            {
                services
                .AddSingleton(appSettings)
                .AddSingleton <IRequestManager, RequestManager>()
                .AddSingleton <IServedDirAliasMap, ServedDirAliasMap>()
                .AddSingleton <IPhysicalPathConverter, PhysicalPathConverter>()
                .AddSingleton <IFileFilter, FileFilter>()
                .AddSingleton <IUrlCombinerFactory, UrlCombinerFactory>()
                .AddSingleton <IJsonSerializer, JsonSerializer>()
                .AddSingleton <ICachedTinfoilIndexBuilder, CachedTinfoilIndexBuilder>()
                .AddSingleton <ITinfoilIndexBuilder, TinfoilIndexBuilder>();
            })
                                 .UseConfiguration(configRoot)
                                 .UseKestrel((ctx, options) =>
            {
                options.Configure(appSettings.KestrelConfig);
            })
                                 .UseStartup <Startup>();


            var webHost = webHostBuilder.Build();

            var logger = webHost.Services.GetRequiredService <ILogger <Program> >();

            if (settingsLoadingErrors.Length > 0)
            {
                logger.LogError($"Settings error:{settingsLoadingErrors.ToMultilineString()}");
            }

            webHost.Run();
        }