Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions tests/perf/test_perf_archive.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,17 @@ def _make_db(sub_dir: str, *, n_success: int, n_failed: int) -> None:
conn.close()


# Avg and p99 columns of the optional generation metrics (PD handoff, steady ITL).
_OPTIONAL_KEYS = (
'avg_pd_handoff_latency',
'p99_pd_handoff_latency',
'avg_pd_handoff_overhead',
'p99_pd_handoff_overhead',
'avg_steady_itl',
'p99_steady_itl',
)


class TestPerfArchive(unittest.TestCase):

def setUp(self):
Expand All @@ -115,6 +126,16 @@ def setUp(self):
def tearDown(self):
shutil.rmtree(self.tmp, ignore_errors=True)

def _assert_optional_columns_pruned(self, body):
# The p99 siblings matter most: a missing percentile row reads back as 0.0,
# not None, so a p99 column left behind would look like a real measurement.
column_keys = {column['key'] for column in body['summary_columns']}
for key in _OPTIONAL_KEYS:
self.assertNotIn(key, column_keys)
for row in body['summary_rows']:
self.assertNotIn(key, row['values'])
self.assertNotIn(key, row['sample_counts'])

def test_list_finds_both_layouts(self):
res = self.client.get('/api/v1/perf/list', query_string={'root_path': self.tmp})
self.assertEqual(res.status_code, 200)
Expand Down Expand Up @@ -150,8 +171,7 @@ def test_detail_returns_summary_fields(self):
column_keys = {column['key'] for column in body['summary_columns']}
self.assertEqual(set(values), column_keys)
self.assertNotIn(None, list(values.values()))
self.assertNotIn('avg_pd_handoff_latency', values)
self.assertNotIn('avg_steady_itl', values)
self._assert_optional_columns_pruned(body)
self.assertEqual(body['total_requests'], 2)
self.assertNotIn('summary_sample_counts', body)
self.assertNotIn('metric_semantics', body)
Expand Down Expand Up @@ -185,6 +205,7 @@ def test_detail_prunes_pd_column_when_partially_measured(self):
for row in body['summary_rows']:
self.assertEqual(set(row['values']), column_keys)
self.assertNotIn(None, list(row['values'].values()))
self._assert_optional_columns_pruned(body)

def test_history_report_serves_existing_html(self):
res = self.client.get('/api/v1/perf/history/report', query_string={'root_path': self.tmp, 'path': self.cli_rel})
Expand Down
Loading