コード例 #1
0
ファイル: test_basic.py プロジェクト: admariner/viztracer
 def test_tracer_entries(self):
     tracer = VizTracer(tracer_entries=10)
     tracer.start()
     fib(10)
     tracer.stop()
     tracer.parse()
     self.assertEventNumber(tracer.data, 10)
コード例 #2
0
ファイル: test_basic.py プロジェクト: admariner/viztracer
 def test_invalid_scope(self):
     tracer = VizTracer()
     tracer.start()
     tracer.add_instant('instant - "karma": True', scope="invalid")
     tracer.stop()
     tracer.parse()
     self.assertEventNumber(tracer.data, 0)
コード例 #3
0
ファイル: test_basic.py プロジェクト: admariner/viztracer
    def test_basic(self):
        def fib(n):
            if n == 1 or n == 0:
                return 1
            return fib(n - 1) + fib(n - 2)

        t = VizTracer(verbose=0)
        processes = {}
        for i in range(5, 10):
            t.start()
            fib(i)
            t.stop()
            t.parse()
            processes[i] = t.fork_save(output_file=str(i) + ".json")

        expected = {5: 15, 6: 25, 7: 41, 8: 67, 9: 109}
        pid = None
        for i in range(5, 10):
            path = str(i) + ".json"
            processes[i].join()
            self.assertFileExists(path, timeout=10)
            with open(path) as f:
                data = json.load(f)
            os.remove(path)
            self.assertEventNumber(data, expected[i])
            if pid is None:
                pid = data["traceEvents"][0]["pid"]
            else:
                self.assertEqual(data["traceEvents"][0]["pid"], pid)
コード例 #4
0
ファイル: test_basic.py プロジェクト: AmarjitGhuman/viztracer
    def test_basic(self):
        def fib(n):
            if n == 1 or n == 0:
                return 1
            return fib(n - 1) + fib(n - 2)

        t = VizTracer(verbose=0)
        for i in range(5, 10):
            t.start()
            fib(i)
            t.stop()
            t.parse()
            t.fork_save(output_file=str(i) + ".json")
        time.sleep(0.6)

        expected = {5: 15, 6: 25, 7: 41, 8: 67, 9: 109}
        pid = None
        for i in range(5, 10):
            path = str(i) + ".json"
            self.assertTrue(os.path.exists(path))
            with open(path) as f:
                data = json.load(f)
            os.remove(path)
            self.assertEqual(len(data["traceEvents"]), expected[i])
            if pid is None:
                pid = data["traceEvents"][0]["pid"]
            else:
                self.assertEqual(data["traceEvents"][0]["pid"], pid)
コード例 #5
0
ファイル: test_basic.py プロジェクト: admariner/viztracer
 def test_addinstant(self):
     tracer = VizTracer()
     tracer.start()
     tracer.add_instant('instant - "karma": True')
     tracer.stop()
     tracer.parse()
     self.assertEventNumber(tracer.data, 1)
コード例 #6
0
ファイル: test_performance.py プロジェクト: thy09/viztracer
    def do_one_function(self, func):
        # the original speed
        with Timer() as t:
            func()
            origin = t.get_time()

        # With viztracer + python tracer
        tracer = VizTracer("python", verbose=0)
        tracer.start()
        with Timer() as t:
            func()
            instrumented = t.get_time()
        tracer.stop()
        with Timer() as t:
            entries1 = tracer.parse()
            instrumented_parse = t.get_time()
        with Timer() as t:
            tracer.generate_json()
            instrumented_json = t.get_time()
        tracer.clear()

        # With viztracer + c tracer
        tracer = VizTracer("c", verbose=0, ignore_c_function=True)
        tracer.start()
        with Timer() as t:
            func()
            instrumented_c = t.get_time()
        tracer.stop()
        with Timer() as t:
            entries2 = tracer.parse()
            instrumented_c_parse = t.get_time()
        with Timer() as t:
            tracer.generate_json()
            instrumented_c_json = t.get_time()
        tracer.clear()

        # With cProfiler
        pr = cProfile.Profile()
        pr.enable()
        with Timer() as t:
            func()
            cprofile = t.get_time()
        pr.disable()

        def time_str(name, origin, instrumented):
            return "{:.9f}({:.2f})[{}] ".format(instrumented,
                                                instrumented / origin, name)

        print("{:10}({}, {}):".format(func.__name__, entries1, entries2))
        print(time_str("origin", origin, origin))
        print(
            time_str("py", origin, instrumented) +
            time_str("parse", origin, instrumented_parse) +
            time_str("json", origin, instrumented_json))
        print(
            time_str("c", origin, instrumented_c) +
            time_str("parse", origin, instrumented_c_parse) +
            time_str("json", origin, instrumented_c_json))
        print(time_str("cProfile", origin, cprofile))
