示例#1
0
        public void TestSetGet()
        {
            ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();

            conf.DelimiterParsingDisabled = false;
            conf.AddProperty("key1", "xyz");
            Assert.AreEqual("xyz", conf.GetProperty("key1"));
            conf.SetProperty("key1", "newProp");
            Assert.AreEqual("newProp", conf.GetProperty("key1"));
            conf.SetProperty("listProperty", "0,1,2,3");
            Assert.IsTrue(conf.GetProperty("listProperty") is IList);
            IList props = (IList)conf.GetProperty("listProperty");

            for (int i = 0; i < 4; i++)
            {
                Assert.AreEqual(i, int.Parse((string)props[i]));
            }
            conf.AddProperty("listProperty", "4");
            conf.AddProperty("listProperty", new List <string> {
                "5", "6"
            });
            props = (IList)conf.GetProperty("listProperty");
            for (int i = 0; i < 7; i++)
            {
                Assert.AreEqual(i, int.Parse((string)props[i]));
            }
            DateTime date = DateTime.Now;

            conf.SetProperty("listProperty", date);
            Assert.AreEqual(date, conf.GetProperty("listProperty"));
        }
示例#2
0
        public void TestNoneDeletingPollingSource()
        {
            var config = new ConcurrentDictionaryConfiguration();

            config.AddProperty("prop1", "original");
            DummyPollingSource source = new DummyPollingSource(false);

            source.SetFull("");
            FixedDelayPollingScheduler     scheduler     = new FixedDelayPollingScheduler(0, 10, true);
            ConfigurationWithPollingSource pollingConfig = new ConfigurationWithPollingSource(config, source, scheduler);

            Thread.Sleep(200);
            Assert.AreEqual("original", pollingConfig.GetProperty("prop1"));
            source.SetFull("prop1=changed");
            Thread.Sleep(200);
            Assert.AreEqual("changed", pollingConfig.GetProperty("prop1"));
            source.SetFull("prop1=changedagain,prop2=new");
            Thread.Sleep(200);
            Assert.AreEqual("changedagain", pollingConfig.GetProperty("prop1"));
            Assert.AreEqual("new", pollingConfig.GetProperty("prop2"));
            source.SetFull("prop3=new");
            Thread.Sleep(200);
            Assert.AreEqual("changedagain", pollingConfig.GetProperty("prop1"));
            Assert.AreEqual("new", pollingConfig.GetProperty("prop2"));
            Assert.AreEqual("new", pollingConfig.GetProperty("prop3"));
        }
 public void TestInstall()
 {
     ConfigurationManager.GetConfigInstance().SetProperty("prop1", "abc");
     Assert.AreEqual("abc", ConfigurationManager.GetConfigInstance().GetProperty("prop1"));
     Assert.AreEqual("abc", m_Prop1.Value);
     ConcurrentDictionaryConfiguration newConfig = new ConcurrentDictionaryConfiguration();
     newConfig.SetProperty("prop1", "fromNewConfig");
     ConfigurationManager.Install(newConfig);
     Assert.AreEqual("fromNewConfig", ConfigurationManager.GetConfigInstance().GetProperty("prop1"));
     Assert.AreEqual("fromNewConfig", m_Prop1.Value);
     newConfig.SetProperty("prop1", "changed");
     Assert.AreEqual("changed", ConfigurationManager.GetConfigInstance().GetProperty("prop1"));
     Assert.AreEqual("changed", m_Prop1.Value);
     try
     {
         ConfigurationManager.Install(new ConcurrentDictionaryConfiguration());
         Assert.Fail("InvalidOperationException expected");
     }
     catch (InvalidOperationException e)
     {
     }
     try
     {
         DynamicPropertyFactory.InitWithConfigurationSource(new ConcurrentDictionaryConfiguration());
         Assert.Fail("InvalidOperationException expected");
     }
     catch (InvalidOperationException e)
     {
     }
 }
 public void TestConcurrency()
 {
     ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();
     conf.DelimiterParsingDisabled = false;
     var threadCount = 20;
     var operationPerThread = 50;
     var expectedValueCount = threadCount * operationPerThread * 2;
     CountdownEvent doneEvent = new CountdownEvent(20);
     for (int i = 0; i < doneEvent.InitialCount; i++)
     {
         int index = i;
         new Thread(() =>
                    {
                        for (var j = 0; j < operationPerThread; ++j)
                        {
                            conf.AddProperty("key", index);
                            conf.AddProperty("key", "stringValue");
                        }
                        doneEvent.Signal();
                        Thread.Sleep(50);
                    }).Start();
     }
     doneEvent.Wait();
     IList prop = (IList)conf.GetProperty("key");
     Assert.AreEqual(expectedValueCount, prop.Count);
 }
 public void TestSetGet()
 {
     ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();
     conf.DelimiterParsingDisabled = false;
     conf.AddProperty("key1", "xyz");
     Assert.AreEqual("xyz", conf.GetProperty("key1"));
     conf.SetProperty("key1", "newProp");
     Assert.AreEqual("newProp", conf.GetProperty("key1"));
     conf.SetProperty("listProperty", "0,1,2,3");
     Assert.IsTrue(conf.GetProperty("listProperty") is IList);
     IList props = (IList)conf.GetProperty("listProperty");
     for (int i = 0; i < 4; i++)
     {
         Assert.AreEqual(i, int.Parse((string)props[i]));
     }
     conf.AddProperty("listProperty", "4");
     conf.AddProperty("listProperty", new List<string> {"5", "6"});
     props = (IList)conf.GetProperty("listProperty");
     for (int i = 0; i < 7; i++)
     {
         Assert.AreEqual(i, int.Parse((string)props[i]));
     }
     DateTime date = DateTime.Now;
     conf.SetProperty("listProperty", date);
     Assert.AreEqual(date, conf.GetProperty("listProperty"));
 }
