From 36bfc4c76c9c1f44c3232baa6d8576db8bc488d2 Mon Sep 17 00:00:00 2001 From: Corentin LABBE Date: Fri, 15 Jan 2021 12:47:16 +0000 Subject: SPEC-3764: add screenshoot test Add basic screenshooter test. Change-Id: I8be9c6b4f621dc757c7e8ab846384c0fb32561df Bug-AGL: SPEC-3764 Signed-off-by: Corentin LABBE --- common/scripts/agl-screenshot-test.sh | 100 +++++++++++++++++++++++++++++ reference-images/reference-image.png | Bin 0 -> 8602 bytes test-suites/short-smoke/screenshooter.yaml | 9 +++ 3 files changed, 109 insertions(+) create mode 100755 common/scripts/agl-screenshot-test.sh create mode 100644 reference-images/reference-image.png create mode 100644 test-suites/short-smoke/screenshooter.yaml diff --git a/common/scripts/agl-screenshot-test.sh b/common/scripts/agl-screenshot-test.sh new file mode 100755 index 0000000..b9d934f --- /dev/null +++ b/common/scripts/agl-screenshot-test.sh @@ -0,0 +1,100 @@ +#!/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 + 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 diff --git a/reference-images/reference-image.png b/reference-images/reference-image.png new file mode 100644 index 0000000..d6579e0 Binary files /dev/null and b/reference-images/reference-image.png differ diff --git a/test-suites/short-smoke/screenshooter.yaml b/test-suites/short-smoke/screenshooter.yaml new file mode 100644 index 0000000..d0dd25a --- /dev/null +++ b/test-suites/short-smoke/screenshooter.yaml @@ -0,0 +1,9 @@ +metadata: + name: Screenshooter Test + format: "Lava-Test-Shell Test Definition 1.0" + description: "Take screenshoot and check it" + version: 1.0 +run: + steps: + - chmod +x ./common/scripts/agl-screenshot-test.sh + - ./common/scripts/agl-screenshot-test.sh ./reference-images/reference-image.png -- cgit 1.2.3-korg