docs: update CLI command syntax across workflow documentation
Some checks failed
API Endpoint Tests / test-api-endpoints (push) Waiting to run
Documentation Validation / validate-docs (push) Waiting to run
CLI Tests / test-cli (push) Has been cancelled
Security Scanning / security-scan (push) Has been cancelled
Integration Tests / test-service-integration (push) Has been cancelled
Python Tests / test-python (push) Has been cancelled
Some checks failed
API Endpoint Tests / test-api-endpoints (push) Waiting to run
Documentation Validation / validate-docs (push) Waiting to run
CLI Tests / test-cli (push) Has been cancelled
Security Scanning / security-scan (push) Has been cancelled
Integration Tests / test-service-integration (push) Has been cancelled
Python Tests / test-python (push) Has been cancelled
- Updated marketplace commands: `marketplace --action` → `market` subcommands - Updated wallet commands: direct flags → `wallet` subcommands - Updated AI commands: `ai-submit`, `ai-status` → `ai submit`, `ai status` - Updated blockchain commands: `chain` → `blockchain info` - Standardized command structure across all workflow files - Affected files: MULTI_NODE_MASTER_INDEX.md, TEST_MASTER_INDEX.md, multi-node-blockchain-marketplace
This commit is contained in:
@@ -5,6 +5,7 @@ Enhanced conftest for pytest with AITBC CLI support and comprehensive test cover
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
from unittest.mock import Mock
|
||||
from click.testing import CliRunner
|
||||
@@ -149,9 +150,19 @@ def pytest_collection_modifyitems(config, items):
|
||||
@pytest.fixture
|
||||
def aitbc_cli_runner():
|
||||
"""Create AITBC CLI runner with test configuration"""
|
||||
from aitbc_cli.main import cli
|
||||
|
||||
runner = CliRunner()
|
||||
cli_path = project_root / "aitbc-cli"
|
||||
|
||||
def runner(*args, env=None, cwd=None):
|
||||
merged_env = os.environ.copy()
|
||||
if env:
|
||||
merged_env.update(env)
|
||||
return subprocess.run(
|
||||
[str(cli_path), *args],
|
||||
capture_output=True,
|
||||
text=True,
|
||||
cwd=str(cwd or project_root),
|
||||
env=merged_env,
|
||||
)
|
||||
|
||||
# Default test configuration
|
||||
default_config = {
|
||||
|
||||
@@ -3,34 +3,33 @@
|
||||
|
||||
echo "=== AITBC Integration Tests ==="
|
||||
|
||||
# Set Python path
|
||||
PYTHON_CMD="/opt/aitbc/venv/bin/python"
|
||||
CLI_CMD="/opt/aitbc/aitbc-cli"
|
||||
|
||||
# Test 1: Basic connectivity
|
||||
echo "1. Testing connectivity..."
|
||||
curl -s http://localhost:8006/rpc/head >/dev/null && echo "✅ RPC accessible" || echo "❌ RPC failed"
|
||||
ssh -i ~/.ssh/id_ed25519_aitbc -o StrictHostKeyChecking=no root@aitbc1 'curl -s http://localhost:8006/rpc/head' >/dev/null && echo "✅ Remote RPC accessible" || echo "❌ Remote RPC failed"
|
||||
ssh -i ~/.ssh/id_ed25519_aitbc -o StrictHostKeyChecking=no root@aitbc1 'curl -s http://localhost:8007/rpc/head' >/dev/null && echo "✅ Remote RPC accessible" || echo "❌ Remote RPC failed"
|
||||
|
||||
# Test 2: Wallet operations
|
||||
echo "2. Testing wallet operations..."
|
||||
$PYTHON_CMD /opt/aitbc/cli/simple_wallet.py list >/dev/null && echo "✅ Wallet list works" || echo "❌ Wallet list failed"
|
||||
$CLI_CMD wallet list >/dev/null && echo "✅ Wallet list works" || echo "❌ Wallet list failed"
|
||||
|
||||
# Test 3: Transaction operations
|
||||
echo "3. Testing transactions..."
|
||||
# Create test wallet
|
||||
$PYTHON_CMD /opt/aitbc/cli/simple_wallet.py create --name test-integration --password-file /var/lib/aitbc/keystore/.password >/dev/null && echo "✅ Wallet creation works" || echo "❌ Wallet creation failed"
|
||||
$CLI_CMD wallet create test-integration --password-file /var/lib/aitbc/keystore/.password >/dev/null && echo "✅ Wallet creation works" || echo "❌ Wallet creation failed"
|
||||
|
||||
# Test 4: Blockchain operations
|
||||
echo "4. Testing blockchain operations..."
|
||||
$PYTHON_CMD /opt/aitbc/cli/simple_wallet.py chain >/dev/null && echo "✅ Chain info works" || echo "❌ Chain info failed"
|
||||
$CLI_CMD blockchain info >/dev/null && echo "✅ Chain info works" || echo "❌ Chain info failed"
|
||||
|
||||
# Test 5: Enterprise CLI operations
|
||||
echo "5. Testing enterprise CLI operations..."
|
||||
$PYTHON_CMD /opt/aitbc/cli/enterprise_cli.py market list >/dev/null && echo "✅ Enterprise CLI works" || echo "❌ Enterprise CLI failed"
|
||||
$CLI_CMD market list >/dev/null && echo "✅ Marketplace CLI works" || echo "❌ Marketplace CLI failed"
|
||||
|
||||
# Test 6: Mining operations
|
||||
echo "6. Testing mining operations..."
|
||||
$PYTHON_CMD /opt/aitbc/cli/enterprise_cli.py mine status >/dev/null && echo "✅ Mining operations work" || echo "❌ Mining operations failed"
|
||||
$CLI_CMD mining status >/dev/null && echo "✅ Mining operations work" || echo "❌ Mining operations failed"
|
||||
|
||||
# Test 7: AI services
|
||||
echo "7. Testing AI services..."
|
||||
|
||||
188
tests/production/test_error_handling.py
Normal file
188
tests/production/test_error_handling.py
Normal file
@@ -0,0 +1,188 @@
|
||||
"""
|
||||
Test error handling improvements in AITBC services
|
||||
"""
|
||||
|
||||
import pytest
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
|
||||
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(
|
||||
["/opt/aitbc/aitbc-cli", "--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(
|
||||
["/opt/aitbc/aitbc-cli", "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(
|
||||
["/opt/aitbc/aitbc-cli", "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(
|
||||
["/opt/aitbc/aitbc-cli", "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(
|
||||
["/opt/aitbc/aitbc-cli", "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(
|
||||
["/opt/aitbc/aitbc-cli", "market", "list"],
|
||||
capture_output=True,
|
||||
text=True
|
||||
)
|
||||
assert result.returncode == 0
|
||||
assert "Marketplace list" in result.stdout
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pytest.main([__file__, "-v"])
|
||||
Reference in New Issue
Block a user