示例#6
0
 public void TestIncrementalPollingSource()
 {
     var config = new ConcurrentDictionaryConfiguration();
     DynamicPropertyFactory.InitWithConfigurationSource(config);
     DynamicStringProperty prop1 = new DynamicStringProperty("prop1", null);
     DynamicStringProperty prop2 = new DynamicStringProperty("prop2", null);
     config.AddProperty("prop1", "original");
     DummyPollingSource source = new DummyPollingSource(true);
     FixedDelayPollingScheduler scheduler = new FixedDelayPollingScheduler(0, 10, true);
     scheduler.IgnoreDeletesFromSource = false;
     // ConfigurationWithPollingSource pollingConfig = new ConfigurationWithPollingSource(config, source,scheduler);
     scheduler.StartPolling(source, config);
     Assert.AreEqual("original", config.GetProperty("prop1"));
     Assert.AreEqual("original", prop1.Value);
     source.SetAdded("prop2=new");
     Thread.Sleep(200);
     Assert.AreEqual("original", config.GetProperty("prop1"));
     Assert.AreEqual("new", config.GetProperty("prop2"));
     Assert.AreEqual("new", prop2.Value);
     source.SetDeleted("prop1=DoesNotMatter");
     source.SetChanged("prop2=changed");
     source.SetAdded("");
     Thread.Sleep(200);
     Assert.IsFalse(config.ContainsKey("prop1"));
     Assert.IsNull(prop1.Value);
     Assert.AreEqual("changed", config.GetProperty("prop2"));
     Assert.AreEqual("changed", prop2.Value);
 }
