blob: e133ce7a87839e5cbe04223b969144b1e3ff55b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#!/bin/bash
#
# Create and verify a Raft consensus simulation for DS-Sim
#
echo "=== DS-Sim Raft Simulation Creator ==="
echo
# Check if we're in the right directory
if [ ! -f "pom.xml" ]; then
echo "Error: Must be run from the DS-Sim root directory"
exit 1
fi
# Check if the application is built
if [ ! -f "target/ds-sim-1.0.1-SNAPSHOT.jar" ]; then
echo "Error: Application not built. Run 'mvn clean package' first"
exit 1
fi
# Create the raft.dat file from template
if [ -f "saved-simulations/ping-pong.dat" ]; then
cp "saved-simulations/ping-pong.dat" "saved-simulations/raft.dat"
echo "✓ Created saved-simulations/raft.dat from template"
else
echo "✗ Error: Could not find ping-pong.dat template"
exit 1
fi
# Create a verification script
cat > verify-raft.sh << 'EOF'
#!/bin/bash
echo "Verifying Raft simulation..."
if [ -f "saved-simulations/raft.dat" ]; then
echo "✓ raft.dat exists"
ls -lh saved-simulations/raft.dat
else
echo "✗ raft.dat not found"
fi
EOF
chmod +x verify-raft.sh
echo
echo "=== MANUAL STEPS REQUIRED ==="
echo
echo "The raft.dat file has been created but needs manual configuration."
echo "Please follow these steps:"
echo
echo "1. Start DS-Sim:"
echo " java -jar target/ds-sim-1.0.1-SNAPSHOT.jar"
echo
echo "2. Open the template:"
echo " File → Open → saved-simulations/raft.dat"
echo
echo "3. Configure for Raft (IMPORTANT - do all steps):"
echo " a) Delete existing protocol events in the task list"
echo " b) Right-click Process 1 → Protocols → Raft Consensus Algorithm → Server"
echo " c) Right-click Process 2 → Protocols → Raft Consensus Algorithm → Server"
echo " d) Right-click Process 3 → Protocols → Raft Consensus Algorithm → Server"
echo
echo "4. Save the file:"
echo " File → Save"
echo
echo "5. Test the simulation:"
echo " Click the Play button to see leader election"
echo
echo "=== EXPECTED BEHAVIOR ==="
echo "- All nodes start as FOLLOWERS"
echo "- First node to timeout (150-300ms) becomes CANDIDATE"
echo "- CANDIDATE requests votes from other nodes"
echo "- Node with majority votes becomes LEADER (highlighted)"
echo "- LEADER sends heartbeats every 50ms"
echo
echo "To verify after configuration: ./verify-raft.sh"
|