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(); }
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()); }
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 })); }
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(); }
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; } }); }
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); }
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); }