summaryrefslogtreecommitdiffstats
path: root/common/scripts/application-lifecycle.sh
diff options
context:
space:
mode:
authorJan-Simon Moeller <jsmoeller@linuxfoundation.org>2019-03-27 17:15:48 +0000
committerGerrit Code Review <gerrit@automotivelinux.org>2019-03-27 17:15:48 +0000
commitf6e4ceb2f7e5a3f6020e3d64e8c9270a11f94bd4 (patch)
tree3b674c3d45ff185e65763d37c522bd21ec145ddd /common/scripts/application-lifecycle.sh
parent5d302ffa041b6885278eb4dbbadb0111c6c3f080 (diff)
parentb55f1eba67d6c60aa7e1b809d59f15ad66fdf8a8 (diff)
Diffstat (limited to 'common/scripts/application-lifecycle.sh')
-rw-r--r--common/scripts/application-lifecycle.sh211
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