示例#7
0
        public void TestIncrementalPollingSource()
        {
            var config = new ConcurrentDictionaryConfiguration();

            DynamicPropertyFactory.InitWithConfigurationSource(config);
            DynamicStringProperty prop1 = new DynamicStringProperty("prop1", null);
            DynamicStringProperty prop2 = new DynamicStringProperty("prop2", null);

            config.AddProperty("prop1", "original");
            DummyPollingSource         source    = new DummyPollingSource(true);
            FixedDelayPollingScheduler scheduler = new FixedDelayPollingScheduler(0, 10, true);

            scheduler.IgnoreDeletesFromSource = false;
            // ConfigurationWithPollingSource pollingConfig = new ConfigurationWithPollingSource(config, source,scheduler);
            scheduler.StartPolling(source, config);
            Assert.AreEqual("original", config.GetProperty("prop1"));
            Assert.AreEqual("original", prop1.Value);
            source.SetAdded("prop2=new");
            Thread.Sleep(200);
            Assert.AreEqual("original", config.GetProperty("prop1"));
            Assert.AreEqual("new", config.GetProperty("prop2"));
            Assert.AreEqual("new", prop2.Value);
            source.SetDeleted("prop1=DoesNotMatter");
            source.SetChanged("prop2=changed");
            source.SetAdded("");
            Thread.Sleep(200);
            Assert.IsFalse(config.ContainsKey("prop1"));
            Assert.IsNull(prop1.Value);
            Assert.AreEqual("changed", config.GetProperty("prop2"));
            Assert.AreEqual("changed", prop2.Value);
        }
示例#8
0
        public void TestInstall()
        {
            ConfigurationManager.GetConfigInstance().SetProperty("prop1", "abc");
            Assert.AreEqual("abc", ConfigurationManager.GetConfigInstance().GetProperty("prop1"));
            Assert.AreEqual("abc", m_Prop1.Value);
            ConcurrentDictionaryConfiguration newConfig = new ConcurrentDictionaryConfiguration();

            newConfig.SetProperty("prop1", "fromNewConfig");
            ConfigurationManager.Install(newConfig);
            Assert.AreEqual("fromNewConfig", ConfigurationManager.GetConfigInstance().GetProperty("prop1"));
            Assert.AreEqual("fromNewConfig", m_Prop1.Value);
            newConfig.SetProperty("prop1", "changed");
            Assert.AreEqual("changed", ConfigurationManager.GetConfigInstance().GetProperty("prop1"));
            Assert.AreEqual("changed", m_Prop1.Value);
            try
            {
                ConfigurationManager.Install(new ConcurrentDictionaryConfiguration());
                Assert.Fail("InvalidOperationException expected");
            }
            catch (InvalidOperationException e)
            {
            }
            try
            {
                DynamicPropertyFactory.InitWithConfigurationSource(new ConcurrentDictionaryConfiguration());
                Assert.Fail("InvalidOperationException expected");
            }
            catch (InvalidOperationException e)
            {
            }
        }
示例#9
0
        public void TestConcurrency()
        {
            ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();

            conf.DelimiterParsingDisabled = false;
            var            threadCount        = 20;
            var            operationPerThread = 50;
            var            expectedValueCount = threadCount * operationPerThread * 2;
            CountdownEvent doneEvent          = new CountdownEvent(20);

            for (int i = 0; i < doneEvent.InitialCount; i++)
            {
                int index = i;
                new Thread(() =>
                {
                    for (var j = 0; j < operationPerThread; ++j)
                    {
                        conf.AddProperty("key", index);
                        conf.AddProperty("key", "stringValue");
                    }
                    doneEvent.Signal();
                    Thread.Sleep(50);
                }).Start();
            }
            doneEvent.Wait();
            IList prop = (IList)conf.GetProperty("key");

            Assert.AreEqual(expectedValueCount, prop.Count);
        }
示例#10
0
        public void TestPerformance()
        {
            var conf = new ConcurrentDictionaryConfiguration();

            conf.ConfigurationChanged += OnConfigurationChanged;
            TestConfigurationSet(conf);
            TestConfigurationAdd(conf);
            TestConfigurationGet(conf);
        }
