コード例 #1
0
 public void Method(object o)
 {
     Tracer.Tracer tracer = (Tracer.Tracer)o;
     tracer.StartTrace();
     Thread.Sleep(100);
     tracer.StopTrace();
 }
コード例 #2
0
        public void MultiThreadTest()
        {
            tracer = new Tracer.Tracer();

            var threads = new List <Thread>();

            long expectedTime = 0;

            Thread newThread;

            for (int i = 0; i < threadsCount; i++)
            {
                newThread = new Thread(SingleThreadedMethod);
                threads.Add(newThread);
                newThread.Start();
                expectedTime += waitTime;
            }

            foreach (Thread thread in threads)
            {
                thread.Join();
            }

            long actual = 0;

            foreach (ThreadTracingResult threadResult in tracer.GetTraceResult().ThreadTracingResults)
            {
                actual += threadResult.ExecutionTime;
            }

            TestExecutionTime(actual, expectedTime);
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: Den25570/Tracer
        static void Main(string[] args)
        {
            ITracer       tracer         = new Tracer.Tracer();
            ISerializer   serializerJSON = new SerializerJSON();
            ISerializer   serializerXML  = new SerializerXML();
            IOutputWriter writer         = new OutputWriter.OutputWriter();

            //Process
            var test = new Foo(tracer);

            test.MyMethod();
            Thread thread = new Thread(test.MyMethod);

            thread.Start();
            thread.Join();

            //Serialize
            string       result = serializerXML.Serialize(tracer.GetTraceResult());
            StreamWriter fs     = new StreamWriter("test.xml");

            //Write
            writer.Write(result, fs);
            writer.Write(result);

            //Serialize
            result = serializerJSON.Serialize(tracer.GetTraceResult());
            StreamWriter fs2 = new StreamWriter("test.json");

            //Write
            writer.Write(result, fs2);
            writer.Write(result);

            fs.Close();
            fs2.Close();
        }
コード例 #4
0
        static void Main(string[] args)
        {
            Program program = new Program();
            Thread  thread  = new Thread(new ParameterizedThreadStart(program.Method));

            ITracer tracer = new Tracer.Tracer();
            Foo     foo    = new Foo(tracer);

            foo.MyMethod();
            foo.MyMethod2();
            thread.Start(tracer);
            thread.Join();

            XmlSerializer        xmlTracerSerializer  = new XmlSerializer();
            JsonTracerSerializer jsonTracerSerializer = new JsonTracerSerializer();
            TraceResult          traceResult          = tracer.GetTraceResult();
            string xml  = xmlTracerSerializer.Serialize(traceResult);
            string json = jsonTracerSerializer.Serialize(traceResult);

            FileSaver fs = new FileSaver("trace.json");

            fs.Print(xml);
            fs.Print(json);

            ConsolePrinter cp = new ConsolePrinter();

            cp.Print(xml);
            cp.Print(json);

            Console.ReadKey();
        }
コード例 #5
0
        public void InnerMethodTest()
        {
            tracer = new Tracer.Tracer();

            tracer.StartTrace();
            Thread.Sleep(waitTime);
            SingleThreadedMethod();
            tracer.StopTrace();

            TraceResult traceResult = tracer.GetTraceResult();

            Assert.AreEqual(1, traceResult.ThreadTracingResults.Count);
            TestExecutionTime(tracer.GetTraceResult().ThreadTracingResults[0].ExecutionTime, waitTime * 2);
            Assert.AreEqual(1, traceResult.ThreadTracingResults[0].ThreadMethods.Count);

            MethodTracingResult methodResult = traceResult.ThreadTracingResults[0].ThreadMethods[0];

            Assert.AreEqual(nameof(UnitTests), methodResult.ClassName);
            Assert.AreEqual(nameof(InnerMethodTest), methodResult.MethodName);
            TestExecutionTime(methodResult.ExecutionTime, waitTime * 2);
            Assert.AreEqual(1, methodResult.InnerMethods.Count);
            MethodTracingResult innerMethodResult = methodResult.InnerMethods[0];

            Assert.AreEqual(nameof(UnitTests), innerMethodResult.ClassName);
            Assert.AreEqual(nameof(SingleThreadedMethod), innerMethodResult.MethodName);
            TestExecutionTime(innerMethodResult.ExecutionTime, waitTime);
        }
コード例 #6
0
        public void SimpleMultiThreadTest()
        {
            tracer = new Tracer.Tracer();
            var    threads  = new List <Thread>();
            long   expected = 0;
            Thread newThread;

            for (int i = 0; i < threadsCount; i++)
            {
                newThread = new Thread(SimpleTestMethod);
                threads.Add(newThread);
                newThread.Start();
                expected += waitTime;
            }
            foreach (Thread thread in threads)
            {
                thread.Join();
            }
            long actual = 0;

            foreach (ThreadTracer threadResult in tracer.GetTraceResult().ThreadsList)
            {
                actual += threadResult.Time;
            }
            Assert.AreEqual(TimeTest(actual, expected), true, timeTestFailMessage);
        }
コード例 #7
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start:");

            exampleTracer = new Tracer.Tracer();
            new ExampleTests(exampleTracer).MultiThreadedMethod();

            IWriter writer;

            //Вывод в консоль
            writer = new ConsoleWriter();
            writer.WriteResult(exampleTracer.GetTraceResult(), new JsonSerializer());

            Console.WriteLine("");
            writer.WriteResult(exampleTracer.GetTraceResult(), new XmlSerializer());

            // Вывод в файл
            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

            writer = new FileWriter(desktopPath + "\\xmlSerialized.xml");
            writer.WriteResult(exampleTracer.GetTraceResult(), new XmlSerializer());

            writer = new FileWriter(desktopPath + "\\jsonSerialized.json");
            writer.WriteResult(exampleTracer.GetTraceResult(), new JsonSerializer());

            Console.ReadKey();
        }
