8005e5f9da1626990ef1d348fc1eaa65590d9158
[src/qa-testdefinitions.git] / common / scripts / agl-screenshot-test.sh
1 #!/bin/bash
2
3 #set -x
4
5 REF_IMAGE="$1"
6
7 if [ -z "${REF_IMAGE}" ]; then
8         echo "No reference image passed"
9         exit 125
10 fi
11
12 if [ ! -f "${REF_IMAGE}" ]; then
13         echo "Reference image is not found"
14         exit 125
15 fi
16
17 # Enable the test picture and disable cursor and any other application from being displayed
18 sed -i '/^\[core\]/a activate-by-default=false' /etc/xdg/weston/weston.ini
19 # setup homescreen env variable
20 sed -i '/^\[core\]/a hide-cursor=true' /etc/xdg/weston/weston.ini
21 # enable red/green/blue test screen
22 echo 'HOMESCREEN_DEMO_CI=1' > /etc/afm/unit.env.d/screenshot
23 sync
24 systemctl daemon-reload
25 sleep 2
26 # restart weston@display
27 systemctl restart weston@display.service
28 # e.g. qemu-system-arm takes loooong
29 sleep 60
30 echo "Waiting for compositor to initialize (+60sec)."
31
32 if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
33 # e.g. qemu-system-arm takes loooong
34         echo "Waiting for compositor to initialize (+60sec)."
35         sleep 60
36 fi
37 if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
38 # e.g. qemu-system-arm takes loooong
39         echo "Waiting for compositor to initialize (+120sec)."
40         sleep 120
41 fi
42
43 if ! grep -q 'Usable area:' /run/platform/display/compositor.log ; then
44         echo "Marker ('Usable area:') not found. Dumping log."
45         echo "##################################"
46         cat /run/platform/display/compositor.log
47         echo "##################################"
48         exit 127
49         #echo "CONTINUING ANYWAY !"
50 fi
51
52 AGL_SCREENSHOOTER=/usr/bin/agl-screenshooter
53
54 if [ -z "$AGL_SCREENSHOOTER" ]; then
55         echo "Failed to find agl-screenshooter. Compositor too old?"
56         exit 127
57 fi
58
59 #echo "Found agl-screenshoooter in $AGL_SCREENSHOOTER"
60 rm -rf agl-screenshot-*.png
61
62 if $AGL_SCREENSHOOTER; then
63         echo "Screenshot taken"
64 else
65         echo "##################################"
66         cat /run/platform/display/compositor.log
67         echo "##################################"
68         exit 127
69 fi
70
71 REF_IMAGE_SHA1SUM=`sha1sum ${REF_IMAGE} | awk -F ' ' '{print $1}'`
72 IMAGE_SHA1SUM=`sha1sum agl-screenshot-*.png | awk -F ' ' '{print $1}'`
73
74 if [ "${REF_IMAGE_SHA1SUM}" == "${IMAGE_SHA1SUM}" ]; then
75         echo "Screenshot matches the reference image"
76         FINALRET=0
77 else
78         echo "Screenshot does not match the reference image"
79         FINALRET=127
80         for i in agl-screenshot-*.png ; do
81                 #set +x
82                 echo "################################################################"
83                 ( curl --upload-file "$i" https://transfer.sh/$(basename "$i") && echo "" ) || true
84                 echo "################################################################"
85                 #set -x
86         done
87         echo "#########################"
88         cat /run/platform/display/*.log
89         echo "#########################"
90         journalctl -b --no-pager -a
91         echo "#########################"
92 fi
93
94
95 # cleanup
96 sed -i '/activate-by-default=false/d' /etc/xdg/weston/weston.ini
97 sed -i '/hide-cursor=true/d' /etc/xdg/weston/weston.ini
98 #rm -rf /etc/systemd/system/weston@.service.d
99 rm -rf /etc/afm/unit.env.d/screenshot
100 systemctl daemon-reload
101 sync
102 sleep 2
103 systemctl restart weston@display.service
104 sleep 10
105
106 exit $FINALRET