示例#11
0
        public void TestContainerConfiguration()
        {
            ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration();

            Assert.AreEqual(0, config.ContainerConfigurationIndex);
            IConfiguration        originalContainerConfig = config.ContainerConfiguration;
            AbstractConfiguration config1 = new ConcurrentDictionaryConfiguration();

            config.AddConfiguration(config1, "base");
            Assert.AreEqual(1, config.ContainerConfigurationIndex);
            config.SetContainerConfigurationIndex(0);
            Assert.AreEqual(0, config.ContainerConfigurationIndex);
            Assert.AreEqual(2, config.NumberOfConfigurations);
            AbstractConfiguration config2 = new ConcurrentDictionaryConfiguration();

            config.AddConfigurationAtIndex(config2, "new", 1);
            AbstractConfiguration config3 = new ConcurrentDictionaryConfiguration();

            config.SetContainerConfiguration(config3, "new container", 2);
            Assert.AreEqual(config3, config.ContainerConfiguration);
            try
            {
                config.SetContainerConfigurationIndex(4);
                Assert.Fail("expect IndexOutOfRangeException");
            }
            catch (IndexOutOfRangeException e)
            {
            }
            try
            {
                config.AddConfigurationAtIndex(new ConcurrentDictionaryConfiguration(), "ignore", 5);
                Assert.Fail("expect IndexOutOfRangeException");
            }
            catch (IndexOutOfRangeException e)
            {
            }
            var list = config.ConfigurationList;

            Assert.AreEqual(4, list.Count);
            Assert.AreEqual(originalContainerConfig, list[0]);
            Assert.AreEqual(config2, list[1]);
            Assert.AreEqual(config3, list[2]);
            Assert.AreEqual(config1, list[3]);
            config.RemoveConfiguration(config1);
            Assert.IsFalse(config.GetConfigurationNameList().Contains("base"));
            Assert.IsFalse(config.ConfigurationList.Contains(config1));
            config.RemoveConfigurationAt(1);
            Assert.IsFalse(config.GetConfigurationNameList().Contains("new"));
            Assert.IsFalse(config.ConfigurationList.Contains(config2));
            AbstractConfiguration config4 = new ConcurrentDictionaryConfiguration();

            config.AddConfiguration(config4, "another container");
            config.RemoveConfiguration("another container");
            Assert.IsFalse(config.GetConfigurationNameList().Contains("another container"));
            Assert.IsFalse(config.ConfigurationList.Contains(config4));
        }
 public void TestContainerConfiguration()
 {
     ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration();
     Assert.AreEqual(0, config.ContainerConfigurationIndex);
     IConfiguration originalContainerConfig = config.ContainerConfiguration;
     AbstractConfiguration config1 = new ConcurrentDictionaryConfiguration();
     config.AddConfiguration(config1, "base");
     Assert.AreEqual(1, config.ContainerConfigurationIndex);
     config.SetContainerConfigurationIndex(0);
     Assert.AreEqual(0, config.ContainerConfigurationIndex);
     Assert.AreEqual(2, config.NumberOfConfigurations);
     AbstractConfiguration config2 = new ConcurrentDictionaryConfiguration();
     config.AddConfigurationAtIndex(config2, "new", 1);
     AbstractConfiguration config3 = new ConcurrentDictionaryConfiguration();
     config.SetContainerConfiguration(config3, "new container", 2);
     Assert.AreEqual(config3, config.ContainerConfiguration);
     try
     {
         config.SetContainerConfigurationIndex(4);
         Assert.Fail("expect IndexOutOfRangeException");
     }
     catch (IndexOutOfRangeException e)
     {
     }
     try
     {
         config.AddConfigurationAtIndex(new ConcurrentDictionaryConfiguration(), "ignore", 5);
         Assert.Fail("expect IndexOutOfRangeException");
     }
     catch (IndexOutOfRangeException e)
     {
     }
     var list = config.ConfigurationList;
     Assert.AreEqual(4, list.Count);
     Assert.AreEqual(originalContainerConfig, list[0]);
     Assert.AreEqual(config2, list[1]);
     Assert.AreEqual(config3, list[2]);
     Assert.AreEqual(config1, list[3]);
     config.RemoveConfiguration(config1);
     Assert.IsFalse(config.GetConfigurationNameList().Contains("base"));
     Assert.IsFalse(config.ConfigurationList.Contains(config1));
     config.RemoveConfigurationAt(1);
     Assert.IsFalse(config.GetConfigurationNameList().Contains("new"));
     Assert.IsFalse(config.ConfigurationList.Contains(config2));
     AbstractConfiguration config4 = new ConcurrentDictionaryConfiguration();
     config.AddConfiguration(config4, "another container");
     config.RemoveConfiguration("another container");
     Assert.IsFalse(config.GetConfigurationNameList().Contains("another container"));
     Assert.IsFalse(config.ConfigurationList.Contains(config4));
 }