コード例 #8
0
ファイル: UnitTest1.cs プロジェクト: Ushiramaru/Tracer
 private void ff(Tracer.Tracer tracer)
 {
     tracer.StartTrace();
     f(tracer);
     f(tracer);
     f(tracer);
     Thread.Sleep(100);
     tracer.StopTrace();
 }
コード例 #9
0
        public void SingleThreadTest()
        {
            tracer = new Tracer.Tracer();
            tracer.StartTrace();
            Thread.Sleep(waitTime);
            tracer.StopTrace();
            long actual = tracer.GetTraceResult().ThreadsList[0].Time;

            Assert.AreEqual(TimeTest(actual, waitTime), true, timeTestFailMessage);
        }
コード例 #10
0
ファイル: UnitTest1.cs プロジェクト: Ushiramaru/Tracer
        public void Test3()
        {
            Tracer.Tracer tracer = new Tracer.Tracer();
            Thread        thread = new Thread(new ParameterizedThreadStart(f1));

            thread.Start(tracer);
            ff(tracer);
            Thread.Sleep(100);
            Assert.AreEqual(2, tracer.GetTraceResult().Threads.Length);
        }
コード例 #11
0
 public void CommonTest1()
 {
     Tracer.Tracer tracer = new Tracer.Tracer();
     tracer.StartTrace();
     Thread.Sleep(100);
     tracer.StopTrace();
     string[] actual   = tracer.GetTraceResult();
     string[] expected = { "[\r\n  {\r\n    \"time\": 0,\r\n    \"methodName\": \"1\",\r\n    \"className\": \"Thread\",\r\n    \"traceResultList\": [\r\n      {\r\n        \"time\": 116,\r\n        \"methodName\": \"Main\",\r\n        \"className\": \"Program\",\r\n        \"traceResultList\": []\r\n      }\r\n    ]\r\n  }\r\n]",
                           "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<ArrayOfTraceResult xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n  <TraceResult>\r\n    <stopwatch />\r\n    <time>0</time>\r\n    <methodName>1</methodName>\r\n    <className>Thread</className>\r\n    <traceResultList>\r\n      <TraceResult>\r\n        <stopwatch />\r\n        <time>106</time>\r\n        <methodName>Main</methodName>\r\n        <className>Program</className>\r\n        <traceResultList />\r\n      </TraceResult>\r\n    </traceResultList>\r\n  </TraceResult>\r\n</ArrayOfTraceResult>" };
     Assert.AreEqual(expected, actual);
 }
