예제 #1
0
        public void BasicMerge()
        {
            var conf1 = Azos.Conf.XMLConfiguration.CreateFromXML(xml1);
            var conf2 = Azos.Conf.XMLConfiguration.CreateFromXML(xml2);
            var conf3 = Azos.Conf.XMLConfiguration.CreateFromXML(xml4);

            var conf = new Azos.Conf.MemoryConfiguration();

            conf.CreateFromMerge(conf1.Root, conf2.Root);

            var conf4 = new Azos.Conf.MemoryConfiguration();

            conf4.CreateFromMerge(conf.Root, conf3.Root);

            Aver.AreEqual("Sub Value 1", conf.Root["section-a"]["sub1"].Value);
            Aver.AreEqual("Sub Value 2 ammended", conf.Root["section-a"]["sub2"].Value);
            Aver.AreEqual("Sub Value 3", conf.Root["section-a"]["sub3"].Value);

            Aver.AreEqual("CSVFile", conf.Root["section-a"].Children.FirstOrDefault(n => n.IsSameName("destination") && n.AttrByName("name").Value == "A").AttrByName("type").Value);
            Aver.AreEqual("Clock", conf.Root["section-a"].Children.FirstOrDefault(n => n.IsSameName("destination") && n.AttrByName("name").Value == "B").AttrByName("type").Value);
            Aver.AreEqual("SMTPMail", conf1.Root["section-a"].Children.FirstOrDefault(n => n.IsSameName("destination") && n.AttrByName("name").Value == "B").AttrByName("type").Value);

            Aver.IsTrue(conf4.Root["section-b"].AttrCount == 1);
            Aver.IsTrue(!conf4.Root["section-a"].Exists);
        }
예제 #2
0
        public void MergeStop()
        {
            var conf1 = Azos.Conf.XMLConfiguration.CreateFromXML(xml1);
            var conf2 = Azos.Conf.XMLConfiguration.CreateFromXML(xml2);

            var conf = new Azos.Conf.MemoryConfiguration();

            conf.CreateFromMerge(conf1.Root, conf2.Root);


            Aver.AreEqual("This can not be overridden and no exception will be thrown", conf.Root["section-d"].Value);
            Aver.AreEqual(1, conf.Root["section-d"].Attributes.Count());
            Aver.IsTrue(OverrideSpec.Stop == NodeOverrideRules.Default.StringToOverrideSpec(conf.Root["section-d"].AttrByName("_override").Value));
        }
예제 #3
0
        public void ExpectOverrideException()
        {
            var conf1 = Azos.Conf.XMLConfiguration.CreateFromXML(xml1);
            var conf2 = Azos.Conf.XMLConfiguration.CreateFromXML(xml3);

            var conf = new Azos.Conf.MemoryConfiguration();

            try
            {
                conf.CreateFromMerge(conf1.Root, conf2.Root);
            }
            catch (Exception error)
            {
                Console.WriteLine("Expected and got: " + error.Message);
                throw error;
            }
        }
예제 #4
0
        public void Performance()
        {
            const int CNT = 10000;

            var conf1 = Azos.Conf.XMLConfiguration.CreateFromXML(largexml1);
            var conf2 = Azos.Conf.XMLConfiguration.CreateFromXML(largexml2);

            var clock = System.Diagnostics.Stopwatch.StartNew();

            for (var i = 0; i < CNT; i++)
            {
                var conf = new Azos.Conf.MemoryConfiguration();
                conf.CreateFromMerge(conf1.Root, conf2.Root);
            }
            clock.Stop();

            Console.WriteLine("Config merge performance. Merged {0} times in {1} ms", CNT, clock.ElapsedMilliseconds);
        }
예제 #5
0
        public void Performance()
        {
            const int CNT = 5000;

            var conf1 = Azos.Conf.XMLConfiguration.CreateFromXML(largexml1);
            var conf2 = Azos.Conf.XMLConfiguration.CreateFromXML(largexml2);

            var clock = System.Diagnostics.Stopwatch.StartNew();

            for (var i = 0; i < CNT; i++)
            {
                var conf = new Azos.Conf.MemoryConfiguration();
                conf.CreateFromMerge(conf1.Root, conf2.Root);
            }
            clock.Stop();

            $"Config merge performance. Merged {CNT} times in {clock.ElapsedMilliseconds} ms".See();

            Aver.IsTrue(clock.ElapsedMilliseconds < 7000);//completes on i7 < 1200ms for 5000 iterations
        }