Skip to content

Commit b52f1b3

Browse files
committed
Add diagnostics to e2e post-boot hook for CI debugging
SSH hang is fixed but a test still fails. Add verbose logging: - Verify Xvfb is actually running after launch - Check lighttpd status before starting GUI - Log start_gui output to /tmp for inspection - Print periodic diagnostics during Chromium wait loop - Show final X display window state - Remove set -e to prevent silent early exits
1 parent ee07ce5 commit b52f1b3

1 file changed

Lines changed: 42 additions & 15 deletions

File tree

testing/hooks/post-boot.sh

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,64 @@
11
#!/bin/bash
2-
set -e
32
SSH_HOST="${1:-localhost}"
43
SSH_PORT="${2:-2222}"
54

65
SSH_CMD="sshpass -p raspberry ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 -p $SSH_PORT pi@$SSH_HOST"
76

8-
echo "Installing Xvfb and configuring virtual display..."
7+
echo "Installing Xvfb and x11-apps..."
8+
$SSH_CMD "sudo apt-get update -qq && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq xvfb x11-apps 2>&1 | tail -5"
99

10-
# Install xvfb and x11-apps (for xwd screenshot capture)
11-
$SSH_CMD "sudo apt-get update -qq && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq xvfb x11-apps 2>&1 | tail -3"
12-
13-
# In QEMU virt, logind's seat0 has CanGraphical=no (no real display device),
14-
# so lightdm won't start an X session. Start Xvfb and the GUI session directly.
1510
echo "Starting Xvfb virtual display..."
16-
$SSH_CMD "sudo nohup Xvfb :0 -screen 0 1280x720x24 > /dev/null 2>&1 < /dev/null &"
17-
sleep 2
11+
$SSH_CMD "sudo nohup Xvfb :0 -screen 0 1280x720x24 > /tmp/xvfb.log 2>&1 < /dev/null &"
12+
sleep 3
13+
14+
echo "Verifying Xvfb is running..."
15+
XVFB_PID=$($SSH_CMD "pgrep -f 'Xvfb :0' || true" 2>/dev/null)
16+
if [ -z "$XVFB_PID" ]; then
17+
echo " WARNING: Xvfb not running, checking log..."
18+
$SSH_CMD "cat /tmp/xvfb.log 2>/dev/null || true" 2>/dev/null
19+
else
20+
echo " Xvfb running (pid: $XVFB_PID)"
21+
fi
22+
23+
echo "Checking lighttpd status..."
24+
$SSH_CMD "systemctl is-active lighttpd 2>/dev/null || true" 2>/dev/null
25+
$SSH_CMD "curl -s -o /dev/null -w 'HTTP %{http_code}' http://localhost/ || true" 2>/dev/null
26+
echo ""
1827

1928
echo "Starting GUI session (matchbox + chromium kiosk)..."
20-
$SSH_CMD "sudo -u pi nohup bash -c 'export DISPLAY=:0; export HOME=/home/pi; /opt/custompios/scripts/start_gui' > /dev/null 2>&1 < /dev/null &"
29+
$SSH_CMD "sudo -u pi nohup bash -c 'export DISPLAY=:0; export HOME=/home/pi; /opt/custompios/scripts/start_gui' > /tmp/start_gui.log 2>&1 < /dev/null &"
2130

22-
# Wait for Chromium to appear on the display
2331
echo "Waiting for Chromium to start..."
24-
for i in $(seq 1 30); do
32+
for i in $(seq 1 60); do
2533
PGREP=$($SSH_CMD "pgrep -f 'chromium.*--kiosk' || true" 2>/dev/null)
2634
if [ -n "$PGREP" ]; then
27-
echo " Chromium running on display (pid: $PGREP)"
35+
echo " Chromium running (pid: $PGREP) after ${i}x5s"
2836
break
2937
fi
38+
if [ "$((i % 6))" -eq 0 ]; then
39+
echo " ... still waiting (${i}x5s), diagnostics:"
40+
$SSH_CMD "pgrep -a Xvfb || echo ' Xvfb: NOT RUNNING'" 2>/dev/null || true
41+
$SSH_CMD "pgrep -a matchbox || echo ' matchbox: NOT RUNNING'" 2>/dev/null || true
42+
$SSH_CMD "pgrep -a chromium || echo ' chromium: NOT RUNNING'" 2>/dev/null || true
43+
$SSH_CMD "tail -5 /tmp/start_gui.log 2>/dev/null || true" 2>/dev/null || true
44+
fi
3045
sleep 5
3146
done
3247

33-
# Give the page time to render
34-
echo " Waiting for page to load..."
48+
if [ -z "$PGREP" ]; then
49+
echo " WARNING: Chromium did not appear after 300s"
50+
echo " start_gui log:"
51+
$SSH_CMD "cat /tmp/start_gui.log 2>/dev/null || true" 2>/dev/null || true
52+
echo " xvfb log:"
53+
$SSH_CMD "cat /tmp/xvfb.log 2>/dev/null || true" 2>/dev/null || true
54+
echo " Process list:"
55+
$SSH_CMD "ps aux | head -30" 2>/dev/null || true
56+
fi
57+
58+
echo "Waiting for page to render..."
3559
sleep 15
3660

61+
echo "Post-boot display state:"
62+
$SSH_CMD "DISPLAY=:0 xdotool search --onlyvisible --name . getwindowname 2>/dev/null || echo '(no visible windows)'" 2>/dev/null || true
63+
3764
echo "Post-boot setup complete"

0 commit comments

Comments
 (0)