Files
aitbc/tests/verification/test_tx_import.py
aitbc 8d82b1d01d
Some checks failed
Cross-Node Transaction Testing / transaction-test (push) Successful in 4s
Deploy to Testnet / deploy-testnet (push) Successful in 1m23s
Multi-Node Stress Testing / stress-test (push) Successful in 7s
Node Failover Simulation / failover-test (push) Successful in 13s
Python Tests / test-python (push) Has been cancelled
fix: add missing imports and enable asyncio_mode for pytest
- Add import requests to test_block_import.py, test_minimal.py, test_simple_import.py, test_tx_import.py
- Add -o asyncio_mode=auto to pytest command to enable pytest-asyncio
- Fixes NameError and async function not supported errors in python-tests.yml
2026-05-05 17:16:12 +02:00

80 lines
2.2 KiB
Python

#!/usr/bin/env python3
"""
Test transaction import specifically
"""
import json
import hashlib
import requests
from aitbc import AITBCHTTPClient, NetworkError
BASE_URL = "https://aitbc.bubuit.net/rpc"
CHAIN_ID = "ait-mainnet"
def compute_block_hash(height, parent_hash, timestamp):
"""Compute block hash using the same algorithm as PoA proposer"""
payload = f"{CHAIN_ID}|{height}|{parent_hash}|{timestamp}".encode()
return "0x" + hashlib.sha256(payload).hexdigest()
def test_transaction_import():
"""Test importing a block with a single transaction"""
print("Testing Transaction Import")
print("=" * 40)
# Get current head
client = AITBCHTTPClient()
head = client.get(f"{BASE_URL}/head")
print(f"Current head: height={head['height']}")
# Create a new block with one transaction
height = head["height"] + 1
parent_hash = head["hash"]
timestamp = "2026-01-29T10:20:00"
block_hash = compute_block_hash(height, parent_hash, timestamp)
test_block = {
"height": height,
"hash": block_hash,
"parent_hash": parent_hash,
"proposer": "test-proposer",
"timestamp": timestamp,
"tx_count": 1,
"chain_id": CHAIN_ID,
"transactions": [{
"tx_hash": "0xtx123456789",
"sender": "0xsender123",
"recipient": "0xreceiver456",
"payload": {"to": "0xreceiver456", "amount": 1000000}
}]
}
print(f"\nTest block data:")
print(json.dumps(test_block, indent=2))
# Import the block
response = requests.post(
f"{BASE_URL}/importBlock",
json=test_block
)
print(f"\nImport response:")
print(f" Status: {response.status_code}")
print(f" Body: {response.json()}")
# Check logs
print("\nChecking recent logs...")
import subprocess
result = subprocess.run(
["ssh", "aitbc-cascade", "journalctl -u blockchain-node --since '30 seconds ago' | grep 'Importing transaction' | tail -1"],
capture_output=True,
text=True
)
if result.stdout:
print(f"Log: {result.stdout.strip()}")
else:
print("No transaction import logs found")
if __name__ == "__main__":
test_transaction_import()