summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcyBerta <cyberta@riseup.net>2021-01-31 18:56:21 +0100
committercyBerta <cyberta@riseup.net>2021-01-31 18:56:21 +0100
commitf425762e35957e663eeda3e5bea73a1f93ab90dd (patch)
tree1b82f8a3e9cf76058aeca1a21409761e3fae6294
parent45d5dcecde2a4af0585346f581aea2ce7884eb5f (diff)
create scripts to start several emulators for automatted testing
-rwxr-xr-x.gitlab/wait-for-emulator.sh44
-rwxr-xr-xscripts/installOnAllEmulators.sh (renamed from installOnAllEmulators.sh)0
-rwxr-xr-xscripts/startEmulators.sh58
-rwxr-xr-xscripts/wait-for-emulator.sh73
4 files changed, 131 insertions, 44 deletions
diff --git a/.gitlab/wait-for-emulator.sh b/.gitlab/wait-for-emulator.sh
deleted file mode 100755
index cd51428a..00000000
--- a/.gitlab/wait-for-emulator.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-
-# from https://gitlab.com/fdroid/fdroidclient
-
-sec=0
-timeout=360
-
-err() {
- echo "$@"
- exit 1
-}
-
-explain() {
- if [[ "$1" =~ "not found" ]]; then
- printf "device not found"
- elif [[ "$1" =~ "offline" ]]; then
- printf "device offline"
- elif [[ "$1" =~ "running" ]]; then
- printf "booting"
- else
- printf "$1"
- fi
-}
-
-while true; do
- if [[ $sec -ge $timeout ]]; then
- err "Timeout ($timeout seconds) reached - Failed to start emulator"
- fi
- out=$(adb -e shell getprop init.svc.bootanim 2>&1 | grep -v '^\*')
- if [[ "$out" =~ "command not found" ]]; then
- err "$out"
- fi
- if [[ "$out" =~ "stopped" ]]; then
- break
- fi
- let "r = sec % 5"
- if [[ $r -eq 0 ]]; then
- echo "Waiting for emulator to start: $(explain "$out")"
- fi
- sleep 1
- let "sec++"
-done
-
-echo "Emulator is ready"
diff --git a/installOnAllEmulators.sh b/scripts/installOnAllEmulators.sh
index e0ed4c6a..e0ed4c6a 100755
--- a/installOnAllEmulators.sh
+++ b/scripts/installOnAllEmulators.sh
diff --git a/scripts/startEmulators.sh b/scripts/startEmulators.sh
new file mode 100755
index 00000000..d1bc8292
--- /dev/null
+++ b/scripts/startEmulators.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+
+# init parameters
+for ((i=1;i<=$#;i++));
+do
+ if [[ ${!i} = "-n" ]]
+ then
+ ((i++))
+ N=${!i}
+ elif [[ ${!i} = "-h" ]]
+ then
+ echo -e "
+ -n start first N available emulators from alphabetically order
+ -h print help
+ "
+ exit
+ fi
+done
+
+if [[ -z ${N} ]]
+then
+ N=1
+fi
+
+err() {
+ echo "$@"
+ exit 1
+}
+sec=0
+timeout=30
+waitForAdbDevices() {
+ while true; do
+ if [[ $sec -ge $timeout ]]; then
+ err "Timeout ($timeout seconds) reached - adb devices didn't find all emulators"
+ fi
+ out=$(adb devices | grep -v List | awk '$2{print $1}' | wc -l)
+ if [[ "$out" == "$N" ]]; then
+ break
+ fi
+ let "r = sec % 5"
+ if [[ $r -eq 0 ]]; then
+ echo "Waiting for adb devices to start: $out / $N"
+ fi
+ sleep 1
+ let "sec++"
+ done
+}
+
+#start first N avd images
+avdmanager list avd | grep Name: | cut -d ':' -f2 | head -n $N | xargs -I{} -P$N -n1 emulator -no-snapshot -avd {} &
+waitForAdbDevices
+echo "adb found all emulators..."
+
+#wait for each emulator that booting completed
+adb devices | grep -v List | awk '$2{print $1}' | xargs -I{} .gitlab/wait-for-emulator.sh -s {}
+echo "all emulators successfully booted"
+
+
diff --git a/scripts/wait-for-emulator.sh b/scripts/wait-for-emulator.sh
new file mode 100755
index 00000000..1bc1975e
--- /dev/null
+++ b/scripts/wait-for-emulator.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+# from https://gitlab.com/fdroid/fdroidclient
+# changes by cyberta
+
+sec=0
+timeout=360
+
+for ((i=1;i<=$#;i++));
+do
+ if [[ ${!i} = "-s" ]]
+ then
+ ((i++))
+ SERIAL=${!i}
+ elif [[ ${!i} = "-h" ]]
+ then
+ echo -e "
+ -s serial identifier of the emulator
+ -h print help
+ "
+ exit
+ fi
+done
+
+if [[ -z $SERIAL ]]
+then
+ DEFAULTEMULATOR=true
+ echo "using default emulator"
+fi
+
+err() {
+ echo "$@"
+ exit 1
+}
+
+explain() {
+ if [[ "$1" =~ "not found" ]]; then
+ printf "device not found"
+ elif [[ "$1" =~ "offline" ]]; then
+ printf "device offline"
+ elif [[ "$1" =~ "running" ]]; then
+ printf "booting"
+ else
+ printf "$1"
+ fi
+}
+
+
+while true; do
+ if [[ $sec -ge $timeout ]]; then
+ err "Timeout ($timeout seconds) reached - Failed to start emulator"
+ fi
+ if [[ ! -z $SERIAL ]]
+ then
+ out=$(adb -s $SERIAL shell getprop init.svc.bootanim 2>&1 | grep -v '^\*')
+ else
+ out=$(adb -e shell getprop init.svc.bootanim 2>&1 | grep -v '^\*')
+ fi
+ if [[ "$out" =~ "command not found" ]]; then
+ err "$out"
+ fi
+ if [[ "$out" =~ "stopped" ]]; then
+ break
+ fi
+ let "r = sec % 5"
+ if [[ $r -eq 0 ]]; then
+ echo "Waiting for emulator $SERIAL to start: $(explain "$out")"
+ fi
+ sleep 1
+ let "sec++"
+done
+
+echo "Emulator $SERIAL is ready"