public void when_activity_has_exception_then_traces_data() { var xmlFile = Path.GetTempFileName(); var listener = new XmlWriterTraceListener(xmlFile); Tracer.Configuration.AddListener("Foo", listener); Tracer.Configuration.SetTracingLevel("Foo", SourceLevels.All); var tracer = Tracer.Get("Foo"); using (var outer = tracer.StartActivity("Outer")) { using (var inner = tracer.StartActivity("Inner")) { tracer.Info("Hey & > 23!"); } try { throw new ArgumentException(); } catch (Exception ex) { ex.Data.Add("Version", "1.0"); ex.Data.Add("Branch", "master"); ex.Data.Add("Commit", "1ab314b"); tracer.Error(ex, "Some error!"); } } Tracer.Configuration.RemoveListener("Foo", listener); listener.Flush(); listener.Dispose(); var xmlns = XNamespace.Get("http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord"); var commitFound = false; using (var reader = XmlReader.Create(xmlFile, new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment })) { Assert.Equal(XmlNodeType.Element, reader.MoveToContent()); do { var xml = reader.ReadOuterXml(); var doc = XDocument.Load(new StringReader(xml)); var record = doc.Descendants(xmlns + "TraceRecord").FirstOrDefault(); if (record != null && record.Attribute("Severity") != null && record.Attribute("Severity").Value == "Error") { commitFound = record.Element(xmlns + "DataItems")?.Element(xmlns + "Commit")?.Value == "1ab314b"; } } while (!commitFound && !reader.EOF); } Assert.True(commitFound, "Failed to find traced commit ID exception data."); //Process.Start ("notepad", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\SvcTraceViewer.exe", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\SvcTraceViewer.exe", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcTraceViewer.exe", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\SvcTraceViewer.exe", xml); }
public void when_replacing_manager_then_can_provide_mock() { var tracer = Mock.Of <ITracer>(); var manager = Mock.Of <ITracerManager>(x => x.Get("Foo") == tracer); using (Tracer.ReplaceManager(manager)) { Assert.Same(tracer, Tracer.Get("Foo")); } Assert.NotSame(tracer, Tracer.Get("Foo")); }
public void when_using_activity_then_starts_and_ends() { var listener = new Mock <TraceListener>(); Tracer.Configuration.AddListener("Foo", listener.Object); Tracer.Configuration.SetTracingLevel("Foo", SourceLevels.All); var originalId = Guid.NewGuid(); Trace.CorrelationManager.ActivityId = originalId; var tracer = Tracer.Get("Foo"); var activityId = Guid.Empty; using (var activity = tracer.StartActivity("Test")) { activityId = Trace.CorrelationManager.ActivityId; } Assert.NotEqual(Guid.Empty, activityId); // Activity equals: // Transfer -> Data(Start) -> [Event] -> Data(Stop) -> Transfer listener.Verify(x => x.TraceTransfer( It.IsAny <TraceEventCache> (), "Foo", It.IsAny <int> (), It.IsAny <string> (), activityId)); listener.Verify(x => x.TraceEvent( It.IsAny <TraceEventCache> (), "Foo", TraceEventType.Start, It.IsAny <int> (), It.IsAny <string>(), It.IsAny <object[]> ())); listener.Verify(x => x.TraceEvent( It.IsAny <TraceEventCache> (), "Foo", TraceEventType.Stop, It.IsAny <int> (), It.IsAny <string> (), It.IsAny <object[]> ())); listener.Verify(x => x.TraceTransfer( It.IsAny <TraceEventCache> (), "Foo", It.IsAny <int> (), It.IsAny <string> (), originalId)); }
public void when_activity_has_exception_then_traces_data() { var xml = Path.GetTempFileName(); var listener = new XmlWriterTraceListener(xml); Tracer.Configuration.AddListener("Foo", listener); Tracer.Configuration.SetTracingLevel("Foo", SourceLevels.All); var tracer = Tracer.Get("Foo"); using (var outer = tracer.StartActivity("Outer")) { using (var inner = tracer.StartActivity("Inner")) { tracer.Info("Hey & > 23!"); } try { throw new ArgumentException(); } catch (Exception ex) { ex.Data.Add("Version", "1.0"); ex.Data.Add("Branch", "master"); ex.Data.Add("Commit", "1ab314b"); tracer.Error(ex, "Some error!"); } } Tracer.Configuration.RemoveListener("Foo", listener); listener.Flush(); listener.Dispose(); using (var reader = XmlReader.Create(xml, new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment })) { Assert.Equal(XmlNodeType.Element, reader.MoveToContent()); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.NamespaceURI == "http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord") { Assert.True(reader.ReadToDescendant("Commit", "http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord")); Assert.Equal("1ab314b", reader.ReadElementContentAsString()); } } } //Process.Start ("notepad", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\SvcTraceViewer.exe", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\SvcTraceViewer.exe", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\SvcTraceViewer.exe", xml); //Process.Start (@"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\SvcTraceViewer.exe", xml); }
public void when_tracing_exception_without_xml_then_succeeds() { var inMemoryListener = new InMemoryTraceListener(); Tracer.Configuration.AddListener("Foo", inMemoryListener); Tracer.Configuration.SetTracingLevel("Foo", SourceLevels.All); var tracer = Tracer.Get("Foo"); tracer.Error(new ApplicationException("Foo Error"), "A Foo Exception occurred"); var trace = inMemoryListener.GetTrace(); Assert.False(string.IsNullOrEmpty(trace)); Assert.Contains("Foo Error", trace); Assert.Contains("A Foo Exception occurred", trace); }
public void when_no_initial_activity_then_does_not_transfer() { var listener = new Mock <TraceListener>(); Tracer.Configuration.AddListener("Foo", listener.Object); Tracer.Configuration.SetTracingLevel("Foo", SourceLevels.All); Trace.CorrelationManager.ActivityId = Guid.Empty; var tracer = Tracer.Get("Foo"); var activityId = Guid.Empty; using (var activity = tracer.StartActivity("Test")) { activityId = Trace.CorrelationManager.ActivityId; } Assert.NotEqual(Guid.Empty, activityId); // Activity without existing activity in progress equals: // Data(Start) -> [Event] -> Data(Stop) listener.Verify(x => x.TraceEvent( It.IsAny <TraceEventCache> (), "Foo", TraceEventType.Start, It.IsAny <int> (), It.IsAny <string> (), It.IsAny <object[]> ())); listener.Verify(x => x.TraceEvent( It.IsAny <TraceEventCache> (), "Foo", TraceEventType.Stop, It.IsAny <int> (), It.IsAny <string> (), It.IsAny <object[]> ())); listener.Verify(x => x.TraceTransfer( It.IsAny <TraceEventCache> (), "Foo", It.IsAny <int> (), It.IsAny <string> (), It.IsAny <Guid>()), Times.Never()); }
public void when_tracing_exception_without_args_and_message_with_brackets_then_success() { var inMemoryListener = new InMemoryTraceListener(); Tracer.Configuration.AddListener("Foo", inMemoryListener); Tracer.Configuration.SetTracingLevel("Foo", SourceLevels.All); var tracer = Tracer.Get("Foo"); var message = "A Foo Exception occurred {1223445}"; tracer.Error(new ApplicationException("Foo Error"), message); var trace = inMemoryListener.GetTrace(); Assert.False(string.IsNullOrEmpty(trace)); Assert.Contains("Foo Error", trace); Assert.Contains(message, trace); }
public void when_tracing_exception_with_xml_then_succeeds() { var xml = Path.GetTempFileName(); var inMemoryListener = new InMemoryTraceListener(); var xmlListener = new XmlWriterTraceListener(xml); var tracerName = MethodBase.GetCurrentMethod().Name; Tracer.Configuration.AddListener(tracerName, inMemoryListener); Tracer.Configuration.AddListener(tracerName, xmlListener); Tracer.Configuration.SetTracingLevel(tracerName, SourceLevels.All); var tracer = Tracer.Get(tracerName); tracer.Error(new ApplicationException("Foo Error"), "A Foo Exception occurred"); var trace = inMemoryListener.GetTrace(); Assert.False(string.IsNullOrEmpty(trace)); Assert.Contains("Foo Error", trace); Assert.Contains("A Foo Exception occurred", trace); }
public void when_tracing_without_args_then_success() { var xml = Path.GetTempFileName(); var inMemoryListener = new InMemoryTraceListener(); var xmlListener = new XmlWriterTraceListener(xml); var tracerName = MethodBase.GetCurrentMethod().Name; Tracer.Configuration.AddListener(tracerName, inMemoryListener); Tracer.Configuration.AddListener(tracerName, xmlListener); Tracer.Configuration.SetTracingLevel(tracerName, SourceLevels.All); var tracer = Tracer.Get(tracerName); var message = "Foo"; tracer.Info(message); var trace = inMemoryListener.GetTrace(); Assert.False(string.IsNullOrEmpty(trace)); Assert.Contains(message, trace); }