示例#13
0
        public void TestProperties()
        {
            ConcurrentCompositeConfiguration config          = new ConcurrentCompositeConfiguration();
            DynamicPropertyFactory           factory         = DynamicPropertyFactory.InitWithConfigurationSource(config);
            DynamicStringProperty            prop1           = factory.GetStringProperty("prop1", null);
            DynamicStringProperty            prop2           = factory.GetStringProperty("prop2", null);
            DynamicStringProperty            prop3           = factory.GetStringProperty("prop3", null);
            DynamicStringProperty            prop4           = factory.GetStringProperty("prop4", null);
            AbstractConfiguration            containerConfig = new ConcurrentDictionaryConfiguration();

            containerConfig.AddProperty("prop1", "prop1");
            containerConfig.AddProperty("prop2", "prop2");
            AbstractConfiguration baseConfig = new ConcurrentDictionaryConfiguration();

            baseConfig.AddProperty("prop3", "prop3");
            baseConfig.AddProperty("prop1", "prop1FromBase");
            // Make container configuration the highest priority
            config.SetContainerConfiguration(containerConfig, "container configuration", 0);
            config.AddConfiguration(baseConfig, "base configuration");
            Assert.AreEqual("prop1", config.GetProperty("prop1"));
            Assert.AreEqual("prop1", prop1.Value);
            Assert.AreEqual("prop2", prop2.Value);
            Assert.AreEqual("prop3", prop3.Value);
            containerConfig.SetProperty("prop1", "newvalue");
            Assert.AreEqual("newvalue", prop1.Value);
            Assert.AreEqual("newvalue", config.GetProperty("prop1"));
            baseConfig.AddProperty("prop4", "prop4");
            Assert.AreEqual("prop4", config.GetProperty("prop4"));
            Assert.AreEqual("prop4", prop4.Value);
            baseConfig.SetProperty("prop1", "newvaluefrombase");
            Assert.AreEqual("newvalue", prop1.Value);
            containerConfig.ClearProperty("prop1");
            Assert.AreEqual("newvaluefrombase", config.GetProperty("prop1"));
            Assert.AreEqual("newvaluefrombase", prop1.Value);
            config.SetOverrideProperty("prop2", "overridden");
            config.SetProperty("prop2", "fromContainer");
            Assert.AreEqual("overridden", config.GetProperty("prop2"));
            Assert.AreEqual("overridden", prop2.Value);
            config.clearOverrideProperty("prop2");
            Assert.AreEqual("fromContainer", prop2.Value);
            Assert.AreEqual("fromContainer", config.GetProperty("prop2"));
            config.SetProperty("prop3", "fromContainer");
            Assert.AreEqual("fromContainer", prop3.Value);
            Assert.AreEqual("fromContainer", config.GetProperty("prop3"));
            config.ClearProperty("prop3");
            Assert.AreEqual("prop3", prop3.Value);
            Assert.AreEqual("prop3", config.GetProperty("prop3"));
        }
 public void TestDelimiterParsingDisabled()
 {
     ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();
     conf.DelimiterParsingDisabled = true;
     conf.SetProperty("listProperty", "0,1,2,3");
     Assert.AreEqual("0,1,2,3", conf.GetProperty("listProperty"));
     conf.AddProperty("listProperty2", "0,1,2,3");
     Assert.AreEqual("0,1,2,3", conf.GetProperty("listProperty2"));
     conf.DelimiterParsingDisabled = false;
     Assert.AreEqual("0,1,2,3", conf.GetProperty("listProperty"));
     conf.SetProperty("anotherList", "0,1,2,3");
     var props = (IList)conf.GetProperty("anotherList");
     for (int i = 0; i < 4; i++)
     {
         Assert.AreEqual(i, int.Parse((string)props[i]));
     }
 }
 public void TestProperties()
 {
     ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration();
     DynamicPropertyFactory factory = DynamicPropertyFactory.InitWithConfigurationSource(config);
     DynamicStringProperty prop1 = factory.GetStringProperty("prop1", null);
     DynamicStringProperty prop2 = factory.GetStringProperty("prop2", null);
     DynamicStringProperty prop3 = factory.GetStringProperty("prop3", null);
     DynamicStringProperty prop4 = factory.GetStringProperty("prop4", null);
     AbstractConfiguration containerConfig = new ConcurrentDictionaryConfiguration();
     containerConfig.AddProperty("prop1", "prop1");
     containerConfig.AddProperty("prop2", "prop2");
     AbstractConfiguration baseConfig = new ConcurrentDictionaryConfiguration();
     baseConfig.AddProperty("prop3", "prop3");
     baseConfig.AddProperty("prop1", "prop1FromBase");
     // Make container configuration the highest priority
     config.SetContainerConfiguration(containerConfig, "container configuration", 0);
     config.AddConfiguration(baseConfig, "base configuration");
     Assert.AreEqual("prop1", config.GetProperty("prop1"));
     Assert.AreEqual("prop1", prop1.Value);
     Assert.AreEqual("prop2", prop2.Value);
     Assert.AreEqual("prop3", prop3.Value);
     containerConfig.SetProperty("prop1", "newvalue");
     Assert.AreEqual("newvalue", prop1.Value);
     Assert.AreEqual("newvalue", config.GetProperty("prop1"));
     baseConfig.AddProperty("prop4", "prop4");
     Assert.AreEqual("prop4", config.GetProperty("prop4"));
     Assert.AreEqual("prop4", prop4.Value);
     baseConfig.SetProperty("prop1", "newvaluefrombase");
     Assert.AreEqual("newvalue", prop1.Value);
     containerConfig.ClearProperty("prop1");
     Assert.AreEqual("newvaluefrombase", config.GetProperty("prop1"));
     Assert.AreEqual("newvaluefrombase", prop1.Value);
     config.SetOverrideProperty("prop2", "overridden");
     config.SetProperty("prop2", "fromContainer");
     Assert.AreEqual("overridden", config.GetProperty("prop2"));
     Assert.AreEqual("overridden", prop2.Value);
     config.clearOverrideProperty("prop2");
     Assert.AreEqual("fromContainer", prop2.Value);
     Assert.AreEqual("fromContainer", config.GetProperty("prop2"));
     config.SetProperty("prop3", "fromContainer");
     Assert.AreEqual("fromContainer", prop3.Value);
     Assert.AreEqual("fromContainer", config.GetProperty("prop3"));
     config.ClearProperty("prop3");
     Assert.AreEqual("prop3", prop3.Value);
     Assert.AreEqual("prop3", config.GetProperty("prop3"));
 }
