summaryrefslogtreecommitdiffstats
path: root/common/scripts/agl-screenshot-test.sh
blob: d1261ba2495d3c898527e9c4e69813e40ce703ae (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
#!/bin/bash

#set -x

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/afm/unit.env.d/screenshot
sync
systemctl daemon-reload
sleep 2
# restart weston@display
systemctl restart weston@display.service
# e.g. qemu-system-arm takes loooong
sleep 60
echo "Waiting for compositor to initialize (+60sec)."

if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
# e.g. qemu-system-arm takes loooong
        echo "Waiting for compositor to initialize (+60sec)."
	sleep 60
fi
if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
        # e.g. qemu-system-arm takes loooong
        echo "Waiting for compositor to initialize (+120sec)."
        sleep 120
fi

# some take veeeeery long
if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
        # e.g. qemu-system-arm takes veeery loooong
        echo "Waiting for compositor to initialize (+240sec)."
        sleep 240
fi

# giving up now
if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
	echo "Marker ('Usable area:') not found. Dumping log."
	echo "##################################"
	cat /run/platform/display/compositor.log
	echo "##################################"
        exit 127
	#echo "CONTINUING ANYWAY !"
fi

AGL_SCREENSHOOTER=/usr/bin/agl-screenshooter

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 agl-screenshot-*.png

if $AGL_SCREENSHOOTER; then
	echo "Screenshot taken"
else
	echo "##################################"
	cat /run/platform/display/compositor.log
	echo "##################################"
	exit 127
fi

REF_IMAGE_SHA1SUM=`sha1sum ${REF_IMAGE} | awk -F ' ' '{print $1}'`
IMAGE_SHA1SUM=`sha1sum 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 agl-screenshot-*.png ; do
		#set +x
		echo "################################################################"
		( curl --upload-file "$i" https://transfer.sh/$(basename "$i") && echo "" ) || true
		echo "################################################################"
		#set -x
	done
	echo "#########################"
	cat /run/platform/display/*.log
	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/afm/unit.env.d/screenshot
systemctl daemon-reload
sync
sleep 2
systemctl restart weston@display.service
sleep 10

exit $FINALRET