43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
echo "Running CosmicLedger MVP tests (Python)"
|
|
|
|
# Ensure Python packaging can build (as per requirements)
|
|
python3 -m build >/tmp/build.log 2>&1 || { echo "Build failed. See /tmp/build.log"; tail -n +1 /tmp/build.log; exit 1; }
|
|
|
|
# Run a minimal cross-node delta replication test using the Python library
|
|
python3 - << 'PY'
|
|
from cosmic_ledger.ledger import LocalLedger
|
|
import os
|
|
|
|
key = b'shared-secret-for-test-1234567890'
|
|
nodeA = LocalLedger(signer_key=key, node_id='nodeA')
|
|
nodeB = LocalLedger(signer_key=key, node_id='nodeB')
|
|
|
|
nodeA.register_contract('Telemetry', {'fields': ['id','ts','source','type','payload']}, version=1)
|
|
|
|
# Node A creates a few entries
|
|
nodeA.add_entry('Telemetry', {'id':'t1','ts':1.0,'source':'rover-1','type':'temp','payload':'22C'}, signer_name='rover-1')
|
|
nodeA.add_entry('Telemetry', {'id':'t2','ts':2.0,'source':'rover-1','type':'temp','payload':'23C'}, signer_name='rover-1')
|
|
|
|
rootA = nodeA.root()
|
|
print('NodeA root:', rootA)
|
|
|
|
# Export delta from A
|
|
delta = nodeA.export_delta(0)
|
|
print('Delta size:', len(delta))
|
|
|
|
# B imports delta
|
|
nodeB.import_delta(delta)
|
|
|
|
rootB = nodeB.root()
|
|
print('NodeB root after import:', rootB)
|
|
|
|
assert len(nodeA) == len(nodeB), 'Node counts should match after replication'
|
|
assert rootA == rootB, 'Merkle roots should match after replication'
|
|
|
|
print('Delta replication test passed')
|
|
PY
|
|
|
|
echo "Tests completed."
|