Files
microdao-daarion/scripts/restore/restore_test.sh
Apple ef3473db21 snapshot: NODE1 production state 2026-02-09
Complete snapshot of /opt/microdao-daarion/ from NODE1 (144.76.224.179).
This represents the actual running production code that has diverged
significantly from the previous main branch.

Key changes from old main:
- Gateway (http_api.py): expanded from ~40KB to 164KB with full agent support
- Router: new /v1/agents/{id}/infer endpoint with vision + DeepSeek routing
- Behavior Policy: SOWA v2.2 (3-level: FULL/ACK/SILENT)
- Agent Registry: config/agent_registry.yml as single source of truth
- 13 agents configured (was 3)
- Memory service integration
- CrewAI teams and roles

Excluded from snapshot: venv/, .env, data/, backups, .tgz archives

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-09 08:46:46 -08:00

100 lines
4.5 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Restore test script
# Usage: ./restore_test.sh <timestamp>
set -e
TIMESTAMP=$1
if [ -z "$TIMESTAMP" ]; then
echo "Usage: $0 <timestamp>"
exit 1
fi
BACKUP_DIR="/opt/microdao-daarion/data/backups"
METADATA="$BACKUP_DIR/backup_$TIMESTAMP.metadata.json"
if [ ! -f "$METADATA" ]; then
echo "❌ Metadata file not found: $METADATA"
exit 1
fi
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║ RESTORE TEST ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo "Backup timestamp: $TIMESTAMP"
echo ""
# Load metadata
PG_BACKUP=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['postgres']['backup_file'])" 2>/dev/null)
PG_COUNTS_ORIG=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(json.dumps(d['postgres']['counts']))" 2>/dev/null)
echo "=== 1. Postgres Restore Test ==="
if [ -f "$PG_BACKUP" ]; then
echo "Restoring to test database..."
# Create test database
docker exec dagi-postgres psql -U daarion -c "DROP DATABASE IF EXISTS daarion_test;" 2>/dev/null || true
docker exec dagi-postgres psql -U daarion -c "CREATE DATABASE daarion_test;" 2>/dev/null || true
# Restore
cat "$PG_BACKUP" | docker exec -i dagi-postgres psql -U daarion daarion_test >/dev/null 2>&1
# Verify counts
PG_COUNTS_RESTORED=$(docker exec dagi-postgres psql -U daarion -d daarion_test -t -c "
SELECT
'\"sessions\":' || COUNT(*) || ',' ||
'\"facts\":' || (SELECT COUNT(*) FROM facts) || ',' ||
'\"audit_log\":' || (SELECT COUNT(*) FROM audit_log) || ',' ||
'\"helion_mentors\":' || (SELECT COUNT(*) FROM helion_mentors)
FROM sessions;
" 2>/dev/null || echo '{"sessions":0,"facts":0,"audit_log":0,"helion_mentors":0}')
echo "Original: $PG_COUNTS_ORIG"
echo "Restored: $PG_COUNTS_RESTORED"
if [ "$PG_COUNTS_ORIG" = "$PG_COUNTS_RESTORED" ]; then
echo "✅ Postgres restore: PASSED"
else
echo "⚠️ Postgres restore: Counts differ (may be OK if data changed)"
fi
# Cleanup
docker exec dagi-postgres psql -U daarion -c "DROP DATABASE daarion_test;" 2>/dev/null || true
else
echo "⚠️ Postgres backup file not found: $PG_BACKUP"
fi
echo ""
echo "=== 2. Qdrant Restore Test ==="
QDRANT_BACKUP_DIR=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['qdrant']['backup_dir'])" 2>/dev/null)
QDRANT_COUNTS_ORIG=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(json.dumps(d['qdrant']['counts']))" 2>/dev/null)
if [ -d "$QDRANT_BACKUP_DIR" ]; then
echo "Qdrant snapshots available in: $QDRANT_BACKUP_DIR"
echo "Original counts: $QDRANT_COUNTS_ORIG"
echo "✅ Qdrant restore: Snapshot files exist (manual restore required)"
else
echo "⚠️ Qdrant backup directory not found: $QDRANT_BACKUP_DIR"
fi
echo ""
echo "=== 3. Neo4j Restore Test ==="
NEO4J_BACKUP_DIR=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['neo4j']['backup_dir'])" 2>/dev/null)
NEO4J_NODES_ORIG=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['neo4j']['nodes'])" 2>/dev/null)
NEO4J_RELS_ORIG=$(cat "$METADATA" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['neo4j']['relationships'])" 2>/dev/null)
if [ -d "$NEO4J_BACKUP_DIR" ]; then
echo "Neo4j backup available in: $NEO4J_BACKUP_DIR"
echo "Original: nodes=$NEO4J_NODES_ORIG, relationships=$NEO4J_RELS_ORIG"
echo "✅ Neo4j restore: Backup files exist (manual restore required)"
else
echo "⚠️ Neo4j backup directory not found: $NEO4J_BACKUP_DIR"
fi
echo ""
echo "═══════════════════════════════════════════════════════════════"
echo " RESTORE TEST SUMMARY"
echo "═══════════════════════════════════════════════════════════════"
echo "✅ Backup files verified"
echo "✅ Postgres restore test completed"
echo " Qdrant/Neo4j require manual restore (snapshot-based)"