Exemple #1
0
        public void CSVFileDestinationStartByConfig2()
        {
            var TNAME = "UnitTest-" + MethodBase.GetCurrentMethod().Name;
            var FNAME = TNAME + ".csv.log";
            var xml   = @"<log>
                      <destination  type='NFX.Log.Destinations.CSVFileDestination, NFX'
                                    name='{0}' path='{1}' file-name='$($name).csv.log'
                      />
                   </log>".Args(TNAME, TEST_DIR);

            var fname = Path.Combine(TEST_DIR, FNAME);

            IOMiscUtils.EnsureFileEventuallyDeleted(fname);

            using (var svc = new LSVC())
                using (Scope.OnExit(() => File.Delete(fname)))
                {
                    svc.Configure(XMLConfiguration.CreateFromXML(xml).Root);

                    svc.Start();

                    svc.Write(new Message {
                        Text = "1 message"
                    });
                    svc.Write(new Message {
                        Text = "2 message"
                    });
                    svc.Write(new Message {
                        Text = "3 message"
                    });

                    svc.WaitForCompleteStop();

                    Aver.IsTrue(File.Exists(fname));
                    Aver.AreEqual(3, File.ReadAllLines(fname).Length);
                }
        }
        protected override void DoCompileTemplateSource(CompileUnit unit)
        {
            var text   = unit.TemplateSource.GetSourceContent().ToString().Trim();
            var icname = unit.TemplateSource.InferClassName();


            Configuration conf = new MemoryConfiguration();

            var confLineCount = 0;

            if (text.StartsWith(CONFIG_START))
            {
                var i = text.IndexOf(CONFIG_END);
                if (i < CONFIG_START.Length)
                {
                    throw new TemplateParseException(StringConsts.TEMPLATE_CS_COMPILER_CONFIG_CLOSE_TAG_ERROR);
                }

                var confText = text.Substring(CONFIG_START.Length, i - CONFIG_START.Length);

                confLineCount = confText.Count(c => c == '\n');

                //cut configuration out of template
                text = text.Substring(i + CONFIG_END.Length);

                try
                {
                    conf = XMLConfiguration.CreateFromXML("<config>" + confText + "</config>");
                }
                catch (Exception error)
                {
                    throw new TemplateParseException(StringConsts.TEMPLATE_CS_COMPILER_CONFIG_ERROR + error.Message, error);
                }
            }
            else  //20140103 DKh add Laconic support
            if (text.StartsWith(LACONFIG_START))
            {
                var i = text.IndexOf(LACONFIG_END);
                if (i < LACONFIG_START.Length)
                {
                    throw new TemplateParseException(StringConsts.TEMPLATE_CS_COMPILER_CONFIG_CLOSE_TAG_ERROR);
                }

                var confText = text.Substring(LACONFIG_START.Length, i - LACONFIG_START.Length);

                confLineCount = confText.Count(c => c == '\n');

                //cut configuration out of template
                text = text.Substring(i + LACONFIG_END.Length);

                try
                {
                    conf = LaconicConfiguration.CreateFromString("config{" + confText + "}");
                }
                catch (Exception error)
                {
                    throw new TemplateParseException(StringConsts.TEMPLATE_CS_COMPILER_CONFIG_ERROR + error.Message, error);
                }
            }



            var compilerNode = conf.Root[CONFIG_COMPILER_SECTION];

            //add referenced assemblies
            foreach (var anode in compilerNode.Children.Where(cn => cn.IsSameName(CONFIG_REF_ASSEMBLY_SECTION)))
            {
                this.ReferenceAssembly(anode.AttrByName(CONFIG_REF_ASSEMBLY_NAME_ATTR).Value);
            }

            //add usings
            var usings = new HashSet <string>();

            RegisterDefaultUsings(usings);

            foreach (var unode in compilerNode.Children.Where(cn => cn.IsSameName(CONFIG_USING_SECTION)))
            {
                usings.Add(unode.AttrByName(CONFIG_USING_NS_ATTR).Value);
            }

            //add attributes
            var attributes = new List <string>();

            foreach (var anode in compilerNode.Children.Where(cn => cn.IsSameName(CONFIG_ATTRIBUTE_SECTION)))
            {
                attributes.Add(anode.AttrByName(CONFIG_ATTRIBUTE_DECL_ATTR).Value);
            }

            unit.CompiledSource = new FSM()
            {
                Compiler          = this,
                Unit              = unit,
                InferredClassName = icname,
                ConfigNode        = conf.Root,
                Source            = text,
                Usings            = usings,
                Attributes        = attributes,
                LineNo            = confLineCount + 1
            }.Build().ToString();
        }
