67bd287a6c
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 19s
CI / security (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 34s
CI / integration_tests (pull_request) Successful in 2m51s
CI / unit_tests (pull_request) Successful in 14m31s
CI / docker (pull_request) Successful in 43s
CI / benchmark-regression (pull_request) Successful in 14m49s
CI / coverage (pull_request) Successful in 42m41s
141 lines
4.6 KiB
Python
141 lines
4.6 KiB
Python
"""ASV benchmarks for correction model construction and service operations.
|
|
|
|
Measures the performance of:
|
|
- CorrectionRequest model construction (Pydantic validation)
|
|
- CorrectionImpact / CorrectionResult / CorrectionAttempt construction
|
|
- CorrectionService.request_correction()
|
|
- CorrectionService.analyze_impact()
|
|
- CorrectionService.execute_correction()
|
|
- CorrectionService.list_corrections()
|
|
- CorrectionMode / CorrectionStatus enum access
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
try:
|
|
from cleveragents.application.services.correction_service import (
|
|
CorrectionService,
|
|
)
|
|
from cleveragents.domain.models.core.correction import (
|
|
CorrectionAttempt,
|
|
CorrectionImpact,
|
|
CorrectionMode,
|
|
CorrectionRequest,
|
|
CorrectionResult,
|
|
CorrectionStatus,
|
|
)
|
|
except ModuleNotFoundError:
|
|
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))
|
|
from cleveragents.application.services.correction_service import (
|
|
CorrectionService,
|
|
)
|
|
from cleveragents.domain.models.core.correction import (
|
|
CorrectionAttempt,
|
|
CorrectionImpact,
|
|
CorrectionMode,
|
|
CorrectionRequest,
|
|
CorrectionResult,
|
|
CorrectionStatus,
|
|
)
|
|
|
|
|
|
class CorrectionModelSuite:
|
|
"""Benchmark correction model construction."""
|
|
|
|
def time_correction_request_construction(self) -> None:
|
|
"""Benchmark CorrectionRequest creation with Pydantic validation."""
|
|
CorrectionRequest(
|
|
plan_id="plan-bench-1",
|
|
target_decision_id="DEC-001",
|
|
mode=CorrectionMode.REVERT,
|
|
guidance="Benchmark guidance text",
|
|
)
|
|
|
|
def time_correction_impact_construction(self) -> None:
|
|
"""Benchmark CorrectionImpact creation."""
|
|
CorrectionImpact(
|
|
affected_decisions=["DEC-001", "DEC-002", "DEC-003"],
|
|
affected_files=["src/main.py", "src/utils.py"],
|
|
estimated_cost=1.5,
|
|
risk_level="medium",
|
|
)
|
|
|
|
def time_correction_result_construction(self) -> None:
|
|
"""Benchmark CorrectionResult creation."""
|
|
CorrectionResult(
|
|
correction_id="test-id",
|
|
status=CorrectionStatus.APPLIED,
|
|
new_decisions=["DEC-004"],
|
|
reverted_decisions=["DEC-001"],
|
|
)
|
|
|
|
def time_correction_attempt_construction(self) -> None:
|
|
"""Benchmark CorrectionAttempt creation."""
|
|
CorrectionAttempt(
|
|
correction_id="test-id",
|
|
success=True,
|
|
details={"step": "benchmark"},
|
|
)
|
|
|
|
def time_correction_mode_enum_access(self) -> None:
|
|
"""Benchmark CorrectionMode enum value access."""
|
|
_ = CorrectionMode.REVERT.value
|
|
_ = CorrectionMode.APPEND.value
|
|
|
|
def time_correction_status_enum_access(self) -> None:
|
|
"""Benchmark CorrectionStatus enum value access."""
|
|
_ = CorrectionStatus.PENDING.value
|
|
_ = CorrectionStatus.ANALYZING.value
|
|
_ = CorrectionStatus.EXECUTING.value
|
|
_ = CorrectionStatus.APPLIED.value
|
|
_ = CorrectionStatus.FAILED.value
|
|
_ = CorrectionStatus.CANCELLED.value
|
|
|
|
|
|
class CorrectionServiceSuite:
|
|
"""Benchmark CorrectionService operations."""
|
|
|
|
def setup(self) -> None:
|
|
"""Create a fresh service for each benchmark."""
|
|
self.service = CorrectionService()
|
|
|
|
def time_request_correction(self) -> None:
|
|
"""Benchmark creating a correction request."""
|
|
self.service.request_correction(
|
|
plan_id="plan-bench",
|
|
decision_id="DEC-001",
|
|
mode=CorrectionMode.REVERT,
|
|
guidance="Benchmark correction",
|
|
)
|
|
|
|
def time_analyze_impact(self) -> None:
|
|
"""Benchmark impact analysis (stub)."""
|
|
req = self.service.request_correction(
|
|
plan_id="plan-bench",
|
|
decision_id="DEC-001",
|
|
mode=CorrectionMode.REVERT,
|
|
guidance="Benchmark analysis",
|
|
)
|
|
self.service.analyze_impact(req.correction_id)
|
|
|
|
def time_execute_correction(self) -> None:
|
|
"""Benchmark correction execution (stub)."""
|
|
req = self.service.request_correction(
|
|
plan_id="plan-bench",
|
|
decision_id="DEC-001",
|
|
mode=CorrectionMode.REVERT,
|
|
guidance="Benchmark execution",
|
|
)
|
|
self.service.execute_correction(req.correction_id)
|
|
|
|
def time_list_corrections(self) -> None:
|
|
"""Benchmark listing corrections."""
|
|
self.service.list_corrections()
|
|
|
|
def time_list_corrections_filtered(self) -> None:
|
|
"""Benchmark listing corrections with plan filter."""
|
|
self.service.list_corrections(plan_id="plan-bench")
|