Files
aitbc/tests/production/test_error_handling.py
aitbc 23348892b9
Some checks failed
API Endpoint Tests / test-api-endpoints (push) Failing after 36s
CLI Tests / test-cli (push) Failing after 3m9s
Documentation Validation / validate-docs (push) Successful in 8s
Integration Tests / test-service-integration (push) Failing after 3s
JavaScript SDK Tests / test-js-sdk (push) Successful in 7s
Package Tests / test-python-packages (map[name:aitbc-agent-sdk path:packages/py/aitbc-agent-sdk]) (push) Failing after 8s
Package Tests / test-python-packages (map[name:aitbc-core path:packages/py/aitbc-core]) (push) Failing after 29s
Package Tests / test-python-packages (map[name:aitbc-crypto path:packages/py/aitbc-crypto]) (push) Failing after 13s
Package Tests / test-python-packages (map[name:aitbc-sdk path:packages/py/aitbc-sdk]) (push) Failing after 16s
Package Tests / test-javascript-packages (map[name:aitbc-sdk-js path:packages/js/aitbc-sdk]) (push) Successful in 7s
Package Tests / test-javascript-packages (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Failing after 18s
Python Tests / test-python (push) Failing after 3m37s
Rust ZK Components Tests / test-rust-zk (push) Successful in 28s
Security Scanning / security-scan (push) Failing after 46s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Failing after 18s
Smart Contract Tests / test-solidity (map[name:zk-circuits path:apps/zk-circuits]) (push) Failing after 43s
Smart Contract Tests / lint-solidity (push) Failing after 12s
Staking Tests / test-staking-service (push) Failing after 2m33s
Staking Tests / test-staking-integration (push) Has been skipped
Staking Tests / test-staking-contract (push) Has been skipped
Staking Tests / run-staking-test-runner (push) Has been skipped
Systemd Sync / sync-systemd (push) Failing after 4s
ci: enforce strict exit codes in workflow tests
- Remove `|| echo "⚠️ ..."` fallbacks that masked failures
- Add explicit `exit 1` on port readiness failures and missing test directories
- Track port_ready flag in health check loops to fail if services don't start
- Replace warning emoji (⚠️) with error emoji () for actual failures
- Fix docs-validation to use curated Markdown target list excluding high-noise directories
- Update rust-zk-tests paths from gpu_acceleration/research to dev
2026-04-18 11:57:35 +02:00

193 lines
6.7 KiB
Python

"""
Test error handling improvements in AITBC services
"""
import pytest
import subprocess
import time
from pathlib import Path
CLI_BIN = Path(__file__).resolve().parents[2] / "aitbc-cli"
class TestServiceErrorHandling:
"""Test that services handle errors properly with specific exception types"""
def test_monitor_service_error_handling(self):
"""Test monitor service handles file and JSON errors properly"""
# This would test that monitor.py handles specific exceptions
# For now, we'll verify the service file exists and has proper imports
import os
monitor_file = "/opt/aitbc/services/monitor.py"
assert os.path.exists(monitor_file)
# Verify error handling improvements are present
with open(monitor_file, 'r') as f:
content = f.read()
assert "json.JSONDecodeError" in content
assert "FileNotFoundError" in content
assert "psutil.Error" in content
def test_marketplace_launcher_error_handling(self):
"""Test marketplace launcher handles subprocess errors properly"""
import os
launcher_file = "/opt/aitbc/services/real_marketplace_launcher.py"
assert os.path.exists(launcher_file)
with open(launcher_file, 'r') as f:
content = f.read()
assert "subprocess.CalledProcessError" in content
assert "FileNotFoundError" in content
def test_blockchain_launcher_error_handling(self):
"""Test blockchain HTTP launcher handles subprocess errors properly"""
import os
launcher_file = "/opt/aitbc/services/blockchain_http_launcher.py"
assert os.path.exists(launcher_file)
with open(launcher_file, 'r') as f:
content = f.read()
assert "subprocess.CalledProcessError" in content
assert "FileNotFoundError" in content
def test_gpu_launcher_error_handling(self):
"""Test GPU marketplace launcher handles subprocess errors properly"""
import os
launcher_file = "/opt/aitbc/services/gpu_marketplace_launcher.py"
assert os.path.exists(launcher_file)
with open(launcher_file, 'r') as f:
content = f.read()
assert "subprocess.CalledProcessError" in content
assert "FileNotFoundError" in content
assert "OSError" in content
class TestMinerManagementErrorHandling:
"""Test that miner management CLI handles errors properly"""
def test_miner_register_error_handling(self):
"""Test miner register handles network errors properly"""
import os
miner_file = "/opt/aitbc/cli/miner_management.py"
assert os.path.exists(miner_file)
with open(miner_file, 'r') as f:
content = f.read()
assert "requests.exceptions.ConnectionError" in content
assert "requests.exceptions.Timeout" in content
assert "json.JSONDecodeError" in content
def test_miner_status_error_handling(self):
"""Test miner status handles network errors properly"""
import os
miner_file = "/opt/aitbc/cli/miner_management.py"
with open(miner_file, 'r') as f:
content = f.read()
# Should have specific error handling for status function
assert "requests.exceptions.HTTPError" in content
class TestDatabasePerformanceOptimizations:
"""Test database performance optimizations"""
def test_database_connection_pooling(self):
"""Test database has connection pooling configured"""
import os
db_file = "/opt/aitbc/apps/coordinator-api/src/app/database.py"
assert os.path.exists(db_file)
with open(db_file, 'r') as f:
content = f.read()
assert "pool_size" in content
assert "max_overflow" in content
assert "pool_pre_ping" in content
assert "pool_recycle" in content
class TestCachePerformanceOptimizations:
"""Test cache performance optimizations"""
def test_cache_memory_management(self):
"""Test cache has memory management configured"""
import os
cache_file = "/opt/aitbc/apps/coordinator-api/src/app/utils/cache.py"
assert os.path.exists(cache_file)
with open(cache_file, 'r') as f:
content = f.read()
assert "max_size" in content
assert "max_memory_mb" in content
assert "_evict_oldest" in content
assert "_check_memory_limit" in content
class TestCLIComprehensiveTesting:
"""Test CLI tool functionality comprehensively"""
def test_cli_help_command(self):
"""Test CLI help command works"""
result = subprocess.run(
[str(CLI_BIN), "--help"],
capture_output=True,
text=True
)
assert result.returncode == 0
assert "AITBC CLI" in result.stdout
def test_cli_system_command(self):
"""Test CLI system command works"""
result = subprocess.run(
[str(CLI_BIN), "system", "status"],
capture_output=True,
text=True
)
assert result.returncode == 0
assert "System status" in result.stdout
def test_cli_chain_command(self):
"""Test CLI chain command works"""
result = subprocess.run(
[str(CLI_BIN), "blockchain", "info"],
capture_output=True,
text=True
)
assert result.returncode == 0
assert "Blockchain information" in result.stdout
def test_cli_network_command(self):
"""Test CLI network command works"""
result = subprocess.run(
[str(CLI_BIN), "network", "status"],
capture_output=True,
text=True
)
assert result.returncode == 0
assert "Network status" in result.stdout
def test_cli_wallet_command(self):
"""Test CLI wallet command works"""
result = subprocess.run(
[str(CLI_BIN), "wallet", "--help"],
capture_output=True,
text=True
)
assert result.returncode == 0
assert "create,list,balance,transactions,send,import,export,delete,rename,backup,sync,batch" in result.stdout
def test_cli_marketplace_list_command(self):
"""Test CLI marketplace list command works"""
result = subprocess.run(
[str(CLI_BIN), "market", "list"],
capture_output=True,
text=True
)
assert result.returncode == 0
assert "Marketplace list" in result.stdout
if __name__ == "__main__":
pytest.main([__file__, "-v"])