Exemple #3
0
        public void LogLevelsTest()
        {
            DateTime now  = App.LocalizedTime;
            DateTime time = new DateTime(now.Year, now.Month, now.Day, 3, 4, 5);

            string TNAME = "TestDest-" + MethodBase.GetCurrentMethod().Name;
            string FNAME = Path.Combine(TEST_DIR, "{0:yyyyMMdd}-{1}.log".Args(now, TNAME));

            File.Delete(FNAME);

            var xml = @"<log>
                            <destination type='NFX.Log.Destinations.DebugDestination, NFX'
                                name='{0}' path='{1}'
                                levels='DebugB-DebugC,InfoB-InfoD,Warning,Emergency'/>
                       </log>".Args(TNAME, TEST_DIR);

            //var log = new TestMemoryLog();
            //using (var app = new TestApplication { Log = log })
            using (var svc = new TSLS())
                using (Scope.OnExit(() => File.Delete(FNAME)))
                {
                    svc.Configure(XMLConfiguration.CreateFromXML(xml).Root);
                    svc.Start();

                    Assert.IsTrue(File.Exists(FNAME));

                    Array mts = Enum.GetValues(typeof(MessageType));

                    foreach (var mt in mts)
                    {
                        svc.Write(new Message {
                            Type = (MessageType)mt, Text = ((int)mt).ToString(), TimeStamp = now
                        });
                    }

                    svc.WaitForCompleteStop();

                    string[] lines = File.ReadAllLines(FNAME);

                    Assert.AreEqual(7, lines.Length);

                    lines.Select((s, i) =>
                    {
                        var sa = s.Split('|');
                        MessageType mt;

                        Assert.IsTrue(Enum.TryParse(sa[3], out mt));
                        Assert.AreEqual(
                            "{0:yyyyMMdd}-030405.000000|   {1}||Debug|{2}||0|".Args(now, Thread.CurrentThread.ManagedThreadId, (int)mt),
                            s);
                        return(0);
                    });
                }

            Assert.AreEqual(
                new Destination.LevelsList {
                new Tuple <MessageType, MessageType>(MessageType.DebugA, MessageType.DebugZ)
            },
                Destination.ParseLevels("DebugA-DebugZ"));

            Assert.AreEqual(
                new Destination.LevelsList {
                new Tuple <MessageType, MessageType>(MessageType.Debug, MessageType.Info)
            },
                Destination.ParseLevels("-Info"));

            Assert.AreEqual(
                new Destination.LevelsList {
                new Tuple <MessageType, MessageType>(MessageType.Info, MessageType.CatastrophicError)
            },
                Destination.ParseLevels("Info-"));

            Assert.AreEqual(
                new Destination.LevelsList {
                new Tuple <MessageType, MessageType>(MessageType.Trace, MessageType.TraceZ),
                new Tuple <MessageType, MessageType>(MessageType.Info, MessageType.CatastrophicError)
            },
                Destination.ParseLevels("Trace - TraceZ, Info-"));

            Assert.AreEqual(
                new Destination.LevelsList {
                new Tuple <MessageType, MessageType>(MessageType.Trace, MessageType.Trace),
                new Tuple <MessageType, MessageType>(MessageType.Info, MessageType.Info),
                new Tuple <MessageType, MessageType>(MessageType.Warning, MessageType.Warning)
            },
                Destination.ParseLevels("Trace | Info | Warning"));

            Assert.AreEqual(
                new Destination.LevelsList {
                new Tuple <MessageType, MessageType>(MessageType.Trace, MessageType.Trace),
                new Tuple <MessageType, MessageType>(MessageType.Info, MessageType.Info)
            },
                Destination.ParseLevels("Trace; Info"));
        }
Exemple #4
0
 public SchemaMap(ErlDataStore store, string xmlContent)
 {
     m_Store     = store;
     m_ErlSchema = XMLConfiguration.CreateFromXML(xmlContent);
 }