Some checks failed
API Endpoint Tests / test-api-endpoints (push) Successful in 56s
Blockchain Synchronization Verification / sync-verification (push) Failing after 3s
CLI Tests / test-cli (push) Failing after 5s
Coverage Phase 1 (70% Target) / test-coverage-70 (push) Failing after 19s
Coverage Phase 2 (85% Target) / test-coverage-85 (push) Failing after 18s
Cross-Chain Functionality Tests / test-cross-chain-sync (push) Successful in 3s
Cross-Chain Functionality Tests / test-cross-chain-transactions (push) Successful in 4s
Cross-Chain Functionality Tests / test-multi-chain-consensus (push) Successful in 5s
Deploy to Testnet / deploy-testnet (push) Failing after 21s
Documentation Validation / validate-docs (push) Failing after 13s
Documentation Validation / validate-policies-strict (push) Successful in 4s
Integration Tests / test-service-integration (push) Failing after 2s
Multi-Chain Island Architecture Tests / test-multi-chain-island (push) Successful in 4s
Multi-Node Blockchain Health Monitoring / health-check (push) Failing after 14s
Node Failover Simulation / failover-test (push) Successful in 9s
P2P Network Verification / p2p-verification (push) Successful in 5s
Package Tests / Python package - aitbc-agent-sdk (push) Successful in 51s
Package Tests / Python package - aitbc-core (push) Failing after 3s
Package Tests / Python package - aitbc-crypto (push) Successful in 22s
Package Tests / Python package - aitbc-sdk (push) Successful in 16s
Package Tests / JavaScript package - aitbc-sdk-js (push) Successful in 21s
Package Tests / JavaScript package - aitbc-token (push) Failing after 18s
Production Tests / Production Integration Tests (push) Failing after 1m9s
Python Tests / test-python (push) Failing after 3s
Security Scanning / security-scan (push) Failing after 41s
Smart Contract Tests / test-solidity (map[name:aitbc-contracts path:contracts]) (push) Failing after 6s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Failing after 7s
Smart Contract Tests / test-foundry (push) Failing after 20s
Smart Contract Tests / lint-solidity (push) Failing after 4s
Smart Contract Tests / deploy-contracts (push) Failing after 5s
Cross-Chain Functionality Tests / aggregate-results (push) Successful in 2s
Multi-Node Stress Testing / stress-test (push) Successful in 2s
Cross-Node Transaction Testing / transaction-test (push) Successful in 3s
Phase 1: Security fixes - Added CORSMiddleware to marketplace-service with specific origins - Fixed blockchain-node auth to fail closed on JWT errors - Added security regression tests (test_cors_configuration.py, test_dispute_auth.py) Phase 2: Repository cleanup - Removed 51 fix/backup/legacy files - Deleted marketplace-service-debug directory Phase 3.1: Python version constraints - Updated aitbc-crypto and aitbc-sdk with requires-python >=3.13 - Added explicit [tool.poetry].packages declarations Phase 3.2: Agent service DI architecture - Created aitbc-agent-core package with protocols and shared service - Implemented adapters for agent-management and coordinator-api - Created factory functions for gradual migration - Added migration comments to existing integration files Phase 4.1: Auth/utils extraction - Created auth.py module with JWT validation and security utilities - Created utils.py module with common helpers Phase 4.2: Router decomposition - Decomposed router.py into 10 domain modules (58 endpoints) - Created route table snapshot for verification - Preserved router_old.py as reference Phase 5: App shell classification - Documented app shell patterns across services Phase 6: Quality gates - Verified mypy type checking (75% error reduction) - Analyzed logging inconsistencies with structlog migration plan - Removed unused orjson dependency Documentation: - Created comprehensive remediation report - Added architecture documentation for DI pattern - Added quality analysis documents
105 lines
4.1 KiB
Python
105 lines
4.1 KiB
Python
"""
|
|
Regression tests for agent_performance_service.py
|
|
These tests capture current behavior before extracting shared logic.
|
|
"""
|
|
|
|
import pytest
|
|
from unittest.mock import Mock, AsyncMock, patch
|
|
from datetime import datetime, timezone
|
|
from uuid import uuid4
|
|
|
|
from app.services.agent_performance_service import MetaLearningEngine
|
|
|
|
|
|
@pytest.mark.unit
|
|
class TestMetaLearningEngine:
|
|
"""Test MetaLearningEngine class"""
|
|
|
|
def test_initialization(self):
|
|
"""Test MetaLearningEngine initialization"""
|
|
engine = MetaLearningEngine()
|
|
|
|
assert "model_agnostic_meta_learning" in engine.meta_algorithms
|
|
assert "reptile" in engine.meta_algorithms
|
|
assert "meta_sgd" in engine.meta_algorithms
|
|
assert "prototypical_networks" in engine.meta_algorithms
|
|
|
|
assert "fast_adaptation" in engine.adaptation_strategies
|
|
assert "gradual_adaptation" in engine.adaptation_strategies
|
|
assert "transfer_adaptation" in engine.adaptation_strategies
|
|
assert "multi_task_adaptation" in engine.adaptation_strategies
|
|
|
|
assert len(engine.performance_metrics) == 4
|
|
|
|
def test_meta_algorithms_callable(self):
|
|
"""Test that meta algorithms are callable methods"""
|
|
engine = MetaLearningEngine()
|
|
|
|
for algo_name, algo_func in engine.meta_algorithms.items():
|
|
assert callable(algo_func), f"{algo_name} is not callable"
|
|
|
|
def test_adaptation_strategies_callable(self):
|
|
"""Test that adaptation strategies are callable methods"""
|
|
engine = MetaLearningEngine()
|
|
|
|
for strategy_name, strategy_func in engine.adaptation_strategies.items():
|
|
assert callable(strategy_func), f"{strategy_name} is not callable"
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_create_meta_learning_model(self):
|
|
"""Test creating a meta-learning model"""
|
|
mock_session = Mock()
|
|
mock_session.add = Mock()
|
|
mock_session.commit = Mock()
|
|
mock_session.refresh = Mock()
|
|
|
|
engine = MetaLearningEngine()
|
|
|
|
with patch.object(engine, 'generate_meta_features', return_value={"feature1": "value1"}):
|
|
with patch.object(engine, 'setup_task_distributions', return_value={"dist1": "value1"}):
|
|
with patch('asyncio.create_task'):
|
|
model = await engine.create_meta_learning_model(
|
|
session=mock_session,
|
|
model_name="test_model",
|
|
base_algorithms=["algorithm1"],
|
|
meta_strategy="fast_adaptation",
|
|
adaptation_targets=["target1"]
|
|
)
|
|
|
|
assert model.model_name == "test_model"
|
|
assert model.base_algorithms == ["algorithm1"]
|
|
assert model.status == "training"
|
|
mock_session.add.assert_called_once()
|
|
mock_session.commit.assert_called_once()
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_train_meta_model_not_found(self):
|
|
"""Test training a model that doesn't exist"""
|
|
mock_session = Mock()
|
|
mock_session.execute = Mock(return_value=Mock(first=Mock(return_value=None)))
|
|
|
|
engine = MetaLearningEngine()
|
|
|
|
with pytest.raises(ValueError, match="Meta-learning model .* not found"):
|
|
await engine.train_meta_model(mock_session, "nonexistent_model_id")
|
|
|
|
def test_generate_meta_features(self):
|
|
"""Test meta features generation"""
|
|
engine = MetaLearningEngine()
|
|
|
|
# This is a placeholder test - the actual implementation would need to be tested
|
|
# once we understand the full behavior
|
|
features = engine.generate_meta_features(["target1", "target2"])
|
|
|
|
assert isinstance(features, dict)
|
|
|
|
def test_setup_task_distributions(self):
|
|
"""Test task distributions setup"""
|
|
engine = MetaLearningEngine()
|
|
|
|
# This is a placeholder test - the actual implementation would need to be tested
|
|
# once we understand the full behavior
|
|
distributions = engine.setup_task_distributions(["target1", "target2"])
|
|
|
|
assert isinstance(distributions, dict)
|