示例#16
0
        public void TestDelimiterParsingDisabled()
        {
            ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();

            conf.DelimiterParsingDisabled = true;
            conf.SetProperty("listProperty", "0,1,2,3");
            Assert.AreEqual("0,1,2,3", conf.GetProperty("listProperty"));
            conf.AddProperty("listProperty2", "0,1,2,3");
            Assert.AreEqual("0,1,2,3", conf.GetProperty("listProperty2"));
            conf.DelimiterParsingDisabled = false;
            Assert.AreEqual("0,1,2,3", conf.GetProperty("listProperty"));
            conf.SetProperty("anotherList", "0,1,2,3");
            var props = (IList)conf.GetProperty("anotherList");

            for (int i = 0; i < 4; i++)
            {
                Assert.AreEqual(i, int.Parse((string)props[i]));
            }
        }
示例#17
0
        public void TestNullValue()
        {
            ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();

            try
            {
                conf.SetProperty("xyz", null);
                Assert.Fail("ArgumentNullException is expected.");
            }
            catch (ArgumentNullException e)
            {
            }
            try
            {
                conf.AddProperty("xyz", null);
                Assert.Fail("ArgumentNullException is expected.");
            }
            catch (ArgumentNullException e)
            {
            }
        }
示例#18
0
        public void TestDefaultConfig()
        {
            Environment.SetEnvironmentVariable("xyz", "fromSystem");
            DynamicStringProperty prop = new DynamicStringProperty("xyz", null);

            Assert.IsNotNull(DynamicPropertyFactory.BackingConfigurationSource);
            Assert.AreEqual("fromSystem", prop.Value);

            object lastModified = null;
            EventHandler <ConfigurationEventArgs> handler = (sender, args) =>
            {
                if (!args.BeforeOperation)
                {
                    lastModified = args.Value;
                }
            };

            ConfigurationManager.GetConfigInstance().ConfigurationChanged += handler;

            try
            {
                // Because environment variables default to higher priority than application settings, this set will no-op
                ConfigurationManager.GetConfigInstance().SetProperty("xyz", "override");
                Assert.AreEqual("fromSystem", prop.Value);
                Assert.AreEqual(null, lastModified);

                var newConfig = new ConcurrentDictionaryConfiguration();
                newConfig.SetProperty("xyz", "fromNewConfig");
                ConfigurationManager.Install(newConfig);
                Assert.AreEqual("fromNewConfig", prop.Value);
                ConfigurationManager.GetConfigInstance().SetProperty("xyz", "new");
                Assert.AreEqual("new", lastModified);
                Assert.AreEqual("new", prop.Value);
                Assert.AreEqual(3, newConfig.ConfigurationChangedEventHandlers.Length);
            }
            catch (Exception ex)
            {
                ConfigurationManager.GetConfigInstance().ConfigurationChanged -= handler;
            }
        }
        public void TestDefaultConfig()
        {
            Environment.SetEnvironmentVariable("xyz", "fromSystem");
            DynamicStringProperty prop = new DynamicStringProperty("xyz", null);
            Assert.IsNotNull(DynamicPropertyFactory.BackingConfigurationSource);
            Assert.AreEqual("fromSystem", prop.Value);

            object lastModified = null;
            EventHandler<ConfigurationEventArgs> handler = (sender, args) =>
                                                           {
                                                               if (!args.BeforeOperation)
                                                               {
                                                                   lastModified = args.Value;
                                                               }
                                                           };
            ConfigurationManager.GetConfigInstance().ConfigurationChanged += handler;

            try
            {
                // Because environment variables default to higher priority than application settings, this set will no-op
                ConfigurationManager.GetConfigInstance().SetProperty("xyz", "override");
                Assert.AreEqual("fromSystem", prop.Value);
                Assert.AreEqual(null, lastModified);

                var newConfig = new ConcurrentDictionaryConfiguration();
                newConfig.SetProperty("xyz", "fromNewConfig");
                ConfigurationManager.Install(newConfig);
                Assert.AreEqual("fromNewConfig", prop.Value);
                ConfigurationManager.GetConfigInstance().SetProperty("xyz", "new");
                Assert.AreEqual("new", lastModified);
                Assert.AreEqual("new", prop.Value);
                Assert.AreEqual(3, newConfig.ConfigurationChangedEventHandlers.Length);
            }
            catch (Exception ex)
            {
                ConfigurationManager.GetConfigInstance().ConfigurationChanged -= handler;
            }
        }
