blob: 7cbc23c0e4c07cc1ebac29d4aeafb892b836890c (
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
#!/bin/bash
set -x
export TERM=dumb
export COLUMNS=1000
XDG_RUNTIME_DIR=/run/user/1001
AGLDRIVER=agl-driver
REF_IMAGE="$1"
if [ -z "${REF_IMAGE}" ]; then
echo "No reference image passed"
exit 125
fi
if [ ! -f "${REF_IMAGE}" ]; then
echo "Reference image is not found"
exit 125
fi
# Enable the test picture and disable cursor and any other application from being displayed
sed -i '/^\[core\]/a activate-by-default=false' /etc/xdg/weston/weston.ini
# setup homescreen env variable
sed -i '/^\[core\]/a hide-cursor=true' /etc/xdg/weston/weston.ini
# enable red/green/blue test screen
echo 'HOMESCREEN_DEMO_CI=1' > /etc/default/homescreen
sync
systemctl daemon-reload || true
su - agl-driver -c 'export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1001/bus" ; systemctl --user daemon-reload' || true
sleep 2
# create initial journal cursor file
journalctl /usr/bin/agl-compositor --cursor-file=/tmp/agl-screenshot-cursor > /tmp/first-log 2>&1
# stop homescreen (shell) and launcher
su $AGLDRIVER -c 'XDG_RUNTIME_DIR=/run/user/1001/ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus systemctl --user stop homescreen'
su $AGLDRIVER -c 'XDG_RUNTIME_DIR=/run/user/1001/ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus systemctl --user stop launcher'
# restart agl-compositor
su $AGLDRIVER -c 'XDG_RUNTIME_DIR=/run/user/1001/ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus systemctl --user restart agl-compositor'
su $AGLDRIVER -c 'XDG_RUNTIME_DIR=/run/user/1001/ DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1001/bus systemctl --user start homescreen'
# e.g. qemu-system-arm takes loooong
sleep 10
echo "Waiting for compositor to initialize (+10sec)."
LOOP=20
while test $LOOP -ge 1 ; do
( mv /tmp/next-log /tmp/prev-log > /dev/null 2>&1 ) || true
journalctl /usr/bin/agl-compositor --cursor-file=/tmp/agl-screenshot-cursor > /tmp/next-log 2>&1
if ! grep -q 'Usable area:' /tmp/next-log ; then
# e.g. qemu-system-arm takes loooong
echo "Waiting for compositor to initialize (+60sec). Loop: $LOOP"
sleep 60
LOOP="$(($LOOP-1))"
continue
fi
break
done
#read aw
# giving up now
if ! grep -q 'Usable area:' /tmp/next-log ; then
echo "Marker ('Usable area:') not found. Dumping log."
echo "##################################"
cat /tmp/first-log
cat /tmp/prev-log
cat /tmp/next-log
echo "##################################"
exit 127
#echo "CONTINUING ANYWAY !"
fi
AGL_SCREENSHOOTER=/usr/bin/agl-screenshooter
#su - $AGLDRIVER -c "..."
do_screenshot()
{
su - $AGLDRIVER -c "XDG_RUNTIME_DIR=/run/user/1001 $AGL_SCREENSHOOTER"
return $?
}
if [ -z "$AGL_SCREENSHOOTER" ]; then
echo "Failed to find agl-screenshooter. Compositor too old?"
exit 127
fi
#echo "Found agl-screenshoooter in $AGL_SCREENSHOOTER"
rm -rf /home/agl-driver/agl-screenshot-*.png
# give it a bit more time to display
#sleep 60
if do_screenshot ; then
echo "Screenshot taken"
else
echo "##################################"
journalctl --no-pager -a -b /usr/bin/agl-compositor
echo "##################################"
exit 127
fi
REF_IMAGE_SHA1SUM=`sha1sum ${REF_IMAGE} | awk -F ' ' '{print $1}'`
IMAGE_SHA1SUM=`sha1sum /home/agl-driver/agl-screenshot-*.png | awk -F ' ' '{print $1}'`
if [ "${REF_IMAGE_SHA1SUM}" == "${IMAGE_SHA1SUM}" ]; then
echo "Screenshot matches the reference image"
FINALRET=0
else
echo "Screenshot does not match the reference image"
FINALRET=127
for i in /home/agl-driver/agl-screenshot-*.png ; do
if [ -x ./artiproxy-upload.sh ];then
./artiproxy-upload.sh $i $(basename $i)
fi
done
echo "#########################"
journalctl -t agl-compositor
echo "#########################"
journalctl -b --no-pager -a
echo "#########################"
fi
# cleanup
sed -i '/activate-by-default=false/d' /etc/xdg/weston/weston.ini
sed -i '/hide-cursor=true/d' /etc/xdg/weston/weston.ini
#rm -rf /etc/systemd/system/weston@.service.d
rm -rf /etc/default/homescreen
systemctl daemon-reload
sync
sleep 2
systemctl restart agl-session@agl-driver.service
sleep 10
exit $FINALRET
|