Files
temp/benchmarks/tdd_session_list_di_bench.py
hurui200320 1878998b7a refactor(testing): rename tdd_bug/tdd_bug_N tags to tdd_issue/tdd_issue_N
Rename the TDD tag system from tdd_bug/tdd_bug_<N> to tdd_issue/tdd_issue_<N>
across the entire codebase. The tdd_expected_fail tag is unchanged.

The TDD expected-failure workflow is not limited to bug fixes — it applies
equally to any issue type (features, tasks, refactors). The _bug suffix was
misleading and narrowed the perceived scope. The new _issue suffix accurately
reflects that the TDD tagging system applies to any Forgejo issue.

Changes span 92 files:
- features/environment.py: validate_tdd_tags(), should_invert_result(), and
  apply_tdd_inversion() updated — regex, variables, error messages
- robot/tdd_expected_fail_listener.py: _validate_tdd_tags(), _should_invert_result(),
  start_test(), end_test() updated consistently
- 33 Behave .feature files: all @tdd_bug/@tdd_bug_<N> tags renamed
- 29 Robot .robot files: all tdd_bug/tdd_bug_<N> tags renamed
- 3 Robot fixture files renamed (tdd_bug_alone, tdd_missing_tdd_bug,
  tdd_expected_fail_missing_bug_n) with content and references updated
- Tag validation tests and helpers updated (function names, command dispatch
  keys, output strings, fixture references)
- CONTRIBUTING.md: section renamed from 'TDD Bug Test Tags' to
  'TDD Issue Test Tags', all tag references and examples updated
- noxfile.py: comment references updated
- Step definition files, mock helpers, and benchmark files: docstring
  references updated

ISSUES CLOSED: #965
2026-03-27 05:58:35 +00:00

55 lines
1.8 KiB
Python

"""ASV benchmarks for TDD Issue #554 — session list CLI throughput.
Measures the performance of the session list CLI command path to establish
a baseline before and after the DI bug fix. Uses a mocked service so the
benchmark isolates CLI/rendering overhead from database I/O.
"""
from __future__ import annotations
from unittest.mock import MagicMock
from benchmarks._session_bench_common import mock_session, runner
from cleveragents.cli.commands import session as session_mod
from cleveragents.cli.commands.session import app as session_app
class TDDSessionListDISuite:
"""Benchmark session list command throughput (TDD issue #554 baseline)."""
def setup(self) -> None:
self._svc = MagicMock()
# Use deterministic, unique session IDs for reproducible benchmarks.
self._svc.list.return_value = [
mock_session(
session_id=f"01HXYZ{i:020d}",
actor_name=f"openai/gpt-{i}",
)
for i in range(50)
]
session_mod._service = self._svc
def teardown(self) -> None:
session_mod._service = None
def time_list_rich(self) -> None:
"""Benchmark listing sessions with default rich format."""
runner.invoke(session_app, ["list"])
def time_list_json(self) -> None:
"""Benchmark listing sessions with JSON format."""
runner.invoke(session_app, ["list", "--format", "json"])
def time_list_empty(self) -> None:
"""Benchmark listing with no sessions."""
self._svc.list.return_value = []
runner.invoke(session_app, ["list"])
# Restore for next benchmark (deterministic IDs).
self._svc.list.return_value = [
mock_session(
session_id=f"01HXYZ{i:020d}",
actor_name=f"openai/gpt-{i}",
)
for i in range(50)
]