diff options
author | Corentin LABBE <clabbe@baylibre.com> | 2019-03-12 14:49:29 +0100 |
---|---|---|
committer | Corentin LABBE <clabbe@baylibre.com> | 2019-03-26 09:58:21 +0100 |
commit | b55f1eba67d6c60aa7e1b809d59f15ad66fdf8a8 (patch) | |
tree | 263a9f440f2b6e1f87692b4f8b830a1daea0376e /common/scripts | |
parent | 92bb11c8f3a6417549c38451409c243de1331746 (diff) |
Add application-lifecycle test
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>
Diffstat (limited to 'common/scripts')
-rw-r--r-- | common/scripts/application-lifecycle.sh | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/common/scripts/application-lifecycle.sh b/common/scripts/application-lifecycle.sh new file mode 100644 index 0000000..9e3a92c --- /dev/null +++ b/common/scripts/application-lifecycle.sh @@ -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 |