```
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 ```
This commit is contained in:
109
cli/test_workflow.py
Executable file
109
cli/test_workflow.py
Executable file
@@ -0,0 +1,109 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user