Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_ctx_stats(self):
from threading import Thread
DUMMY_WORKER_COUNT = 5
yappi.start()
class DummyThread(Thread):
pass
def dummy():
pass
def dummy_worker():
pass
for i in range(DUMMY_WORKER_COUNT):
t = DummyThread(target=dummy_worker)
t.start()
t.join()
yappi.stop()
stats = yappi.get_thread_stats()
return tlocal._tag
except Exception as e:
#print(e)
return -1
def a(tag):
tlocal._tag = tag
burn_io(0.1)
_TCOUNT = 20
yappi.set_clock_type("wall")
tlocal._tag = 0
yappi.set_tag_callback(tag_cbk)
yappi.start()
ts = []
for i in range(_TCOUNT):
t = threading.Thread(target=a, args=(i + 1, ))
ts.append(t)
for t in ts:
t.start()
for t in ts:
t.join()
yappi.stop()
traces = yappi.get_func_stats()
t1 = '''
def test_invalid_tag(self):
def tag_cbk():
return -1
yappi.set_tag_callback(tag_cbk)
yappi.start()
tag_cbk()
yappi.stop()
stats = yappi.get_func_stats()
stat = find_stat_by_name(stats, 'tag_cbk')
self.assertEqual(stat.ncall, 1)
def thread_func():
yappi.set_clock_type("wall")
yappi.start()
bar()
def tearDown(self):
fstats = yappi.get_func_stats()
if not fstats._debug_check_sanity():
sys.stdout.write("ERR: Duplicates found in Func stats\r\n")
fstats.debug_print()
for fstat in fstats:
if not fstat.children._debug_check_sanity():
sys.stdout.write("ERR: Duplicates found in ChildFunc stats\r\n")
fstat.children.print_all()
tstats = yappi.get_func_stats()
if not tstats._debug_check_sanity():
sys.stdout.write("ERR: Duplicates found in Thread stats\r\n")
tstats.print_all()
yappi.start(profile_threads=False)
a() # context-id:1
self.callback_count = 2
a() # context-id:2
stats = yappi.get_func_stats()
fsa = utils.find_stat_by_name(stats, "a")
self.assertEqual(fsa.ncall, 1)
yappi.stop()
yappi.clear_stats()
self.callback_count = 1
yappi.start() # profile_threads=True
a() # context-id:1
self.callback_count = 2
a() # context-id:2
stats = yappi.get_func_stats()
fsa = utils.find_stat_by_name(stats, "a")
self.assertEqual(fsa.ncall, 2)
_yappi._set_test_timings(timings)
def a():
pass
def b():
pass
yappi.start()
t = threading.Thread(target=a)
t.start()
t.join()
t = threading.Thread(target=b)
t.start()
t.join()
yappi.get_func_stats().save("tests/ystats1.ys")
yappi.clear_stats()
_yappi._set_test_timings(timings)
self.assertEqual(len(yappi.get_func_stats()), 0)
self.assertEqual(len(yappi.get_thread_stats()), 1)
t = threading.Thread(target=a)
t.start()
t.join()
self.assertEqual(_yappi._get_start_flags()["profile_builtins"], 0)
self.assertEqual(_yappi._get_start_flags()["profile_multithread"], 1)
yappi.get_func_stats().save("tests/ystats2.ys")
stats = yappi.YFuncStats([
"tests/ystats1.ys",
"tests/ystats2.ys",
])
def b():
pass
def c():
pass
def a():
b()
c()
yappi.start()
a()
b() # non-child call
c() # non-child call
stats = yappi.get_func_stats()
fsa = utils.find_stat_by_name(stats, 'a')
childs_of_a = fsa.children.get().sort("tavg", "desc")
prev_item = None
for item in childs_of_a:
if prev_item:
self.assertTrue(prev_item.tavg > item.tavg)
prev_item = item
childs_of_a.sort("name", "desc")
prev_item = None
for item in childs_of_a:
if prev_item:
self.assertTrue(prev_item.name > item.name)
prev_item = item
childs_of_a.clear()
self.assertTrue(childs_of_a.empty())
tlocal._tag = 0
yappi.set_tag_callback(tag_cbk)
yappi.start()
ts = []
for i in range(_TCOUNT):
t = threading.Thread(target=a, args=(i + 1, ))
ts.append(t)
for t in ts:
t.start()
for t in ts:
t.join()
yappi.stop()
traces = yappi.get_func_stats()
t1 = '''
..p/yappi/tests/utils.py:134 burn_io 20 0.000638 2.004059 0.100203
'''
self.assert_traces_almost_equal(t1, traces)
traces = yappi.get_func_stats(filter={'tag': 3})
t1 = '''
..p/yappi/tests/utils.py:134 burn_io 1 0.000038 0.100446 0.100446
'''
self.assert_traces_almost_equal(t1, traces)
def run_with_yappi(func, *args, **kwargs):
yappi.start()
func(*args, **kwargs)
yappi.stop()