chore: enhance .gitignore and remove obsolete documentation files - Reorganize .gitignore with categorized sections for better maintainability - Add comprehensive ignore patterns for Python, Node.js, databases, logs, and build artifacts - Add project-specific ignore rules for coordinator, explorer, and deployment files - Remove outdated documentation: BITCOIN-WALLET-SETUP.md, LOCAL_ASSETS_SUMMARY.md, README-CONTAINER-DEPLOYMENT.md, README-DOMAIN-DEPLOYMENT.md ```
110 lines
3.0 KiB
Python
Executable File
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()
|