Download tests/performance_regression/test_database_query_regression.py from techprotrade/annator-command-center: direct link, hf CLI and curl.
- Browser
- Download file 7.49 kB
-
https://huggingface.co/spaces/techprotrade/annator-command-center/resolve/main/tests/performance_regression/test_database_query_regression.py
- Command line
-
hf download hf://spaces/techprotrade/annator-command-center/tests/performance_regression/test_database_query_regression.py
-
curl -L -o test_database_query_regression.py https://huggingface.co/spaces/techprotrade/annator-command-center/resolve/main/tests/performance_regression/test_database_query_regression.py
7.49 kB
| """ | |
| Database Query Regression Tests | |
| Detects performance regressions in database query performance by comparing | |
| current benchmark results against historical baselines. | |
| Tests: | |
| - Agent list query with 100 records (target: <10ms) | |
| - Episode filter query with 50 records (target: <20ms) | |
| - Pagination query with offset/limit (target: <15ms) | |
| Uses pytest-benchmark for historical tracking and check_regression fixture | |
| to fail tests when performance degrades beyond 20% threshold. | |
| Baselines stored in performance_baseline.json: | |
| - db_agent_query: 0.010s (10ms) | |
| - db_episode_filter: 0.020s (20ms) | |
| - db_pagination: 0.015s (15ms) | |
| Reference: Phase 243 Plan 02 - Performance Regression Detection | |
| """ | |
| import pytest | |
| from uuid import uuid4 | |
| from sqlalchemy import func | |
| from core.models import AgentRegistry, Episode | |
| from core.database import get_db | |
| # Try to import pytest_benchmark, but don't fail if not available | |
| try: | |
| import pytest_benchmark | |
| BENCHMARK_AVAILABLE = True | |
| except ImportError: | |
| BENCHMARK_AVAILABLE = False | |
| # Skip all tests if pytest-benchmark is not available | |
| pytestmark = pytest.mark.skipif( | |
| not BENCHMARK_AVAILABLE, | |
| reason="pytest-benchmark plugin not installed. Install with: pip install pytest-benchmark" | |
| ) | |
| pytestmark = pytest.mark.performance_regression | |
| def test_db_agent_list_query(benchmark, db_session, check_regression): | |
| """ | |
| Benchmark agent list query with 100 agents. | |
| Target: <10ms P50 (agent listing with 100 records) | |
| Query: SELECT * FROM agents LIMIT 100 | |
| Baseline: db_agent_query (0.010s) | |
| Threshold: 20% regression | |
| Test Quality Standards (TQ-01): | |
| - Clear objective: Measure agent query performance with realistic load | |
| - Documented target: <10ms P50 | |
| - Baseline value: 0.010s (10ms) | |
| - Test isolation: Uses db_session fixture for database isolation | |
| - Benchmark grouping: @pytest.mark.benchmark(group="database-query") | |
| """ | |
| # Create 100 test agents | |
| agents = [] | |
| for i in range(100): | |
| agent = AgentRegistry( | |
| id=f"perf_test_agent_{i}_{uuid4()}", | |
| name=f"Performance Test Agent {i}", | |
| category="performance_test", | |
| module_path="test.module", | |
| class_name="TestClass", | |
| status="AUTONOMOUS", | |
| confidence_score=0.9 | |
| ) | |
| agents.append(agent) | |
| db_session.add(agent) | |
| db_session.commit() | |
| def query_agents(): | |
| # Query all agents | |
| result = db_session.query(AgentRegistry).limit(100).all() | |
| assert len(result) == 100 | |
| return result | |
| result = benchmark(query_agents) | |
| # Check regression: should not be >20% slower than baseline | |
| check_regression(benchmark.stats.stats.mean, "db_agent_query", threshold=0.2) | |
| # Verify query succeeded | |
| assert len(result) == 100 | |
| def test_db_episode_filter_query(benchmark, db_session, check_regression): | |
| """ | |
| Benchmark episode filter query with 50 episodes. | |
| Target: <20ms P50 (episode filtering with WHERE clause) | |
| Query: SELECT * FROM episodes WHERE agent_id = ? LIMIT 50 | |
| Baseline: db_episode_filter (0.020s) | |
| Threshold: 20% regression | |
| Test Quality Standards (TQ-01): | |
| - Clear objective: Measure episode filter query performance | |
| - Documented target: <20ms P50 | |
| - Baseline value: 0.020s (20ms) | |
| - Test isolation: Uses db_session fixture for database isolation | |
| - Benchmark grouping: @pytest.mark.benchmark(group="database-query") | |
| """ | |
| # Create test agent | |
| agent_id = f"perf_test_agent_{uuid4()}" | |
| agent = AgentRegistry( | |
| id=agent_id, | |
| name="Performance Test Agent", | |
| category="performance_test", | |
| module_path="test.module", | |
| class_name="TestClass", | |
| status="AUTONOMOUS", | |
| confidence_score=0.9 | |
| ) | |
| db_session.add(agent) | |
| db_session.commit() | |
| # Create 50 episodes for this agent | |
| episodes = [] | |
| for i in range(50): | |
| episode = Episode( | |
| id=f"perf_test_episode_{i}_{uuid4()}", | |
| agent_id=agent_id, | |
| workspace_id="default", | |
| status="COMPLETED", | |
| title=f"Performance Test Episode {i}", | |
| summary={"test": f"episode_{i}"} | |
| ) | |
| episodes.append(episode) | |
| db_session.add(episode) | |
| db_session.commit() | |
| def query_episodes(): | |
| # Filter episodes by agent_id | |
| result = db_session.query(Episode).filter( | |
| Episode.agent_id == agent_id | |
| ).limit(50).all() | |
| assert len(result) == 50 | |
| return result | |
| result = benchmark(query_episodes) | |
| # Check regression: should not be >20% slower than baseline | |
| check_regression(benchmark.stats.stats.mean, "db_episode_filter", threshold=0.2) | |
| # Verify query succeeded | |
| assert len(result) == 50 | |
| def test_db_pagination_query(benchmark, db_session, check_regression): | |
| """ | |
| Benchmark pagination query with offset/limit. | |
| Target: <15ms P50 (pagination with OFFSET and LIMIT) | |
| Query: SELECT * FROM agents LIMIT 10 OFFSET 50 | |
| Baseline: db_pagination (0.015s) | |
| Threshold: 20% regression | |
| Test Quality Standards (TQ-01): | |
| - Clear objective: Measure pagination query performance | |
| - Documented target: <15ms P50 | |
| - Baseline value: 0.015s (15ms) | |
| - Test isolation: Uses db_session fixture for database isolation | |
| - Benchmark grouping: @pytest.mark.benchmark(group="database-query") | |
| """ | |
| # Create 100 test agents for pagination | |
| for i in range(100): | |
| agent = AgentRegistry( | |
| id=f"perf_test_agent_pagination_{i}_{uuid4()}", | |
| name=f"Pagination Test Agent {i}", | |
| category="pagination_test", | |
| module_path="test.module", | |
| class_name="TestClass", | |
| status="AUTONOMOUS", | |
| confidence_score=0.9 | |
| ) | |
| db_session.add(agent) | |
| db_session.commit() | |
| def paginate_agents(): | |
| # Query with offset and limit (simulating page 6 of 10 items per page) | |
| result = db_session.query(AgentRegistry).offset(50).limit(10).all() | |
| assert len(result) == 10 | |
| return result | |
| result = benchmark(paginate_agents) | |
| # Check regression: should not be >20% slower than baseline | |
| check_regression(benchmark.stats.stats.mean, "db_pagination", threshold=0.2) | |
| # Verify pagination worked correctly | |
| assert len(result) == 10 | |
| class TestDatabaseQualityTargets: | |
| """ | |
| Verify database quality targets are documented and achievable. | |
| These tests validate that the performance targets are reasonable | |
| and that the baseline values are correctly defined. | |
| """ | |
| def test_db_agent_query_baseline_exists(self, performance_baseline): | |
| """Verify db_agent_query baseline is defined.""" | |
| assert "db_agent_query" in performance_baseline | |
| assert performance_baseline["db_agent_query"] == 0.010 | |
| def test_db_episode_filter_baseline_exists(self, performance_baseline): | |
| """Verify db_episode_filter baseline is defined.""" | |
| assert "db_episode_filter" in performance_baseline | |
| assert performance_baseline["db_episode_filter"] == 0.020 | |
| def test_db_pagination_baseline_exists(self, performance_baseline): | |
| """Verify db_pagination baseline is defined.""" | |
| assert "db_pagination" in performance_baseline | |
| assert performance_baseline["db_pagination"] == 0.015 | |