コード例 #7
0
ファイル: test_performance.py プロジェクト: znwing/viztracer
    def do_one_function(self, func):
        # the original speed
        with Timer() as t:
            func()
            origin = t.get_time()

        # With viztracer + c tracer + vdb
        tracer = VizTracer(verbose=0, vdb=True)
        tracer.start()
        with Timer() as t:
            func()
            instrumented_c_vdb = t.get_time()
        tracer.stop()
        with Timer() as t:
            tracer.parse()
            instrumented_c_vdb_parse = t.get_time()
        with Timer() as t:
            tracer.save(output_file="tmp.json")
            instrumented_c_vdb_json = t.get_time()
        os.remove("tmp.json")
        tracer.clear()

        # With viztracer + c tracer
        tracer = VizTracer(verbose=0)
        tracer.start()
        with Timer() as t:
            func()
            instrumented_c = t.get_time()
        tracer.stop()
        with Timer() as t:
            tracer.parse()
            instrumented_c_parse = t.get_time()
        with Timer() as t:
            tracer.generate_json(allow_binary=True)
            instrumented_c_json = t.get_time()
        tracer.clear()

        # With cProfiler
        pr = cProfile.Profile()
        pr.enable()
        with Timer() as t:
            func()
            cprofile = t.get_time()
        pr.disable()

        def time_str(name, origin, instrumented):
            return "{:.9f}({:.2f})[{}] ".format(instrumented,
                                                instrumented / origin, name)

        print(time_str("origin", origin, origin))
        print(
            time_str("c+vdb", origin, instrumented_c_vdb) +
            time_str("parse", origin, instrumented_c_vdb_parse) +
            time_str("json", origin, instrumented_c_vdb_json))
        print(
            time_str("c", origin, instrumented_c) +
            time_str("parse", origin, instrumented_c_parse) +
            time_str("json", origin, instrumented_c_json))
        print(time_str("cProfile", origin, cprofile))
コード例 #8
0
ファイル: test_basic.py プロジェクト: AmarjitGhuman/viztracer
 def test_save_flamegraph(self):
     tracer = VizTracer(tracer_entries=10)
     tracer.start()
     fib(5)
     tracer.stop()
     tracer.parse()
     tracer.save_flamegraph()
     self.assertTrue(os.path.exists("result_flamegraph.html"))
     os.remove("result_flamegraph.html")
コード例 #9
0
 def test_save(self):
     tracer = VizTracer(tracer_entries=10)
     tracer.start()
     fib(5)
     tracer.stop()
     tracer.parse()
     tracer.save("./tmp/result.html")
     self.assertTrue(os.path.exists("./tmp/result.html"))
     shutil.rmtree("./tmp")
コード例 #10
0
ファイル: test_vizevent.py プロジェクト: znwing/viztracer
 def test_basic(self):
     tracer = VizTracer()
     tracer.start()
     with tracer.log_event("event"):
         a = []
         a.append(1)
     tracer.stop()
     tracer.parse()
     self.assertEventNumber(tracer.data, 2)
コード例 #11
0
ファイル: test_basic.py プロジェクト: MaxCodeXTC/viztracer
 def test_addfunctionarg(self):
     def f(tracer):
         tracer.add_functionarg("hello", "world")
     tracer = VizTracer()
     tracer.start()
     f(tracer)
     tracer.stop()
     tracer.parse()
     self.assertTrue("args" in tracer.data["traceEvents"][0] and
                     "hello" in tracer.data["traceEvents"][0]["args"])
コード例 #12
0
ファイル: test_basic.py プロジェクト: admariner/viztracer
 def test_log_print(self):
     tracer = VizTracer(log_print=True)
     tracer.start()
     print("hello")
     print("hello")
     print("hello")
     print("hello")
     tracer.stop()
     tracer.parse()
     self.assertEventNumber(tracer.data, 4)
コード例 #13
0
 def test_double_parse(self):
     tracer = VizTracer()
     tracer.start()
     fib(10)
     tracer.stop()
     tracer.parse()
     result1 = tracer.save()
     tracer.parse()
     result2 = tracer.save()
     self.assertEqual(result1, result2)
コード例 #14
0
ファイル: test_basic.py プロジェクト: admariner/viztracer
    def test_addfunctionarg(self):
        def f(tracer):
            tracer.add_func_args("hello", "world")

        tracer = VizTracer()
        tracer.start()
        f(tracer)
        tracer.stop()
        tracer.parse()
        events = [e for e in tracer.data["traceEvents"] if e["ph"] != "M"]
        self.assertTrue("args" in events[0] and "hello" in events[0]["args"])
コード例 #15
0
    def test_issue42(self):
        @ignore_function
        def f():
            lst = []
            lst.append(1)

        tracer = VizTracer()
        tracer.start()
        f()
        tracer.stop()
        tracer.parse()
        self.assertEventNumber(tracer.data, 0)
コード例 #16
0
    def test_issue42(self):
        @ignore_function
        def f():
            lst = []
            lst.append(1)

        tracer = VizTracer()
        tracer.start()
        f()
        tracer.stop()
        tracer.parse()
        self.assertEqual(len(tracer.data["traceEvents"]), 0)
コード例 #17
0
ファイル: test_basic.py プロジェクト: znwing/viztracer
    def test_pause_resume(self):
        tracer = VizTracer()

        @ignore_function(tracer=tracer)
        def ignore(n):
            if n == 0:
                return 1
            return ignore(n - 1) + 1
        tracer.start()
        ignore(10)
        tracer.stop()
        tracer.parse()
        self.assertEventNumber(tracer.data, 0)