コード例 #12
0
        public void SingleThreadTest()
        {
            tracer = new Tracer.Tracer();

            tracer.StartTrace();
            Thread.Sleep(waitTime);
            tracer.StopTrace();

            long actual = tracer.GetTraceResult().ThreadTracingResults[0].ExecutionTime;

            TestExecutionTime(actual, waitTime);
        }
コード例 #13
0
ファイル: Program.cs プロジェクト: ZhekaPrice/Tracer
        static void Main(string[] args)
        {
            tracer = new Tracer.Tracer();
            var test = new UnitTestMethod(tracer);

            test.HardMethod();
            new ConsoleWrite().Write(new XmlSerialize(), tracer.GetTraceResult());
            new ConsoleWrite().Write(new JSONSerialize(), tracer.GetTraceResult());
            new FileWrite("D:\\Учеба\\лабы\\5 сем\\СПП\\1 лаба\\Result1.txt").Write(new XmlSerialize(), tracer.GetTraceResult());
            new FileWrite("D:\\Учеба\\лабы\\5 сем\\СПП\\1 лаба\\Result.txt").Write(new JSONSerialize(), tracer.GetTraceResult());
            Console.ReadKey();
        }
コード例 #14
0
ファイル: Demo.cs プロジェクト: Meterlock/Lab1.Tracer
        static void Main(string[] args)
        {
            tracer = new Tracer.Tracer();
            var test = new TestMethods(tracer);

            test.XXXMethod();

            new ConsoleWriter().Write(new SerializerJSON(), tracer.GetTraceResult());
            string filename = "D:\\УНИВЕР\\5 семестр\\СПП\\ThreadsInfo.txt";

            new FileWriter(filename).Write(new SerializerXML(), tracer.GetTraceResult());

            Console.ReadKey();
        }
コード例 #15
0
        public void HardMultiThreadTest()
        {
            tracer = new Tracer.Tracer();
            var    threads  = new List <Thread>();
            long   expected = 0;
            Thread newThread;

            for (int i = 0; i < threadsCount; i++)
            {
                newThread = new Thread(MultiThreadedMethod);
                threads.Add(newThread);
                newThread.Start();
                expected += waitTime * (threadsCount + 1);
            }
            foreach (Thread thread in threads)
            {
                thread.Join();
            }
            long        actual = 0;
            TraceResult result = tracer.GetTraceResult();

            foreach (ThreadTracer threadResult in result.ThreadsList)
            {
                actual += threadResult.Time;
            }
            Assert.AreEqual(TimeTest(actual, expected), true, timeTestFailMessage);
            Assert.AreEqual(threadsCount * threadsCount + threadsCount, result.ThreadsList.Count, countTestFailMessage);
            int          multiThreadedMethodCounter = 0, singleThreadedMethodCounter = 0;
            MethodTracer methodResult;

            foreach (ThreadTracer threadTracer in result.ThreadsList)
            {
                methodResult = threadTracer.InnerMethods[0];
                Assert.AreEqual(0, methodResult.InnerMethods.Count, countTestFailMessage);
                Assert.AreEqual(nameof(TracerUnitTest), methodResult.ClassName, classNameTestFailMessage);
                Assert.AreEqual(TimeTest(methodResult.Time, waitTime), true, timeTestFailMessage);
                if (methodResult.Name == nameof(MultiThreadedMethod))
                {
                    multiThreadedMethodCounter++;
                }
                if (methodResult.Name == nameof(SimpleTestMethod))
                {
                    singleThreadedMethodCounter++;
                }
            }
            Assert.AreEqual(threadsCount, multiThreadedMethodCounter, countTestFailMessage);
            Assert.AreEqual(threadsCount * threadsCount, singleThreadedMethodCounter, countTestFailMessage);
        }
