cosmicledger-verifiable-off.../test.sh

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."