コード例 #18
0
ファイル: test_tracer.py プロジェクト: wangcj05/viztracer
 def test_c_run_after_clear(self):
     tracer = VizTracer()
     tracer.start()
     fib(5)
     tracer.stop()
     entries1 = tracer.parse()
     report1 = tracer.generate_report()
     tracer.start()
     fib(5)
     tracer.stop()
     entries2 = tracer.parse()
     report2 = tracer.generate_report()
     self.assertEqual(entries1, entries2)
     self.assertNotEqual(report1, report2)
コード例 #19
0
 def test_functionarg(self):
     def f(n):
         tracer.add_functionarg("input", n)
         if n < 2:
             return 1
         return f(n-1) + f(n-2)
     tracer = VizTracer()
     tracer.start()
     f(5)
     tracer.stop()
     tracer.parse()
     inputs = set()
     for d in tracer.data["traceEvents"]:
         inputs.add(d["args"]["input"])
     self.assertEqual(inputs, set([0, 1, 2, 3, 4, 5]))
コード例 #20
0
ファイル: test_basic.py プロジェクト: AmarjitGhuman/viztracer
 def test_tracer_entries(self):
     tracer = VizTracer(tracer_entries=10)
     tracer.start()
     fib(10)
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 10)
コード例 #21
0
ファイル: test_basic.py プロジェクト: AmarjitGhuman/viztracer
 def test_invalid_scope(self):
     tracer = VizTracer()
     tracer.start()
     tracer.add_instant("instant", {"karma": True}, scope="invalid")
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 0)
コード例 #22
0
ファイル: test_basic.py プロジェクト: AmarjitGhuman/viztracer
 def test_addinstant(self):
     tracer = VizTracer()
     tracer.start()
     tracer.add_instant("instant", {"karma": True})
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 1)
コード例 #23
0
    def test_basic(self):
        tracer = VizTracer(max_stack_depth=4)
        tracer.start()

        thread1 = MyThread()
        thread2 = MyThread()
        thread3 = MyThread()
        thread4 = MyThread()

        thread1.start()
        thread2.start()
        thread3.start()
        thread4.start()

        threads = [thread1, thread2, thread3, thread4]

        for thread in threads:
            thread.join()

        tracer.stop()
        entries = tracer.parse()
        self.assertGreater(entries, 160)

        metadata = [e for e in tracer.data["traceEvents"] if e["ph"] == "M"]
        self.assertEqual(
            len([e for e in metadata if e["name"] == "process_name"]), 1)
        self.assertEqual(
            len([e for e in metadata if e["name"] == "thread_name"]), 5)
コード例 #24
0
 def test_c_run_after_clear(self):
     tracer = VizTracer()
     tracer.start()
     fib(5)
     tracer.stop()
     entries1 = tracer.parse()
     with io.StringIO() as s:
         tracer.save(s)
         report1 = s.getvalue()
     tracer.start()
     fib(5)
     tracer.stop()
     entries2 = tracer.parse()
     with io.StringIO() as s:
         tracer.save(s)
         report2 = s.getvalue()
     self.assertEqual(entries1, entries2)
     self.assertNotEqual(report1, report2)
コード例 #25
0
 def test_basic(self):
     tracer = VizTracer()
     tracer.start()
     counter = VizCounter(tracer, "name")
     counter.a = 1
     counter.b = 2
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 2)
コード例 #26
0
 def test_basic(self):
     tracer = VizTracer()
     tracer.start()
     a = VizObject(tracer, "my variable")
     a.hello = 1
     a.hello = 2
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 3)
コード例 #27
0
ファイル: test_basic.py プロジェクト: AmarjitGhuman/viztracer
 def test_log_print(self):
     tracer = VizTracer(log_print=True)
     tracer.start()
     print("hello")
     print("hello")
     print("hello")
     print("hello")
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 4)
コード例 #28
0
 def test_buffer_wrap(self):
     tracer = VizTracer(tracer_entries=10)
     tracer.start()
     a = VizObject(tracer, "my variable")
     for i in range(15):
         a.hello = i
     tracer.stop()
     entries = tracer.parse()
     tracer.save()
     self.assertEqual(entries, 10)
コード例 #29
0
 def test_basic(self):
     tracer = VizTracer()
     counter = tracer.register_counter("counter")
     tracer.start()
     counter.update("a", 3)
     counter.update({"a": 4})
     tracer.update_counter("counter", "a", 5)
     tracer.update_counter("counter", {"a": 6})
     tracer.stop()
     entries = tracer.parse()
     self.assertEqual(entries, 4)
コード例 #30
0
ファイル: test_logging.py プロジェクト: fevear2101/viztracer
 def test_handler(self):
     tracer = VizTracer()
     handler = VizLoggingHandler()
     handler.setTracer(tracer)
     logging.basicConfig(handlers=[handler])
     tracer.start()
     logging.warning("lol")
     tracer.stop()
     entries = tracer.parse()
     self.assertGreater(entries, 10)
     logging.getLogger().removeHandler(handler)