aboutsummaryrefslogtreecommitdiff
path: root/automated/android/multinode
diff options
context:
space:
mode:
Diffstat (limited to 'automated/android/multinode')
-rw-r--r--automated/android/multinode/connect-to-remote-adb-tcpip-devices.yaml24
-rw-r--r--automated/android/multinode/release-remote-adb-tcpip-devices.yaml20
-rw-r--r--automated/android/multinode/remote-adb-devices-smoke-test.yaml27
-rw-r--r--automated/android/multinode/share-local-device-over-adb-tcpip.yaml36
-rw-r--r--automated/android/multinode/wait-and-keep-local-device-accessible.yaml98
-rw-r--r--automated/android/multinode/wait-for-release-and-reset.yaml21
6 files changed, 226 insertions, 0 deletions
diff --git a/automated/android/multinode/connect-to-remote-adb-tcpip-devices.yaml b/automated/android/multinode/connect-to-remote-adb-tcpip-devices.yaml
new file mode 100644
index 0000000..3dc2e42
--- /dev/null
+++ b/automated/android/multinode/connect-to-remote-adb-tcpip-devices.yaml
@@ -0,0 +1,24 @@
+metadata:
+ name: connect-to-remote-adb-tcpip-devices
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "adb MultiNode setup: connect to remote devices made accessible via adb TCP/IP."
+ maintainer:
+ - karsten@fairphone.com
+ - softwareteam@fairphone.com
+ os:
+ - debian
+ - ubuntu
+ devices:
+ - lxc
+ scope:
+ - functional
+
+params:
+ ADB_CONNECT_TIMEOUT_SECS: "60"
+ DEVICE_WORKER_MAPPING_FILE: "/tmp/deviceWorkerMapping"
+
+run:
+ steps:
+ - . ./automated/lib/sh-test-lib
+ - . ./automated/lib/android-multinode-test-lib
+ - connect_to_remote_adb_tcpip_devices "${ADB_CONNECT_TIMEOUT_SECS}" "${DEVICE_WORKER_MAPPING_FILE}"
diff --git a/automated/android/multinode/release-remote-adb-tcpip-devices.yaml b/automated/android/multinode/release-remote-adb-tcpip-devices.yaml
new file mode 100644
index 0000000..c28c22e
--- /dev/null
+++ b/automated/android/multinode/release-remote-adb-tcpip-devices.yaml
@@ -0,0 +1,20 @@
+metadata:
+ name: release-remote-adb-tcpip-devices
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Disconnect from remote adb devices and cleanup."
+ maintainer:
+ - karsten@fairphone.com
+ - softwareteam@fairphone.com
+ os:
+ - debian
+ - ubuntu
+ devices:
+ - lxc
+ scope:
+ - functional
+
+run:
+ steps:
+ - lava-sync release_dut
+ # Cleanup adb server: LAVA expects only one device connected to adb.
+ - adb kill-server
diff --git a/automated/android/multinode/remote-adb-devices-smoke-test.yaml b/automated/android/multinode/remote-adb-devices-smoke-test.yaml
new file mode 100644
index 0000000..838b866
--- /dev/null
+++ b/automated/android/multinode/remote-adb-devices-smoke-test.yaml
@@ -0,0 +1,27 @@
+metadata:
+ name: remote-adb-devices-smoke-test
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Smoke test demonstrating access to adb devices over TCP/IP."
+ maintainer:
+ - karsten@fairphone.com
+ - softwareteam@fairphone.com
+ os:
+ - debian
+ - ubuntu
+ devices:
+ - lxc
+ scope:
+ - functional
+
+params:
+ DEVICE_WORKER_MAPPING_FILE: "/tmp/deviceWorkerMapping"
+
+run:
+ steps:
+ - device_worker_mapping="$(cat "${DEVICE_WORKER_MAPPING_FILE}")"
+ - |
+ for device_to_worker in ${device_worker_mapping}; do
+ device="$(echo ${device_to_worker} | cut -d';' -f1)"
+ echo "${device}: $(adb -s "${device}" shell service call iphonesubinfo 1 | \
+ grep -oE '(\.[0-9])|([0-9]\.)' | grep -oE '[0-9]' | tr -d '\n')"
+ done
diff --git a/automated/android/multinode/share-local-device-over-adb-tcpip.yaml b/automated/android/multinode/share-local-device-over-adb-tcpip.yaml
new file mode 100644
index 0000000..9ede1df
--- /dev/null
+++ b/automated/android/multinode/share-local-device-over-adb-tcpip.yaml
@@ -0,0 +1,36 @@
+metadata:
+ name: share-local-device-over-adb-tcpip
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "adb MultiNode setup: make local device remotely accessible via adb TCP/IP.
+ Handles the device over to a role that responds to the following synchronization steps:
+ - lava-sync start_handover
+ - lava-send dut_address dut_address=${dut_address}
+ - lava-sync finish_handover"
+ maintainer:
+ - karsten@fairphone.com
+ - softwareteam@fairphone.com
+ os:
+ - debian
+ - ubuntu
+ devices:
+ - lxc
+ scope:
+ - functional
+
+params:
+ ADB_PORT: "5555"
+ ADB_TCPIP_ATTEMPTS: "5"
+ TIMEOUT_SECS: "60"
+ RAISE_ON_FAILURE: "true"
+
+run:
+ steps:
+ - . ./automated/lib/sh-test-lib
+ - . ./automated/lib/android-test-lib
+ - . ./automated/lib/android-multinode-test-lib
+ - ret_val=0
+ - share_local_device_over_adb_tcpip "${ADB_TCPIP_ATTEMPTS}" "${TIMEOUT_SECS}" "${ADB_PORT}" || ret_val=$?
+ - |
+ if [ "${ret_val}" -ne 0 -a "${RAISE_ON_FAILURE}" = "true" ]; then
+ lava-test-raise "Could not share device of adb tcpip."
+ fi
diff --git a/automated/android/multinode/wait-and-keep-local-device-accessible.yaml b/automated/android/multinode/wait-and-keep-local-device-accessible.yaml
new file mode 100644
index 0000000..35460d0
--- /dev/null
+++ b/automated/android/multinode/wait-and-keep-local-device-accessible.yaml
@@ -0,0 +1,98 @@
+metadata:
+ name: wait-and-keep-local-device-accessible
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Continuously wait for MultiNode messages from a remote role (master) and make the
+ locally connected device accessible again when it is lost for the remote role."
+ maintainer:
+ - karsten@fairphone.com
+ - softwareteam@fairphone.com
+ os:
+ - debian
+ - ubuntu
+ devices:
+ - lxc
+ scope:
+ - functional
+
+params:
+ ADB_PORT: "5555"
+ BOOT_TIMEOUT_SECS: "900"
+ NETWORK_TIMEOUT_SECS: "300"
+ ADB_TCPIP_ATTEMPTS: "5"
+ ADB_CONNECT_TEST_TIMEOUT_SECS: "60"
+ ANDROID_ENABLE_WIFI: "true"
+
+run:
+ steps:
+ - lava-install-packages --no-install-recommends python3-pip python3-setuptools python3-wheel
+ - pip3 install -q uiautomator
+ - . ./automated/lib/sh-test-lib
+ - . ./automated/lib/android-test-lib
+ - . ./automated/lib/android-multinode-test-lib
+ - lava-test-set start keepAlive
+ - |
+ reconnect_device() {
+ timeout 10 fastboot reboot || true
+
+ local ret_val=0
+ sh -c ". ./automated/lib/sh-test-lib && . ./automated/lib/android-test-lib \
+ && wait_boot_completed \"${BOOT_TIMEOUT_SECS}\"" \
+ || ret_val=$?
+
+ if [ "${ret_val}" -ne 0 ]; then
+ result=false
+ echo "WARNING: Reconnect attempt failed: target did not boot up or is not accessible."
+ return
+ fi
+
+ if [ "${ANDROID_ENABLE_WIFI}" = "true" ]; then
+ ./automated/lib/android_ui_wifi.py -a set_wifi_state on || ret_val=$?
+ if [ "${ret_val}" -ne 0 ]; then
+ echo "WARNING: Cannot ensure that Wi-Fi is enabled in the device settings; UI automation failed."
+ fi
+ fi
+
+ ret_val=0
+ sh -c ". ./automated/lib/sh-test-lib && . ./automated/lib/android-test-lib \
+ && . ./automated/lib/android-multinode-test-lib \
+ && wait_network_connected \"${NETWORK_TIMEOUT_SECS}\" \
+ && open_adb_tcpip_on_local_device \
+ \"${ADB_TCPIP_ATTEMPTS}\" \"${ADB_CONNECT_TEST_TIMEOUT_SECS}\" \"${ADB_PORT}\"" \
+ || ret_val=$?
+
+ if [ "${ret_val}" -ne 0 ]; then
+ result=false
+ echo "WARNING: Reconnect attempt failed."
+ fi
+ }
+ - iteration=1
+ - |
+ while true; do
+ lava-wait master-sync-$(lava-self)-${iteration}
+
+ command="$(cat /tmp/lava_multi_node_cache.txt | grep "command" | sed 's/.*command=//' | grep -v '^$')"
+
+ result="pass"
+
+ case "${command}" in
+ continue)
+ ;;
+ release)
+ break
+ ;;
+ reconnect)
+ echo "Reconnect requested by master."
+ adb kill-server || true
+ adb devices || true
+ reconnect_device
+ ;;
+ *)
+ lava-test-raise "Script error. Unexpected message from master to worker, command=${command}"
+ esac
+
+ lava-send worker-sync-$(lava-self)-${iteration} result=$result
+
+ iteration="$(expr ${iteration} + 1)"
+ done
+ - echo "master released the device."
+ - lava-test-set stop
diff --git a/automated/android/multinode/wait-for-release-and-reset.yaml b/automated/android/multinode/wait-for-release-and-reset.yaml
new file mode 100644
index 0000000..78a52b4
--- /dev/null
+++ b/automated/android/multinode/wait-for-release-and-reset.yaml
@@ -0,0 +1,21 @@
+metadata:
+ name: wait-for-release-and-reset
+ format: "Lava-Test-Shell Test Definition 1.0"
+ description: "Wait until a remote MultiNode role (master) requests to release the device.
+ Then, bring the device back into adb USB state."
+ maintainer:
+ - karsten@fairphone.com
+ - softwareteam@fairphone.com
+ os:
+ - debian
+ - ubuntu
+ devices:
+ - lxc
+ scope:
+ - functional
+
+run:
+ steps:
+ - lava-sync release_dut
+ - adb kill-server || true
+ - adb usb