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_clear_callback(self):
self.callback_count = 0
def callback():
self.callback_count += 1
return 'name'
yappi.set_context_name_callback(callback)
yappi.start()
a()
yappi.set_context_name_callback(None)
old_callback_count = self.callback_count
a()
yappi.stop()
self.assertEqual(old_callback_count, self.callback_count)
def tearDown(self):
yappi.set_context_name_callback(None)
super(ContextNameCallbackTest, self).tearDown()
def test_clear_callback(self):
self.callback_count = 0
def callback():
self.callback_count += 1
return 'name'
yappi.set_context_name_callback(callback)
yappi.start()
a()
yappi.set_context_name_callback(None)
old_callback_count = self.callback_count
a()
yappi.stop()
self.assertEqual(old_callback_count, self.callback_count)
def test_callback(self):
self.context_id = 0
self.context_name = 'a'
yappi.set_context_id_callback(lambda: self.context_id)
yappi.set_context_name_callback(lambda: self.context_name)
yappi.start()
a()
self.context_id = 1
self.context_name = 'b'
a()
# Re-schedule context 0.
self.context_id = 0
self.context_name = 'a'
a()
yappi.stop()
threadstats = yappi.get_thread_stats().sort('name', 'ascending')
self.assertEqual(2, len(threadstats))
self.assertEqual(0, threadstats[0].id)
self.assertEqual('a', threadstats[0].name)
def setUp(self):
# reset everything back to default
yappi.stop()
yappi.clear_stats()
yappi.set_clock_type('cpu') # reset to default clock type
yappi.set_context_id_callback(None)
yappi.set_context_name_callback(None)
yappi.set_tag_callback(None)
def test_callback_error(self):
self.callback_count = 0
def callback():
self.callback_count += 1
raise Exception('callback error')
yappi.set_context_name_callback(callback)
yappi.start()
a()
a()
yappi.stop()
# Callback was cleared after first error.
self.assertEqual(1, self.callback_count)
def test_callback_non_string(self):
self.callback_count = 0
def callback():
self.callback_count += 1
return 1 # Supposed to return a string.
yappi.set_context_name_callback(callback)
yappi.start()
a()
a()
yappi.stop()
# Callback was cleared after first error.
self.assertEqual(1, self.callback_count)
def test_bad_input(self):
self.assertRaises(TypeError, yappi.set_context_name_callback, 1)
def _capture_profile(fname=''):
if not fname:
yappi.set_clock_type('cpu')
# We need to set context to greenlet to profile greenlets
# https://bitbucket.org/sumerc/yappi/pull-requests/3
yappi.set_context_id_callback(
lambda: id(greenlet.getcurrent()))
yappi.set_context_name_callback(
lambda: greenlet.getcurrent().__class__.__name__)
yappi.start()
else:
yappi.stop()
stats = yappi.get_func_stats()
# User should provide filename. This file with a suffix .prof
# will be created in temp directory.
try:
stats_file = os.path.join(tempfile.gettempdir(), fname + '.prof')
stats.save(stats_file, "pstat")
except Exception as e:
print("Error while saving the trace stats ", str(e))
finally:
yappi.clear_stats()