示例#20
0
 public void TestNoneDeletingPollingSource()
 {
     var config = new ConcurrentDictionaryConfiguration();
     config.AddProperty("prop1", "original");
     DummyPollingSource source = new DummyPollingSource(false);
     source.SetFull("");
     FixedDelayPollingScheduler scheduler = new FixedDelayPollingScheduler(0, 10, true);
     ConfigurationWithPollingSource pollingConfig = new ConfigurationWithPollingSource(config, source, scheduler);
     Thread.Sleep(200);
     Assert.AreEqual("original", pollingConfig.GetProperty("prop1"));
     source.SetFull("prop1=changed");
     Thread.Sleep(200);
     Assert.AreEqual("changed", pollingConfig.GetProperty("prop1"));
     source.SetFull("prop1=changedagain,prop2=new");
     Thread.Sleep(200);
     Assert.AreEqual("changedagain", pollingConfig.GetProperty("prop1"));
     Assert.AreEqual("new", pollingConfig.GetProperty("prop2"));
     source.SetFull("prop3=new");
     Thread.Sleep(200);
     Assert.AreEqual("changedagain", pollingConfig.GetProperty("prop1"));
     Assert.AreEqual("new", pollingConfig.GetProperty("prop2"));
     Assert.AreEqual("new", pollingConfig.GetProperty("prop3"));
 }
