Skip to content

Commit e3d8aff

Browse files
committed
test actual chunking
1 parent 935779f commit e3d8aff

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

Lib/test/test_profiling/test_sampling_profiler/test_collectors.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,6 +1791,49 @@ def export_summary(skip_idle):
17911791
)
17921792
self.assertEqual(samples_total, 3)
17931793

1794+
def test_jsonl_collector_splits_large_exports_into_chunks(self):
1795+
jsonl_out = tempfile.NamedTemporaryFile(delete=False)
1796+
self.addCleanup(close_and_unlink, jsonl_out)
1797+
1798+
collector = JsonlCollector(1000)
1799+
1800+
for i in range(257):
1801+
collector.collect(
1802+
[
1803+
MockInterpreterInfo(
1804+
0,
1805+
[
1806+
MockThreadInfo(
1807+
1,
1808+
[MockFrameInfo(f"file{i}.py", i + 1, f"func{i}")],
1809+
)
1810+
],
1811+
)
1812+
]
1813+
)
1814+
1815+
collector.export(jsonl_out.name)
1816+
1817+
with open(jsonl_out.name, "r", encoding="utf-8") as f:
1818+
records = [json.loads(line) for line in f]
1819+
1820+
run_ids = {record["run_id"] for record in records}
1821+
self.assertEqual(len(run_ids), 1)
1822+
self.assertRegex(next(iter(run_ids)), r"^[0-9a-f]{32}$")
1823+
1824+
_, str_defs, frame_defs, agg_record, end_record = _jsonl_tables(records)
1825+
str_chunks = [record for record in records if record["type"] == "str_def"]
1826+
frame_chunks = [record for record in records if record["type"] == "frame_def"]
1827+
agg_chunks = [record for record in records if record["type"] == "agg"]
1828+
1829+
self.assertEqual([len(record["defs"]) for record in str_chunks], [256, 256, 2])
1830+
self.assertEqual([len(record["defs"]) for record in frame_chunks], [256, 1])
1831+
self.assertEqual([len(record["entries"]) for record in agg_chunks], [256, 1])
1832+
self.assertEqual(len(str_defs), 514)
1833+
self.assertEqual(len(frame_defs), 257)
1834+
self.assertEqual(agg_record["samples_total"], 257)
1835+
self.assertEqual(end_record["samples_total"], 257)
1836+
17941837

17951838
class TestRecursiveFunctionHandling(unittest.TestCase):
17961839
"""Tests for correct handling of recursive functions in cumulative stats."""

0 commit comments

Comments
 (0)