public void ShouldTrace_TwoThreads_each_with_SingleMethod() { TwoThreadsCallOneMethod(); TracerResult tracerResult = tracer.GetTraceResult(); ThreadTracerResult[] threadTracersResults = new ThreadTracerResult[tracer.GetTraceResult().dThreadTracerResults.Count]; tracer.GetTraceResult().dThreadTracerResults.Values.CopyTo(threadTracersResults, 0); Assert.AreEqual(2, threadTracersResults.Length); // should be two ThreadTracerResult Assert.AreEqual(1, threadTracersResults[0].lFirstLvlMethodTracersResult.Count); // should be only one method on the first lvl in the first ThreadTracerResult Assert.AreEqual(1, threadTracersResults[1].lFirstLvlMethodTracersResult.Count); // should be only one method on the first lvl in the second ThreadTracerResult // check that the first ThreadTraceResult has correct method on the first lvl string methodNameFromTraceResult1 = threadTracersResults[0].lFirstLvlMethodTracersResult[0].MethodName; string classNameFromTraceResult1 = threadTracersResults[0].lFirstLvlMethodTracersResult[0].ClassName; Assert.AreEqual("Method1", methodNameFromTraceResult1); Assert.AreEqual("TracerTests", classNameFromTraceResult1); // check that the second ThreadTraceResult has correct method on the first lvl string methodNameFromTraceResult2 = threadTracersResults[1].lFirstLvlMethodTracersResult[0].MethodName; string classNameFromTraceResult2 = threadTracersResults[1].lFirstLvlMethodTracersResult[0].ClassName; Assert.AreEqual("Method1", methodNameFromTraceResult1); Assert.AreEqual("TracerTests", classNameFromTraceResult1); }
public void ShouldTrace_SingleThread_TwoMethodsOnTheFirstLvl() { Method1(); Method2(); TracerResult tracerResult = tracer.GetTraceResult(); ThreadTracerResult[] threadTracersResults = new ThreadTracerResult[tracer.GetTraceResult().dThreadTracerResults.Count]; tracer.GetTraceResult().dThreadTracerResults.Values.CopyTo(threadTracersResults, 0); Assert.AreEqual(1, threadTracersResults.Length); // should be only one ThreadTracerResult Assert.AreEqual(2, threadTracersResults[0].lFirstLvlMethodTracersResult.Count); // should be two methods on the first lvl // check that the first method on the first lvl is correct string methodNameFromTraceResult1 = threadTracersResults[0].lFirstLvlMethodTracersResult[0].MethodName; string classNameFromTraceResult1 = threadTracersResults[0].lFirstLvlMethodTracersResult[0].ClassName; Assert.AreEqual("Method1", methodNameFromTraceResult1); Assert.AreEqual("TracerTests", classNameFromTraceResult1); // check that the second method on the first lvl is correct string methodNameFromTraceResult2 = threadTracersResults[0].lFirstLvlMethodTracersResult[1].MethodName; string classNameFromTraceResult2 = threadTracersResults[0].lFirstLvlMethodTracersResult[1].ClassName; Assert.AreEqual("Method2", methodNameFromTraceResult2); Assert.AreEqual("TracerTests", classNameFromTraceResult2); }
public void ShouldTrace_SingleThread_SingleMethodOnTheFirstLvl_with_InnerMethodCall() { MethodWithInnerMethodCall(); TracerResult tracerResult = tracer.GetTraceResult(); ThreadTracerResult[] threadTracersResults = new ThreadTracerResult[tracer.GetTraceResult().dThreadTracerResults.Count]; tracer.GetTraceResult().dThreadTracerResults.Values.CopyTo(threadTracersResults, 0); Assert.AreEqual(1, threadTracersResults.Length); // should be only one ThreadTracerResult Assert.AreEqual(1, threadTracersResults[0].lFirstLvlMethodTracersResult.Count); // should be only one method on the first lvl // check that the first method on the first lvl is correct string methodNameFromTraceResult1 = threadTracersResults[0].lFirstLvlMethodTracersResult[0].MethodName; string classNameFromTraceResult1 = threadTracersResults[0].lFirstLvlMethodTracersResult[0].ClassName; Assert.AreEqual("MethodWithInnerMethodCall", methodNameFromTraceResult1); Assert.AreEqual("TracerTests", classNameFromTraceResult1); // check that the first method has one inner method Assert.AreEqual(1, threadTracersResults[0].lFirstLvlMethodTracersResult[0].lInnerMethodTracerResults.Count); // check that the first method has correct inner method Assert.AreEqual("Method1", threadTracersResults[0].lFirstLvlMethodTracersResult[0].lInnerMethodTracerResults[0].MethodName); Assert.AreEqual("TracerTests", threadTracersResults[0].lFirstLvlMethodTracersResult[0].lInnerMethodTracerResults[0].ClassName); }
public void InnerMethodTest() { // checks time, amount, classnames and methodnames _tracer.StartTrace(); Thread.Sleep(_waitTime); SingleThreadedMethod(); _tracer.StopTrace(); TraceResult traceResult = _tracer.GetTraceResult(); ThreadTracerResult[] threadTracerResults = new ThreadTracerResult[traceResult.ThreadTracerResults.Count]; traceResult.ThreadTracerResults.Values.CopyTo(threadTracerResults, 0); Assert.AreEqual(1, traceResult.ThreadTracerResults.Count); MethodTracerResult extremeMt = threadTracerResults[0].ExtremeMethodResults[0]; Assert.AreEqual(nameof(TestTracer), extremeMt.ClassName); Assert.AreEqual(nameof(InnerMethodTest), extremeMt.MethodName); TestIsGreater(extremeMt.ElapsedTime.Milliseconds, _waitTime * 2); Assert.AreEqual(1, extremeMt.Inner.Count); MethodTracerResult internalMt = extremeMt.Inner[0]; Assert.AreEqual(nameof(TestTracer), internalMt.ClassName); Assert.AreEqual(nameof(SingleThreadedMethod), internalMt.MethodName); TestIsGreater(internalMt.ElapsedTime.Milliseconds, _waitTime); }
public void DoubleExtremeMethodTest() { DoubleExtremeMethod(); ThreadTracerResult[] threadTracerResult = new ThreadTracerResult[_tracer.GetTraceResult().ThreadTracerResults.Count]; //_tracer.GetTraceResult().ThreadTracers.ToList() _tracer.GetTraceResult().ThreadTracerResults.Values.CopyTo(threadTracerResult, 0); Assert.AreEqual(threadTracerResult[0].ExtremeMethodResults.Count, 2); }
public void SingleThreadTest() { // only checks time SingleThreadedMethod(); ThreadTracerResult[] threadTracersResults = new ThreadTracerResult[_tracer.GetTraceResult().ThreadTracerResults.Count]; _tracer.GetTraceResult().ThreadTracerResults.Values.CopyTo(threadTracersResults, 0); long actual = threadTracersResults[0].TimeElapsed.Milliseconds; TestIsGreater(actual, _waitTime); }
private XElement Save(ThreadTracerResult threadTracer) { var extremeMethods = from methodResult in threadTracer.ExtremeMethodResults select Save(methodResult); return(new XElement("thread", new XAttribute("id", threadTracer.ThreadId), new XAttribute("time", threadTracer.TimeElapsed.Milliseconds + "ms"), extremeMethods )); }
private JToken Save(ThreadTracerResult threadTracerResult) { var extremeMethods = from method in threadTracerResult.ExtremeMethodResults select Save(method); return(new JObject { { "id", threadTracerResult.ThreadId }, { "time", threadTracerResult.TimeElapsed.Milliseconds + "ms" }, { "methods", new JArray(extremeMethods) } }); }