mirror of
https://github.com/python/cpython.git
synced 2025-08-29 13:15:11 +00:00
gh-114312: Collect stats for unlikely events (GH-114493)
This commit is contained in:
parent
c63c6142f9
commit
ea3cd0498c
11 changed files with 199 additions and 1 deletions
75
Lib/test/test_optimizer.py
Normal file
75
Lib/test/test_optimizer.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
import _testinternalcapi
|
||||
import unittest
|
||||
import types
|
||||
|
||||
|
||||
class TestRareEventCounters(unittest.TestCase):
|
||||
def test_set_class(self):
|
||||
class A:
|
||||
pass
|
||||
class B:
|
||||
pass
|
||||
a = A()
|
||||
|
||||
orig_counter = _testinternalcapi.get_rare_event_counters()["set_class"]
|
||||
a.__class__ = B
|
||||
self.assertEqual(
|
||||
orig_counter + 1,
|
||||
_testinternalcapi.get_rare_event_counters()["set_class"]
|
||||
)
|
||||
|
||||
def test_set_bases(self):
|
||||
class A:
|
||||
pass
|
||||
class B:
|
||||
pass
|
||||
class C(B):
|
||||
pass
|
||||
|
||||
orig_counter = _testinternalcapi.get_rare_event_counters()["set_bases"]
|
||||
C.__bases__ = (A,)
|
||||
self.assertEqual(
|
||||
orig_counter + 1,
|
||||
_testinternalcapi.get_rare_event_counters()["set_bases"]
|
||||
)
|
||||
|
||||
def test_set_eval_frame_func(self):
|
||||
orig_counter = _testinternalcapi.get_rare_event_counters()["set_eval_frame_func"]
|
||||
_testinternalcapi.set_eval_frame_record([])
|
||||
self.assertEqual(
|
||||
orig_counter + 1,
|
||||
_testinternalcapi.get_rare_event_counters()["set_eval_frame_func"]
|
||||
)
|
||||
_testinternalcapi.set_eval_frame_default()
|
||||
|
||||
def test_builtin_dict(self):
|
||||
orig_counter = _testinternalcapi.get_rare_event_counters()["builtin_dict"]
|
||||
if isinstance(__builtins__, types.ModuleType):
|
||||
builtins = __builtins__.__dict__
|
||||
else:
|
||||
builtins = __builtins__
|
||||
builtins["FOO"] = 42
|
||||
self.assertEqual(
|
||||
orig_counter + 1,
|
||||
_testinternalcapi.get_rare_event_counters()["builtin_dict"]
|
||||
)
|
||||
del builtins["FOO"]
|
||||
|
||||
def test_func_modification(self):
|
||||
def func(x=0):
|
||||
pass
|
||||
|
||||
for attribute in (
|
||||
"__code__",
|
||||
"__defaults__",
|
||||
"__kwdefaults__"
|
||||
):
|
||||
orig_counter = _testinternalcapi.get_rare_event_counters()["func_modification"]
|
||||
setattr(func, attribute, getattr(func, attribute))
|
||||
self.assertEqual(
|
||||
orig_counter + 1,
|
||||
_testinternalcapi.get_rare_event_counters()["func_modification"]
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
Loading…
Add table
Add a link
Reference in a new issue