Exemplo n.º 1
0
        public void updateSetting(TestDataCenterSetting setting)
        {
            if (setting == null)
            {
                throw new ArgumentNullException("setting is null");
            }

            if (setting.getKey() == null)
            {
                throw new ArgumentNullException("setting.key is null");
            }

            _settings.TryGetValue(setting, out TestDataCenterSetting oldValue);
            if (oldValue != null)
            {
                if (object.Equals(oldValue.getValue(), setting.getValue()))
                {
                    return;
                }
            }

            setting            = (TestDataCenterSetting)setting.Clone();
            _settings[setting] = setting;

            RaiseChangeEvent();
        }
Exemplo n.º 2
0
        protected override object GetPropertyValue(object key, ICollection <IPropertyLabel> labels)
        {
            if (key.GetType() != typeof(string))
            {
                return(null);
            }

            TestDataCenterSetting setting = new TestDataCenterSetting((string)key, null, null, null);

            if (labels != null)
            {
                labels.ToList().ForEach(l =>
                {
                    if (l == null)
                    {
                        return;
                    }

                    if (object.Equals(l.Key, TestDataCenterSetting.DC_KEY))
                    {
                        setting.setDc((string)l.Value);
                    }

                    if (object.Equals(l.Key, TestDataCenterSetting.APP_KEY))
                    {
                        setting.setApp((string)l.Value);
                    }
                });
            }

            _settings.TryGetValue(setting, out TestDataCenterSetting labeledSetting);
            return(labeledSetting == null ? null : labeledSetting.getValue());
        }
Exemplo n.º 3
0
        protected virtual TestLabeledConfigurationSource CreateLabeledSource(ConfigurationSourceConfig config)
        {
            TestDataCenterSetting Setting  = new TestDataCenterSetting("labeled-key-1", "v-0", null, null);
            TestDataCenterSetting Setting1 = new TestDataCenterSetting("labeled-key-1", "v-1", "sh-1", "app-1");
            TestDataCenterSetting Setting2 = new TestDataCenterSetting("labeled-key-1", "v-2", "sh-2", "app-1");
            TestDataCenterSetting Setting3 = new TestDataCenterSetting("labeled-key-1", "v-3", "sh-1", "app-2");

            return(new TestLabeledConfigurationSource(config, new List <TestDataCenterSetting>()
            {
                Setting, Setting1, Setting2, Setting3
            }));
        }
Exemplo n.º 4
0
        public void removeSetting(TestDataCenterSetting setting)
        {
            if (setting == null)
            {
                throw new ArgumentNullException("setting is null");
            }

            if (setting.getKey() == null)
            {
                throw new ArgumentNullException("setting.key is null");
            }

            _concurrentSettings.TryRemove(setting, out TestDataCenterSetting oldValue);
            if (oldValue == null)
            {
                return;
            }

            RaiseChangeEvent();
        }
Exemplo n.º 5
0
        public TestLabeledConfigurationSource(ConfigurationSourceConfig config,
                                              ICollection <TestDataCenterSetting> dataCenterSettings)
            : base(config)
        {
            if (dataCenterSettings == null)
            {
                throw new ArgumentNullException("dataCenterSettings is null");
            }

            Init();

            dataCenterSettings.ToList().ForEach(s =>
            {
                if (s != null)
                {
                    TestDataCenterSetting copy = (TestDataCenterSetting)s.Clone();
                    _settings[copy]            = copy;
                }
            });
        }