示例#21
0
        public void TestListeners()
        {
            ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();

            object eventSender = null;
            ConfigurationEventArgs eventArgs = null;

            conf.ConfigurationChanged += (sender, args) =>
            {
                eventSender = sender;
                eventArgs   = args;
            };

            conf.AddProperty("key", "1");
            Assert.AreEqual(1, conf.GetInt("key"));
            Assert.AreEqual("key", eventArgs.Name);
            Assert.AreEqual("1", eventArgs.Value);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.AddProperty, eventArgs.Type);
            conf.SetProperty("key", "2");

            Assert.AreEqual("key", eventArgs.Name);
            Assert.AreEqual("2", eventArgs.Value);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.SetProperty, eventArgs.Type);

            conf.ClearProperty("key");
            Assert.AreEqual("key", eventArgs.Name);
            Assert.IsNull(eventArgs.Value);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.ClearProperty, eventArgs.Type);

            conf.Clear();
            Assert.IsEmpty(conf.Keys);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.Clear, eventArgs.Type);
        }
 public void TestPerformance()
 {
     var conf = new ConcurrentDictionaryConfiguration();
     conf.ConfigurationChanged += OnConfigurationChanged;
     TestConfigurationSet(conf);
     TestConfigurationAdd(conf);
     TestConfigurationGet(conf);
 }
 public void TestNullValue()
 {
     ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();
     try
     {
         conf.SetProperty("xyz", null);
         Assert.Fail("ArgumentNullException is expected.");
     }
     catch (ArgumentNullException e)
     {
     }
     try
     {
         conf.AddProperty("xyz", null);
         Assert.Fail("ArgumentNullException is expected.");
     }
     catch (ArgumentNullException e)
     {
     }
 }
        public void TestListeners()
        {
            ConcurrentDictionaryConfiguration conf = new ConcurrentDictionaryConfiguration();

            object eventSender = null;
            ConfigurationEventArgs eventArgs = null;
            conf.ConfigurationChanged += (sender, args) =>
                                       {
                                           eventSender = sender;
                                           eventArgs = args;
                                       };

            conf.AddProperty("key", "1");
            Assert.AreEqual(1, conf.GetInt("key"));
            Assert.AreEqual("key", eventArgs.Name);
            Assert.AreEqual("1", eventArgs.Value);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.AddProperty, eventArgs.Type);
            conf.SetProperty("key", "2");

            Assert.AreEqual("key", eventArgs.Name);
            Assert.AreEqual("2", eventArgs.Value);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.SetProperty, eventArgs.Type);

            conf.ClearProperty("key");
            Assert.AreEqual("key", eventArgs.Name);
            Assert.IsNull(eventArgs.Value);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.ClearProperty, eventArgs.Type);

            conf.Clear();
            Assert.IsEmpty(conf.Keys);
            Assert.AreSame(conf, eventSender);
            Assert.AreEqual(ConfigurationEventType.Clear, eventArgs.Type);
        }