Generally functional. Added upload script

This commit is contained in:
Your Name
2025-12-17 09:43:21 -04:00
parent c76f10491a
commit 59b09e7ac9
19 changed files with 2994 additions and 0 deletions

140
tests/test_delays.sh Executable file
View File

@@ -0,0 +1,140 @@
#!/bin/bash
# Test SUP-04: Delay and Jitter Verification
# Tests: Timing requirements and jitter application
set -e
TEST_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$TEST_DIR/helpers/timing_utils.sh"
source "$TEST_DIR/helpers/event_utils.sh"
# Load test configuration
KEYS_FILE="$TEST_DIR/fixtures/test_keys.json"
RELAYS_FILE="$TEST_DIR/fixtures/test_relays.json"
# Extract keys
BUILDER_PRIVKEY=$(jq -r '.builder.privkey' "$KEYS_FILE")
THROWER_A_PUBKEY=$(jq -r '.thrower_a.pubkey' "$KEYS_FILE")
# Extract relays
THROWER_RELAY=$(jq -r '.test_scenarios.single_hop.thrower_relay' "$RELAYS_FILE")
FINAL_RELAY=$(jq -r '.test_scenarios.single_hop.final_relay' "$RELAYS_FILE")
echo "=== SUP-04: Delay and Jitter Test ==="
echo "Testing multiple delay values with jitter verification"
echo ""
# Test different delay values
DELAY_VALUES=(0 2 2 2 2)
AUDIT_TAG_BASE="test-delays-$(date +%s)"
PASSED=0
FAILED=0
for DELAY in "${DELAY_VALUES[@]}"; do
echo "----------------------------------------"
echo "Test Case: ${DELAY}s delay"
echo "----------------------------------------"
AUDIT_TAG="${AUDIT_TAG_BASE}-${DELAY}"
TEST_CONTENT="Delay test ${DELAY}s at $(date +%s)"
# Create and publish event
INNER_EVENT=$(create_test_event "$BUILDER_PRIVKEY" "$TEST_CONTENT")
INNER_EVENT_ID=$(echo "$INNER_EVENT" | jq -r '.id')
ROUTING_PAYLOAD=$(create_routing_payload "$INNER_EVENT" "$FINAL_RELAY" "$DELAY" "null" "$AUDIT_TAG")
ENCRYPTED_CONTENT=$(encrypt_payload "$BUILDER_PRIVKEY" "$THROWER_A_PUBKEY" "$ROUTING_PAYLOAD")
ROUTING_EVENT=$(create_routing_event "$BUILDER_PRIVKEY" "$THROWER_A_PUBKEY" "$ENCRYPTED_CONTENT")
echo "Publishing event with ${DELAY}s delay..."
PUBLISH_TIME=$(get_timestamp)
publish_event "$ROUTING_EVENT" "$THROWER_RELAY" > /dev/null 2>&1
# Monitor for arrival
TIMEOUT=$((DELAY + 30))
FOUND=false
START_MONITOR=$(get_timestamp)
while [ $(($(get_timestamp) - START_MONITOR)) -lt $TIMEOUT ]; do
if query_event "$INNER_EVENT_ID" "$FINAL_RELAY" 2 2>/dev/null | grep -q "$INNER_EVENT_ID"; then
ARRIVAL_TIME=$(get_timestamp)
FOUND=true
break
fi
sleep 1
done
if [ "$FOUND" = false ]; then
echo "✗ FAILED: Event not found within ${TIMEOUT}s"
((FAILED++))
echo ""
continue
fi
# Calculate actual delay
ACTUAL_DELAY=$((ARRIVAL_TIME - PUBLISH_TIME))
# Verify minimum delay
if [ $ACTUAL_DELAY -lt $DELAY ]; then
echo "✗ FAILED: Event arrived too early"
echo " Expected: >= ${DELAY}s"
echo " Actual: ${ACTUAL_DELAY}s"
((FAILED++))
echo ""
continue
fi
# Calculate jitter
if [ $DELAY -gt 0 ]; then
JITTER_PCT=$(calculate_jitter "$DELAY" "$ACTUAL_DELAY")
echo "Actual delay: ${ACTUAL_DELAY}s (jitter: ${JITTER_PCT}%)"
# Verify jitter is reasonable (within 50% for testing)
if [ $JITTER_PCT -gt 50 ]; then
echo "⚠ WARNING: High jitter (${JITTER_PCT}% > 50%)"
fi
else
echo "Actual delay: ${ACTUAL_DELAY}s (0s delay + processing time)"
fi
# Verify content
FINAL_EVENT=$(query_event "$INNER_EVENT_ID" "$FINAL_RELAY" 5 2>/dev/null)
FINAL_CONTENT=$(echo "$FINAL_EVENT" | jq -r '.content')
if [ "$FINAL_CONTENT" != "$TEST_CONTENT" ]; then
echo "✗ FAILED: Content mismatch"
((FAILED++))
echo ""
continue
fi
echo "✓ PASSED: Delay constraint respected, content verified"
((PASSED++))
echo ""
# Small delay between tests
sleep 2
done
echo "========================================"
echo "Delay Test Summary"
echo "========================================"
echo "Passed: $PASSED / ${#DELAY_VALUES[@]}"
echo "Failed: $FAILED / ${#DELAY_VALUES[@]}"
echo ""
if [ $FAILED -gt 0 ]; then
echo "=== TEST FAILED ==="
exit 1
fi
echo "=== TEST PASSED ==="
echo "✓ All delay values tested successfully"
echo "✓ Minimum delay constraints respected"
echo "✓ Jitter applied appropriately"
echo "✓ Content preserved across all tests"
echo ""
exit 0