"""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", target_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", target_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", target_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")