Files
aitbc/cli/tests/integration/test_workflow.py
oib ccedbace53 chore: remove configuration files and enhance blockchain explorer with advanced search, analytics, and export features
- Delete .aitbc.yaml.example CLI configuration template
- Delete .lycheeignore link checker exclusion rules
- Delete .nvmrc Node.js version specification
- Add advanced search panel with filters for address, amount range, transaction type, time range, and validator
- Add analytics dashboard with transaction volume, active addresses, and block time metrics
- Add Chart.js integration
2026-03-02 15:38:25 +01:00

110 lines
3.0 KiB
Python
Executable File

#!/usr/bin/env python3
"""
Complete AITBC workflow test - Client submits job, miner processes it, earns AITBC
"""
import subprocess
import time
import sys
import os
def run_command(cmd, description):
"""Run a CLI command and display results"""
print(f"\n{'='*60}")
print(f"🔧 {description}")
print(f"{'='*60}")
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
print(result.stdout)
if result.stderr:
print(f"Errors: {result.stderr}")
return result.returncode == 0
def main():
print("🚀 AITBC Complete Workflow Test")
print("=" * 60)
# Get the directory of this script
cli_dir = os.path.dirname(os.path.abspath(__file__))
# 1. Check current blocks
run_command(
f"python3 {cli_dir}/client.py blocks --limit 3",
"Checking current blocks"
)
# 2. Register miner
run_command(
f"python3 {cli_dir}/miner.py register --gpu RTX 4090 --memory 24",
"Registering miner"
)
# 3. Submit a job from client
run_command(
f"python3 {cli_dir}/client.py submit inference --model llama-2-7b --prompt 'What is blockchain?'",
"Client submitting inference job"
)
# 4. Miner polls for and processes the job
print(f"\n{'='*60}")
print("⛏️ Miner polling for job (will wait up to 10 seconds)...")
print(f"{'='*60}")
# Run miner in poll mode repeatedly
for i in range(5):
result = subprocess.run(
f"python3 {cli_dir}/miner.py poll --wait 2",
shell=True,
capture_output=True,
text=True
)
print(result.stdout)
if "job_id" in result.stdout:
print("✅ Job found! Processing...")
time.sleep(2)
break
if i < 4:
print("💤 No job yet, trying again...")
time.sleep(2)
# 5. Check updated blocks
run_command(
f"python3 {cli_dir}/client.py blocks --limit 3",
"Checking updated blocks (should show proposer)"
)
# 6. Check wallet
run_command(
f"python3 {cli_dir}/wallet.py balance",
"Checking wallet balance"
)
# Add earnings manually (in real system, this would be automatic)
run_command(
f"python3 {cli_dir}/wallet.py earn 10.0 --job demo-job-123 --desc 'Inference task completed'",
"Adding earnings to wallet"
)
# 7. Final wallet status
run_command(
f"python3 {cli_dir}/wallet.py history",
"Showing transaction history"
)
print(f"\n{'='*60}")
print("✅ Workflow test complete!")
print("💡 Tips:")
print(" - Use 'python3 cli/client.py --help' for client commands")
print(" - Use 'python3 cli/miner.py --help' for miner commands")
print(" - Use 'python3 cli/wallet.py --help' for wallet commands")
print(" - Run 'python3 cli/miner.py mine' for continuous mining")
print(f"{'='*60}")
if __name__ == "__main__":
main()