Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #7
0
        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
                                ));
        }
Beispiel #8
0
        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) }
            });
        }