Add application-lifecycle test 65/20565/4
authorCorentin LABBE <clabbe@baylibre.com>
Tue, 12 Mar 2019 13:49:29 +0000 (14:49 +0100)
committerCorentin LABBE <clabbe@baylibre.com>
Tue, 26 Mar 2019 08:58:21 +0000 (09:58 +0100)
This patch adds basic Application Lifecycle Workflow Test (fetch, uninstall, install, start)

Bug-AGL: SPEC-1850

Change-Id: Ie65648e043b7909aecb2fe64dfbf2b2bba8f1f37
Signed-off-by: Corentin LABBE <clabbe@baylibre.com>
common/scripts/application-lifecycle.sh [new file with mode: 0644]
test-suites/short-smoke/application-lifecycle.yaml [new file with mode: 0644]

diff --git a/common/scripts/application-lifecycle.sh b/common/scripts/application-lifecycle.sh
new file mode 100644 (file)
index 0000000..9e3a92c
--- /dev/null
@@ -0,0 +1,211 @@
+#!/bin/sh
+
+export TERM=dumb
+
+while [ $# -ge 1 ]
+do
+       case $1 in
+       -b)
+               shift
+               BASEURL=$1
+               shift
+       ;;
+       *)
+               echo "Unknown argument $1"
+               exit 1
+       ;;
+       esac
+done
+
+if [ -z "$BASEURL" ]; then
+       echo "$0: missing BASEURL"
+       echo "Usage: $0 -b BASEURL"
+       exit 1
+fi
+
+wget -q $BASEURL -O index.html
+if [ $? -ne 0 ];then
+       echo "ERROR: Cannot wget $BASEURL"
+       exit 1
+fi
+
+grep -o '[a-z-]*.wgt' index.html | sort | uniq |
+while read wgtfile
+do
+       WGTNAME=$(echo $wgtfile | sed 's,.wgt$,,')
+       echo "DEBUG: fetch $wgtfile"
+       wget -q $BASEURL/$wgtfile
+       if [ $? -ne 0 ];then
+               echo "ERROR: wget from $BASEURL/$wgtfile"
+               continue
+       fi
+
+       echo "DEBUG: analyse wgt file"
+       unzip $wgtfile
+       if [ $? -eq 0 ];then
+               grep hidden config.xml
+               if [ $? -eq 0 ];then
+                       echo "DEBUG: hidden package"
+               else
+                       echo "DEBUG: not hidden package"
+               fi
+       else
+               echo "DEBUG: fail to unzip"
+       fi
+
+       echo "DEBUG: list current pkgs"
+       # TODO mktemp
+       LIST='list'
+       afm-util list --all > $LIST
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util list exit with error"
+               continue
+       fi
+       if [ ! -s "$LIST" ];then
+               echo "ERROR: afm-util list is empty"
+               continue
+       fi
+
+       echo "DEBUG: check presence of $WGTNAME"
+       NAMEID=$(grep id\\\":\\\"${WGTNAME}@ $LIST | cut -d\" -f4 | cut -d\\ -f1)
+       if [ ! -z "$NAMEID" ];then
+               echo "DEBUG: $WGTNAME already installed as $NAMEID"
+               # need to kill then deinstall
+               afm-util ps | grep -q $WGTNAME
+               if [ $? -eq 0 ];then
+                       echo "DEBUG: kill $WGTNAME"
+                       afm-util kill $WGTNAME
+                       if [ $? -ne 0 ];then
+                               echo "ERROR: afm-util kill"
+                               lava-test-case afm-util-pre-kill-$WGTNAME --result fail
+                               continue
+                       else
+                               lava-test-case afm-util-pre-kill-$WGTNAME --result pass
+                       fi
+               else
+                       echo "DEBUG: no need to kill $WGTNAME"
+               fi
+
+               echo "DEBUG: deinstall $WGTNAME"
+               afm-util remove $NAMEID
+               if [ $? -ne 0 ];then
+                       echo "ERROR: afm-util remove"
+                       lava-test-case afm-util-remove-$WGTNAME --result fail
+                       continue
+               else
+                       lava-test-case afm-util-remove-$WGTNAME --result pass
+               fi
+       else
+               echo "DEBUG: $WGTNAME not installed"
+       fi
+       grep id $LIST
+
+       echo "DEBUG: install $wgtfile"
+       OUT="out"
+       afm-util install $wgtfile > $OUT
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util install"
+               lava-test-case afm-util-install-$WGTNAME --result fail
+               continue
+       else
+               lava-test-case afm-util-install-$WGTNAME --result pass
+       fi
+       # message is like \"added\":\"mediaplayer@0.1\"
+       NAMEID=$(grep d\\\":\\\"${WGTNAME}@ $OUT | cut -d\" -f4 | cut -d\\ -f1)
+       if [ -z "$NAMEID" ];then
+               echo "ERROR: Cannot get nameid"
+               continue
+       fi
+       echo "DEBUG: $WGTNAME is installed as $NAMEID"
+
+       afm-util list --all > $LIST
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util list exit with error"
+               continue
+       fi
+       if [ ! -s "$LIST" ];then
+               echo "ERROR: afm-util list is empty"
+               continue
+       fi
+       echo "DEBUG: Verify that $WGTNAME is installed"
+       grep -q $NAMEID $LIST
+       if [ $? -ne 0 ];then
+               echo "ERROR: $WGTNAME is not installed"
+               # for debugging, give full output
+               echo "DEBUG: start of list"
+               cat $LIST
+               echo "DEBUG: end of list"
+       fi
+
+       afm-util info $NAMEID
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util info"
+               lava-test-case afm-util-info-$WGTNAME --result fail
+       else
+               lava-test-case afm-util-info-$WGTNAME --result pass
+       fi
+
+       echo "DEBUG: check if we see the package with systemctl list-units (before start)"
+       systemctl list-units --full | grep "afm.*$WGTNAME"
+       echo "DEBUG: check if we see the package with systemctl -a (before start)"
+       systemctl -a |grep "afm.*$WGTNAME"
+
+       echo "DEBUG: start $NAMEID"
+       afm-util start $NAMEID > "rid"
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util start"
+               lava-test-case afm-util-start-$WGTNAME --result fail
+               continue
+       else
+               lava-test-case afm-util-start-$WGTNAME --result pass
+       fi
+
+       echo "DEBUG: check if we see the package with systemctl list-units (after start)"
+       systemctl list-units --full | grep "afm.*$WGTNAME"
+       echo "DEBUG: check if we see the package with systemctl -a (after start)"
+       systemctl -a |grep "afm.*$WGTNAME"
+
+       echo "DEBUG: Get RID for $NAMEID"
+       PSLIST="pslist"
+       afm-util ps > $PSLIST
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util ps"
+               lava-test-case afm-util-ps-$WGTNAME --result fail
+               continue
+       else
+               cat $PSLIST
+               lava-test-case afm-util-ps-$WGTNAME --result pass
+       fi
+       # TODO, compare RID with the list in $PSLIST"
+       RID="$(cat rid)"
+
+       echo "DEBUG: status $NAMEID ($RID)"
+       afm-util status $RID
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util status"
+               lava-test-case afm-util-status-$WGTNAME --result fail
+               continue
+       else
+               lava-test-case afm-util-status-$WGTNAME --result pass
+       fi
+
+       echo "DEBUG: kill $NAMEID ($RID)"
+       afm-util kill $NAMEID
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util kill"
+               lava-test-case afm-util-kill-$WGTNAME --result fail
+               continue
+       else
+               lava-test-case afm-util-kill-$WGTNAME --result pass
+       fi
+
+       echo "DEBUG: start2 $NAMEID"
+       afm-util start $NAMEID
+       if [ $? -ne 0 ];then
+               echo "ERROR: afm-util start2"
+               lava-test-case afm-util-start2-$WGTNAME --result fail
+               continue
+       else
+               lava-test-case afm-util-start2-$WGTNAME --result pass
+       fi
+done
diff --git a/test-suites/short-smoke/application-lifecycle.yaml b/test-suites/short-smoke/application-lifecycle.yaml
new file mode 100644 (file)
index 0000000..1d16c2b
--- /dev/null
@@ -0,0 +1,13 @@
+metadata:
+  name: Application Lifecycle Workflow Test
+  format: "Lava-Test-Shell Test Definition 1.0"
+  description: "Application Lifecycle Workflow Test (fetch, uninstall, install, start, stop)"
+  version: 1.0
+run:
+    steps:
+      - echo "Application Lifecycle Workflow Tests"
+      - chmod +x ./common/scripts/application-lifecycle.sh
+      - ./common/scripts/application-lifecycle.sh -b $APPURL
+
+params:
+  APPURL: ""