示例#1
0
        public void ProcessEnvHigherThanUserConfig()
        {
            const string retryKey = "Retry";
            const string envName  = "ENV_FOR_RETRY";
            var          config   = new SimpleTypedConfig <int>(retryKey, "", -1, envName);

            var path      = Path.GetRandomFileName();
            var dataStore = new MockDataStore();

            dataStore.WriteFile(path,
                                @"{
    ""Az"": {
        ""Retry"": 100
    }
}");
            var env = new MockEnvironmentVariableProvider();

            env.Set(envName, "10", System.EnvironmentVariableTarget.Process);

            IConfigManager icm = GetConfigManager(
                new InitSettings()
            {
                DataStore = dataStore,
                Path      = path,
                EnvironmentVariableProvider = env
            },
                config);

            Assert.Equal(10, icm.GetConfigValue <int>(retryKey));
        }
示例#2
0
        public void ProcessConfigHigherThanProcessEnv()
        {
            const string retryKey = "Retry";
            const string envName  = "ENV_FOR_RETRY";
            var          config   = new SimpleTypedConfig <int>(retryKey, "", -1, envName);
            var          env      = new MockEnvironmentVariableProvider();

            env.Set(envName, "10", System.EnvironmentVariableTarget.Process);
            IConfigManager icm = GetConfigManager(
                new InitSettings()
            {
                EnvironmentVariableProvider = env
            },
                config);

            icm.UpdateConfig(new UpdateConfigOptions(retryKey, 100, ConfigScope.Process));
            Assert.Equal(100, icm.GetConfigValue <int>(retryKey));
        }
示例#3
0
        public void ShouldNotThrowWhenEnvVarIsWrong()
        {
            const string key                 = "FromEnv";
            const string envKey              = "ENV_VAR_FOR_CONFIG";
            const int    defaultValue        = -1;
            var          config              = new SimpleTypedConfig <int>(key, "", defaultValue, envKey);
            const bool   valueWithWrongType  = true;
            IEnvironmentVariableProvider env = new MockEnvironmentVariableProvider();

            env.Set(envKey, valueWithWrongType.ToString());
            var configurationManager = GetConfigManager(
                new InitSettings()
            {
                EnvironmentVariableProvider = env
            },
                config);

            Assert.Equal(defaultValue, configurationManager.GetConfigValue <int>(key));
        }
示例#4
0
        public void CanGetFromEnvironmentVar()
        {
            const string key    = "FromEnv";
            const string envKey = "ENV_VAR_FOR_CONFIG";
            var          config = new SimpleTypedConfig <int>(key, "", -1, envKey);
            const int    value  = 20;

            IEnvironmentVariableProvider env = new MockEnvironmentVariableProvider();

            env.Set(envKey, value.ToString());
            var configurationManager = GetConfigManager(
                new InitSettings()
            {
                EnvironmentVariableProvider = env
            },
                config);

            Assert.Equal(value, configurationManager.GetConfigValue <int>(key));
        }
示例#5
0
        /// <summary>
        /// Initializes and returns an <see cref="IConfigManager"/> with the specified configs registered with initial state.
        /// </summary>
        /// <param name="configFileWriter">An action to set up the config file before config manager initializes.</param>
        /// <param name="envVarWriter">An action to set up the environments before config manager initializes.</param>
        /// <param name="config">Definitions of configs to be registered to the config manager.</param>
        /// <returns>A config manager with initial state, ready to use.</returns>
        protected IConfigManager GetConfigManagerWithInitState(Action <MockDataStore, string> configFileWriter, Action <MockEnvironmentVariableProvider> envVarWriter, params ConfigDefinition[] config)
        {
            if (configFileWriter == null)
            {
                configFileWriter = _noopFileWriter;
            }

            if (envVarWriter == null)
            {
                envVarWriter = _noopEnvVarWriter;
            }

            string configPath    = Path.GetRandomFileName();
            var    mockDataStore = new MockDataStore();

            configFileWriter(mockDataStore, configPath);
            var environmentVariables = new MockEnvironmentVariableProvider();

            envVarWriter(environmentVariables);
            ConfigInitializer ci = new ConfigInitializer(new List <string>()
            {
                configPath
            })
            {
                DataStore = mockDataStore,
                EnvironmentVariableProvider = environmentVariables
            };
            IConfigManager icm = ci.GetConfigManager();

            foreach (var configDefinition in config)
            {
                icm.RegisterConfig(configDefinition);
            }
            icm.BuildConfig();
            return(icm);
        }