| from __future__ import annotations |
|
|
| import unittest |
|
|
| try: |
| from autofarm.performance_scope import ( |
| SCENARIO_IDLE, |
| optimization_packages, |
| run_real_field_benchmark_scenario, |
| ) |
| from autofarm.planning.policy import cached_field_topology_for_zones |
| from autofarm.sim.engine import build_real_field_environment |
|
|
| PERFORMANCE_IMPORT_ERROR: ModuleNotFoundError | None = None |
| except ModuleNotFoundError as exc: |
| PERFORMANCE_IMPORT_ERROR = exc |
|
|
|
|
| @unittest.skipIf( |
| PERFORMANCE_IMPORT_ERROR is not None, |
| f"performance scope dependencies unavailable: {PERFORMANCE_IMPORT_ERROR}", |
| ) |
| class PerformanceScopeTest(unittest.TestCase): |
| def test_optimization_packages_cover_required_fields(self) -> None: |
| packages = optimization_packages() |
|
|
| self.assertEqual([package["package_id"] for package in packages], ["A", "B", "C", "D"]) |
| for package in packages: |
| self.assertTrue(package["affected_code_paths"]) |
| self.assertIn("why_behavior_is_unchanged", package) |
| self.assertIn("expected_latency_reduction", package) |
| self.assertIn("validation_method", package) |
| self.assertIn("rollback_criteria", package) |
|
|
| def test_cached_field_topology_reuses_same_object_for_equivalent_zone_lists(self) -> None: |
| env = build_real_field_environment() |
|
|
| first = cached_field_topology_for_zones(env.zone_states) |
| second = cached_field_topology_for_zones(list(env.zone_states)) |
|
|
| self.assertIs(first, second) |
| self.assertTrue(first.all_pairs_precomputed) |
|
|
| def test_real_field_benchmark_smoke(self) -> None: |
| result = run_real_field_benchmark_scenario(scenario_name=SCENARIO_IDLE, steps=1) |
|
|
| self.assertEqual(result["scenario"], SCENARIO_IDLE) |
| self.assertEqual(result["step_count"], 1) |
| self.assertIn("engine_step_ms", result) |
| self.assertIn("total_app_step_ms", result) |
| self.assertIn("speed_assessments", result) |
| self.assertIn("hotspot_ranking", result) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|