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(); }
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")); }
public SchemaMap(ErlDataStore store, string xmlContent) { m_Store = store; m_ErlSchema = XMLConfiguration.CreateFromXML(xmlContent); }