Exemplo n.º 6
0
        public override bool Equals(object obj)
        {
            if (object.ReferenceEquals(this, obj))
            {
                return(true);
            }

            if (obj == null)
            {
                return(false);
            }

            if (GetType() != obj.GetType())
            {
                return(false);
            }

            TestDataCenterSetting setting = (TestDataCenterSetting)obj;

            if (!object.Equals(key, setting.key))
            {
                return(false);
            }

            if (!object.Equals(dc, setting.dc))
            {
                return(false);
            }

            if (!object.Equals(app, setting.app))
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 7
0
        public virtual void TestGetLabeledProperty()
        {
            ConfigurationSourceConfig      config        = ConfigurationSources.NewConfig("labeled-source");
            TestLabeledConfigurationSource labeledSource = CreateLabeledSource(config);

            config = ConfigurationSources.NewConfig("dynamic-labeled-source");
            TestDynamicLabeledConfigurationSource dynamicLabeledSource = CreateDynamicLabeledSource(config);
            ILabeledConfigurationManager          manager = CreateLabeledManager(
                new Dictionary <int, IConfigurationSource>()
            {
                { 1, labeledSource }, { 2, dynamicLabeledSource }
            });

            List <IPropertyLabel> labels = new List <IPropertyLabel>();

            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.DC_KEY, "sh-1"));
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.APP_KEY, "app-1"));
            PropertyLabels      propertyLabels = LabeledConfigurationProperties.NewLabels(labels);
            LabeledKey <string> key            = LabeledConfigurationProperties.NewKeyBuilder <string>().SetKey("labeled-key-1")
                                                 .SetPropertyLabels(propertyLabels).Build();
            PropertyConfig <LabeledKey <string>, string> propertyConfig = ConfigurationProperties
                                                                          .NewConfigBuilder <LabeledKey <string>, string>().SetKey(key).SetDefaultValue("default-value-1").Build();
            IProperty <LabeledKey <string>, string> property = manager.GetProperty(propertyConfig);

            Console.WriteLine(property);
            Assert.Equal("v-1-2", property.Value);

            labels = new List <IPropertyLabel>();
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.DC_KEY, "sh-1-not-exist"));
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.APP_KEY, "app-1"));
            propertyLabels = LabeledConfigurationProperties.NewLabels(labels);
            key            = LabeledConfigurationProperties.NewKeyBuilder <String>().SetKey("labeled-key-1")
                             .SetPropertyLabels(propertyLabels).Build();
            propertyConfig = ConfigurationProperties.NewConfigBuilder <LabeledKey <string>, String>().SetKey(key)
                             .SetDefaultValue("default-value-1").Build();
            property = manager.GetProperty(propertyConfig);
            Console.WriteLine(property);
            Assert.Equal("default-value-1", property.Value);

            propertyLabels = LabeledConfigurationProperties.NewLabels(
                LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.DC_KEY, "sh-1"),
                LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.APP_KEY, "app-1"));
            labels = new List <IPropertyLabel>();
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.DC_KEY, "sh-1-not-exist"));
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.APP_KEY, "app-1"));
            propertyLabels = LabeledConfigurationProperties.NewLabels(labels, propertyLabels);
            key            = LabeledConfigurationProperties.NewKeyBuilder <string>().SetKey("labeled-key-1")
                             .SetPropertyLabels(propertyLabels).Build();
            propertyConfig = ConfigurationProperties.NewConfigBuilder <LabeledKey <string>, string>().SetKey(key)
                             .SetDefaultValue("default-value-1").Build();
            property = manager.GetProperty(propertyConfig);
            Console.WriteLine(property);
            Assert.Equal("v-1-2", property.Value);

            TestDataCenterSetting Setting = new TestDataCenterSetting("labeled-key-1", "v-4-2", "sh-1-not-exist", "app-1");

            dynamicLabeledSource.updateSetting(Setting);
            Thread.Sleep(10);
            Console.WriteLine(property);
            Assert.Equal("v-4-2", property.Value);

            dynamicLabeledSource.removeSetting(Setting);
            Thread.Sleep(10);
            Console.WriteLine(property);
            Assert.Equal("v-1-2", property.Value);

            labels = new List <IPropertyLabel>();
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.DC_KEY, "sh-1-not-exist"));
            labels.Add(LabeledConfigurationProperties.NewLabel(TestDataCenterSetting.APP_KEY, "app-1"));
            propertyLabels = LabeledConfigurationProperties.NewLabels(labels, PropertyLabels.Empty);
            key            = LabeledConfigurationProperties.NewKeyBuilder <string>().SetKey("labeled-key-1")
                             .SetPropertyLabels(propertyLabels).Build();
            propertyConfig = ConfigurationProperties.NewConfigBuilder <LabeledKey <string>, string>().SetKey(key)
                             .SetDefaultValue("default-value-1").Build();
            property = manager.GetProperty(propertyConfig);
            Console.WriteLine(property);
            Assert.Equal("v-0-2", property.Value);
        }