Use full path to reference image
[src/qa-testdefinitions.git] / common / scripts / agl-screenshot-test.sh
index 099b69e..cb28c05 100755 (executable)
@@ -2,10 +2,25 @@
 
 set -x
 
-XDG_RUNTIME_DIR=/run/user/200
+export TERM=dumb
+export COLUMNS=1000
+
+SCRIPTDIR=`dirname $(readlink -f $0)`
+XDG_RUNTIME_DIR=/run/user/1001
+AGLDRIVER=agl-driver
+
+if [ -z $1 ] ; then
+    echo "No reference image passed"
+    exit 125
+fi
+
+REF_IMAGE=`readlink -f $1`
+
+# go to output directory
+cd /home/$AGLDRIVER
+
 
 
-REF_IMAGE="$1"
 
 if [ -z "${REF_IMAGE}" ]; then
        echo "No reference image passed"
@@ -24,14 +39,20 @@ 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
+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
 
-# restart weston@display
-systemctl restart weston.service
+# 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)."
@@ -68,18 +89,29 @@ fi
 
 AGL_SCREENSHOOTER=/usr/bin/agl-screenshooter
 
+
+#su - $AGLDRIVER -c "..."
+do_screenshot()
+{
+       su - $AGLDRIVER -c "XDG_RUNTIME_DIR=/run/user/1001 $AGL_SCREENSHOOTER -a"
+       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 agl-screenshot-*.png
+rm -rf /home/agl-driver/agl-screenshot-*.png
 
 # give it a bit more time to display
-sleep 60
+#sleep 60
 
-if $AGL_SCREENSHOOTER; then
+su - $AGLDRIVER -c "XDG_RUNTIME_DIR=/run/user/1001 $AGL_SCREENSHOOTER -l"
+
+if do_screenshot ; then
        echo "Screenshot taken"
 else
        echo "##################################"
@@ -88,29 +120,40 @@ else
        exit 127
 fi
 
+ls agl-screenshot*
+
 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=1
+
+
+for SCREENSHOT in agl-screenshot-*.png ; do
+    IMAGE_SHA1SUM=`sha1sum $SCREENSHOT | awk -F ' ' '{print $1}'`
+
+    if [ "${REF_IMAGE_SHA1SUM}" == "${IMAGE_SHA1SUM}" ]; then
+       echo "A Screenshot matches the reference image"
        FINALRET=0
-else
-       echo "Screenshot does not match the reference image"
+       break
+    else
+       echo "A 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
+    fi
 
+done
+
+if [ $FINALRET != 0 ] ; then
+    for i in agl-screenshot-*.png ; do
+       ${SCRIPTDIR}/./artiproxy-upload.sh $i "$i"
+    done
+    journalctl -b --no-pager -a > journal.txt
+    ${SCRIPTDIR}/./artiproxy-upload.sh journal.txt journal.txt
+
+    echo "#########################"
+    cat /run/platform/display/*.log
+    echo "#########################"
+    set
+    echo "#########################"
+fi
 
 # cleanup
 sed -i '/activate-by-default=false/d' /etc/xdg/weston/weston.ini
@@ -120,7 +163,8 @@ rm -rf /etc/default/homescreen
 systemctl daemon-reload
 sync
 sleep 2
-systemctl restart weston.service
+systemctl restart agl-session@agl-driver.service
+
 sleep 10
 
 exit $FINALRET