Merge "SPEC-3764: add screenshoot test"
[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         echo "Marker ('Usable area:') not found. Dumping log."
39         echo "##################################"
40         cat /run/platform/display/compositor.log
41         echo "##################################"
42         exit 127
43         #echo "CONTINUING ANYWAY !"
44 fi
45
46 AGL_SCREENSHOOTER=/usr/bin/agl-screenshooter
47
48 if [ -z "$AGL_SCREENSHOOTER" ]; then
49         echo "Failed to find agl-screenshooter. Compositor too old?"
50         exit 127
51 fi
52
53 #echo "Found agl-screenshoooter in $AGL_SCREENSHOOTER"
54 rm -rf agl-screenshot-*.png
55
56 if $AGL_SCREENSHOOTER; then
57         echo "Screenshot taken"
58 else
59         echo "##################################"
60         cat /run/platform/display/compositor.log
61         echo "##################################"
62         exit 127
63 fi
64
65 REF_IMAGE_SHA1SUM=`sha1sum ${REF_IMAGE} | awk -F ' ' '{print $1}'`
66 IMAGE_SHA1SUM=`sha1sum agl-screenshot-*.png | awk -F ' ' '{print $1}'`
67
68 if [ "${REF_IMAGE_SHA1SUM}" == "${IMAGE_SHA1SUM}" ]; then
69         echo "Screenshot matches the reference image"
70         FINALRET=0
71 else
72         echo "Screenshot does not match the reference image"
73         FINALRET=127
74         for i in agl-screenshot-*.png ; do
75                 #set +x
76                 echo "################################################################"
77                 ( curl --upload-file "$i" https://transfer.sh/$(basename "$i") && echo "" ) || true
78                 echo "################################################################"
79                 #set -x
80         done
81         echo "#########################"
82         cat /run/platform/display/*.log
83         echo "#########################"
84         journalctl -b --no-pager -a
85         echo "#########################"
86 fi
87
88
89 # cleanup
90 sed -i '/activate-by-default=false/d' /etc/xdg/weston/weston.ini
91 sed -i '/hide-cursor=true/d' /etc/xdg/weston/weston.ini
92 #rm -rf /etc/systemd/system/weston@.service.d
93 rm -rf /etc/afm/unit.env.d/screenshot
94 systemctl daemon-reload
95 sync
96 sleep 2
97 systemctl restart weston@display.service
98 sleep 10
99
100 exit $FINALRET