コード例 #16
0
ファイル: Program.cs プロジェクト: Argaitt/SPP_lab_1_Tracer
        static void Main(string[] args)
        {
            Tracer.Tracer tracer   = new Tracer.Tracer();
            Foo           foo      = new Foo(tracer);
            Bar           bar      = new Bar(tracer);
            WriterResult  wr       = new WriterResult();
            Thread        myThread = new Thread(new ThreadStart(bar.InnerMethodForSecondThread));

            myThread.Start();
            foo.MyMethod();
            bar.InnerMethod();
            bar.InnerMethod1();
            bar.InnerMethod2();
            wr.JsonXmlToConsole(tracer.GetTraceResult());
            wr.JsonXmlToFile(tracer.GetTraceResult());
        }
コード例 #17
0
        static void Main(string[] args)
        {
            Tracer.Tracer _tracer = new Tracer.Tracer();
            Thread        thread1 = new Thread(new Foo(_tracer).MyMethod);

            thread1.Name = "FIRST";
            thread1.Start();
            Thread.Sleep(100);
            // thread2.Start();
            thread1.Join();     // wait all threads terminate
            // thread2.Join();
            foreach (TracedThread thread in _tracer.GetTraceResult().tracedthreadslist)
            {
                Console.WriteLine(thread.threadId + "  " + thread.Time);
            }
            Console.ReadLine();
            ITraceResult serial = new JsonSerializer();

            Console.WriteLine(serial.SerializeResult(_tracer.GetTraceResult()));
            Console.ReadLine();
        }
コード例 #18
0
        static void Main(string[] args)
        {
            Console.WriteLine("Start testing Tracer Usage:");

            exampleTracer = new Tracer.Tracer();
            new ExampleTests(exampleTracer).MultiThreadedMethod();

            IWriter writer;

            // Вывод в консоль, сериализация в JSON
            writer = new ConsoleWriter();
            writer.WriteResult(exampleTracer.GetTraceResult(), new JsonSerializer());

            // XML-сериализация
            string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);

            writer = new FileWriter(desktopPath + "\\xmlSerialized.xml");
            writer.WriteResult(exampleTracer.GetTraceResult(), new XmlSerializer());

            Console.WriteLine("Finished testing Tracer Usage.");

            Console.ReadKey();
        }
コード例 #19
0
        public void MethodInMethodTest()
        {
            tracer = new Tracer.Tracer();
            tracer.StartTrace();
            Thread.Sleep(waitTime);
            SimpleTestMethod();
            tracer.StopTrace();
            TraceResult traceResult = tracer.GetTraceResult();

            Assert.AreEqual(1, traceResult.ThreadsList.Count, countTestFailMessage);
            Assert.AreEqual(TimeTest(traceResult.ThreadsList[0].Time, waitTime * 2), true, timeTestFailMessage);
            Assert.AreEqual(1, traceResult.ThreadsList[0].InnerMethods.Count, countTestFailMessage);
            MethodTracer methodResult = traceResult.ThreadsList[0].InnerMethods[0];

            Assert.AreEqual(nameof(TracerUnitTest), methodResult.ClassName, classNameTestFailMessage);
            Assert.AreEqual(nameof(MethodInMethodTest), methodResult.Name, methodNameTestFailMessage);
            Assert.AreEqual(TimeTest(methodResult.Time, waitTime), true, timeTestFailMessage);
            Assert.AreEqual(1, methodResult.InnerMethods.Count, countTestFailMessage);
            MethodTracer innerMethodResult = methodResult.InnerMethods[0];

            Assert.AreEqual(nameof(TracerUnitTest), innerMethodResult.ClassName, classNameTestFailMessage);
            Assert.AreEqual(nameof(SimpleTestMethod), innerMethodResult.Name, methodNameTestFailMessage);
            Assert.AreEqual(TimeTest(innerMethodResult.Time, waitTime), true, timeTestFailMessage);
        }
