Merge "Add application-lifecycle test"
[src/qa-testdefinitions.git] / common / scripts / application-lifecycle.sh
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