public void ActivityNotClosed_Duration_FromThreadClock() { //-- Arrange var log = CreateThreadLog(); ActivityLogNode activity; log.AppendNode(new FormattedLogNode(LogLevel.Info, "One")); log.AppendNode(activity = new FormattedActivityLogNode("Two")); //-- Act Clock.ElapsedMilliseconds = 123; var rootDuration1 = log.RootActivity.MillisecondsDuration; var childDuration1 = activity.MillisecondsDuration; Clock.ElapsedMilliseconds = 456; var rootDuration2 = log.RootActivity.MillisecondsDuration; var childDuration2 = activity.MillisecondsDuration; //-- Assert Assert.That(rootDuration1, Is.EqualTo(123)); Assert.That(childDuration1, Is.EqualTo(123)); Assert.That(rootDuration2, Is.EqualTo(456)); Assert.That(childDuration2, Is.EqualTo(456)); }
public void SetUp() { Framework.NodeConfiguration.ApplicationName = "A1"; Framework.NodeConfiguration.NodeName = "N1"; Framework.NodeConfiguration.InstanceId = "I1"; Framework.NodeConfiguration.EnvironmentName = "E1"; Framework.PresetUtcNow = new DateTime(2015, 1, 30, 15, 22, 54, 345); _rootActivity = new FormattedActivityLogNode("root"); Framework.PresetGuids.Enqueue(new Guid(TestLogId)); _threadLog = new ThreadLog(Framework, Clock, Registry, Anchor, ThreadTaskType.Unspecified, _rootActivity); }
//----------------------------------------------------------------------------------------------------------------------------------------------------- public void AppendLogNode(LogNode node) { var currentLog = _anchor.CurrentThreadLog; if ( currentLog != null ) { currentLog.AppendNode(node); } else { using ( var unknownThreadActivity = new FormattedActivityLogNode(UnknownThreadMessageId, "???") ) { StartThreadLogNoCheck(ThreadTaskType.Unspecified, unknownThreadActivity); _anchor.CurrentThreadLog.AppendNode(node); } } _plainLog.LogNode(node); //if ( node.Level >= LogLevel.Warning ) //{ // PlainLog.LogNode(node); //} }
public void GenerateExampleThreadLogs(ThreadTaskType taskType, string rootActivityText, bool includeWarning, bool includeError) { var realThreadRegistry = new ThreadRegistry(@"D:\ThreadLogExamples"); var rootActivity = new FormattedActivityLogNode(rootActivityText); var log = new ThreadLog(Framework, _clock, realThreadRegistry, taskType, rootActivity); log.AppendNode(new FormattedLogNode(LogLevel.Info, "One")); log.AppendNode(new FormattedActivityLogNode("Two")); log.AppendNode(new FormattedLogNode(LogLevel.Verbose, "Two-1")); log.AppendNode(new FormattedLogNode(LogLevel.Verbose, "Two-2")); log.AppendNode(new FormattedLogNode(LogLevel.Info, "Three")); log.AppendNode(new FormattedActivityLogNode("Four")); if ( includeError ) { try { throw new Exception("This is a generated exception"); } catch ( Exception e ) { log.AppendNode(new FormattedLogNode(LogLevel.Error, "Five", exception: e, fullDetailsText: e.ToString())); } } log.CurrentActivity.Close(); if ( includeWarning ) { log.AppendNode(new FormattedLogNode(LogLevel.Warning, "Six")); } log.AppendNode(new FormattedLogNode(LogLevel.Debug, "Two-3")); log.AppendNode(new FormattedLogNode(LogLevel.Debug, "Two-4")); Thread.Sleep(5000); }
//----------------------------------------------------------------------------------------------------------------------------------------------------- private ThreadLog CreateThreadLog(string rootActivityText = "Root", ThreadTaskType taskType = ThreadTaskType.Unspecified) { var rootActivity = new FormattedActivityLogNode(rootActivityText); return new ThreadLog(Framework, Clock, Registry, Anchor, ThreadTaskType.Unspecified, rootActivity); }
public void NewInstance_CurrentActivity_IsRootActivity() { //-- Arrange var rootActivity = new FormattedActivityLogNode("Root"); //-- Act var log = new ThreadLog( Framework, Clock, Registry, Anchor, ThreadTaskType.Unspecified, rootActivity); //-- Assert Assert.That(log.RootActivity, Is.SameAs(rootActivity)); Assert.That(log.CurrentActivity, Is.SameAs(rootActivity)); }
public void CloseWarningActivity_BubbleUpToParent() { //-- Arrange var log = CreateThreadLog(); ActivityLogNode activityTwo; ActivityLogNode activityFour; //-- Act log.AppendNode(new FormattedLogNode(LogLevel.Info, "One")); log.AppendNode(activityTwo = new FormattedActivityLogNode("Two")); log.AppendNode(new FormattedLogNode(LogLevel.Info, "Three")); log.AppendNode(activityFour = new FormattedActivityLogNode("Four")); log.AppendNode(new FormattedLogNode(LogLevel.Warning, "Five")); activityFour.Close(); var afterFourClosed = ToTestString(log.RootActivity); activityTwo.Close(); var afterTwoClosed = ToTestString(log.RootActivity); //-- Assert Assert.That(afterFourClosed, Is.EqualTo("AI:Root{LI:One;AW:Two{LI:Three;AW:Four{LW:Five}}}")); Assert.That(afterTwoClosed, Is.EqualTo("AW:Root{LI:One;AW:Two{LI:Three;AW:Four{LW:Five}}}")); }
public void CloseFailedActivity_BubbleFailureToParent() { //-- Arrange var log = CreateThreadLog(); ActivityLogNode activityFour; //-- Act log.AppendNode(new FormattedLogNode(LogLevel.Info, "One")); log.AppendNode(new FormattedActivityLogNode("Two")); log.AppendNode(new FormattedLogNode(LogLevel.Info, "Three")); log.AppendNode(activityFour = new FormattedActivityLogNode("Four")); log.AppendNode(new FormattedLogNode(LogLevel.Error, "Five", exception: new Exception())); activityFour.Close(); //-- Assert Assert.That(ToTestString(log.RootActivity), Is.EqualTo("AI:Root{LI:One;AEX:Two{LI:Three;AEX:Four{LEX:Five}}}")); }
public void CloseActivityNode_ParentBecomesCurrentActivity() { //-- Arrange var log = CreateThreadLog(); ActivityLogNode activity; //-- Act log.AppendNode(new FormattedLogNode(LogLevel.Info, "One")); log.AppendNode(activity = new FormattedActivityLogNode("Two")); log.AppendNode(new FormattedLogNode(LogLevel.Info, "Three")); activity.Close(); log.AppendNode(new FormattedLogNode(LogLevel.Info, "Four")); //-- Assert Assert.That(ToTestString(log.RootActivity), Is.EqualTo("AI:Root{LI:One;AI:Two{LI:Three};LI:Four}")); Assert.That(log.CurrentActivity, Is.SameAs(log.RootActivity)); }
public void AppendErrorNodeWithException_ClearFailure_FailureBubbledUpAsWarning() { //-- Arrange var log = CreateThreadLog(); ActivityLogNode activityFour; //-- Act log.AppendNode(new FormattedLogNode(LogLevel.Info, "One")); log.AppendNode(new FormattedActivityLogNode("Two")); log.AppendNode(new FormattedLogNode(LogLevel.Info, "Three")); log.AppendNode(activityFour = new FormattedActivityLogNode("Four")); log.AppendNode(new FormattedLogNode(LogLevel.Error, "Five", exception: new Exception()), clearFailure: true); activityFour.Close(); //-- Assert Assert.That(ToTestString(log.RootActivity), Is.EqualTo("AI:Root{LI:One;AW:Two{LI:Three;AW:Four{LEX:Five}}}")); }