コード例 #20
0
ファイル: UnitTest1.cs プロジェクト: Ushiramaru/Tracer
 public void Test1()
 {
     Tracer.Tracer tracer = new Tracer.Tracer();
     f(tracer);
     Assert.AreEqual(1, tracer.GetTraceResult().Threads.Length);
 }
コード例 #21
0
        public void NestedMultiThreadTest()
        {
            tracer = new Tracer.Tracer();

            var  threads      = new List <Thread>();
            long expectedTime = 0;

            Thread newThread;

            for (int i = 0; i < threadsCount; i++)
            {
                newThread = new Thread(MultiThreadedMethod);
                threads.Add(newThread);
                newThread.Start();
                expectedTime += waitTime * (threadsCount + 1);
            }

            foreach (Thread thread in threads)
            {
                thread.Join();
            }

            long        actualTime = 0;
            TraceResult result     = tracer.GetTraceResult();

            foreach (ThreadTracingResult threadResult in result.ThreadTracingResults)
            {
                actualTime += threadResult.ExecutionTime;
            }

            TestExecutionTime(actualTime, expectedTime);

            // “естирование количества общего числа потоков

            Assert.AreEqual(threadsCount * threadsCount + threadsCount, result.ThreadTracingResults.Count);
            int multiThreadedMethodCounter = 0, singleThreadedMethodCounter = 0;

            MethodTracingResult methodResult;

            foreach (ThreadTracingResult threadResult in result.ThreadTracingResults)
            {
                // “естирование количества методов в потоках
                Assert.AreEqual(threadResult.ThreadMethods.Count, 1);
                methodResult = threadResult.ThreadMethods[0];

                // “естирование количества вложенных методов
                Assert.AreEqual(0, methodResult.InnerMethods.Count);

                // “естирование имени класса
                Assert.AreEqual(nameof(UnitTests), methodResult.ClassName);

                // “естирование времени выполнени¤
                TestExecutionTime(methodResult.ExecutionTime, waitTime);

                if (methodResult.MethodName == nameof(MultiThreadedMethod))
                {
                    multiThreadedMethodCounter++;
                }
                if (methodResult.MethodName == nameof(SingleThreadedMethod))
                {
                    singleThreadedMethodCounter++;
                }
            }

            // “естирование количества многопоточных и однопоточных методов
            Assert.AreEqual(threadsCount, multiThreadedMethodCounter);
            Assert.AreEqual(threadsCount * threadsCount, singleThreadedMethodCounter);
        }
コード例 #22
0
ファイル: UnitTest1.cs プロジェクト: Ushiramaru/Tracer
 public void Test2()
 {
     Tracer.Tracer tracer = new Tracer.Tracer();
     ff(tracer);
     Assert.AreEqual(3, tracer.GetTraceResult().Threads[0].Methods[0].Methods.Length);
 }
コード例 #23
0
ファイル: UnitTest1.cs プロジェクト: Ushiramaru/Tracer
 public void Test4()
 {
     Tracer.Tracer tracer = new Tracer.Tracer();
     f2(tracer);
     Assert.AreEqual("Tests.Tests", tracer.GetTraceResult().Threads[0].Methods[0].ClassName);
 }
コード例 #24
0
ファイル: UnitTest1.cs プロジェクト: Ushiramaru/Tracer
 private void f2(Tracer.Tracer tracer)
 {
     tracer.StartTrace();
     tracer.StopTrace();
 }
コード例 #25
0
 internal Bar(Tracer.Tracer tracer)
 {
     _tracer = tracer;
 }
コード例 #26
0
 internal Foo(Tracer.Tracer tracer)
 {
     _tracer = tracer;
     _bar    = new Bar(_tracer);
 }
コード例 #27
0
ファイル: Tracer.cs プロジェクト: Oshi41/Libs
 /// <summary>
 /// Логи будут писаться в этой папке
 /// </summary>
 /// <param name="folderName"></param>
 public static void SetFolder(string folderName)
 {
     Instance = new Tracer(folderName);
 }