diff options
Diffstat (limited to 'automated/android/multinode')
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 |