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"));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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());
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
        }
Пример #9
0
        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);
        }