blob: 8b20379ecdca67b74e097d058f07d0852ec1c621 [file] [log] [blame]
#!/bin/bash
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Script to ensure the avd is set up for testing.
#
# Usage: ./avd_setup.sh <path-to-adb-executable>
set -x
# Monitor but it appears the device is always ready within a couple seconds.
readonly WAIT_ITERS=60
# Validate a single config is returning the desired value.
function validate_config() {
local adb=${1}
local config=${2}
local exp_return_value=${3}
local ready=1
# Wait for avd to reach home screen
echo "Checking ${config} is returning ${exp_return_value}."
for((i=0; i<${WAIT_ITERS}; i++)); do
out=$(${adb} -s emulator-5554 shell "getprop ${config}" | tr -d '[:space:]')
if [[ "${out}" = "${exp_return_value}" ]]; then
echo "${config} is ready."
ready=0
break
else
echo "Config ${config} is not ready."
echo "output: ${out}"
sleep 1
fi
done
if [[ ${ready} -eq 1 ]]; then
echo "${config} was not ready in time."
return 1
fi
return 0
}
# Validate an array of configs is returning their desired values.
function validate_all_configs() {
local adb=$1; shift
local config_array=("$@")
for config in "${config_array[@]}"; do
validate_config "${adb}" "${config}" "1"
if [[ $? -ne 0 ]]; then
echo "Config ${config} not ready."
exit 1
fi
done
}
function print_device_list() {
local adb=${1}
local devices_output=$(${adb} devices)
echo ""
echo "${devices_output}"
echo ""
}
# path to the adb executable
adb=${1}
which ${adb}
if [[ $? -eq 1 ]]; then
echo "Unable to locate adb on path."
fi
# properties to validate
declare -a configs_to_validate=("sys.boot_completed" "dev.bootcomplete")
print_device_list "${adb}"
echo "Stopping adb server"
${adb} stop-server
sleep 5
# when you run any adb command and the server is not up it will start it.
echo "Starting adb server"
${adb} start-server
print_device_list "${adb}"
echo "Waiting for device"
${adb} wait-for-device
echo "Validating that emulator is booted."
validate_all_configs "${adb}" "${configs_to_validate[@]}"
# Set the density DPI
${adb} shell wm density 400
# unlock avd
${adb} shell input keyevent 82
# Ensure developer mode is enabled
${adb} shell settings put global development_settings_enabled 1
# Enable MTP file transfer
# depending on the version under test this is setFunctions or setFunction (no s)
${adb} shell svc usb setFunction mtp
print_device_list "${adb}"
echo "Validating that emulator is booted."
validate_all_configs "${adb}" "${configs_to_validate[@]}"
${adb} shell input keyevent 82
print_device_list "${adb}"
# clear exit signal for the LUCI ci.
echo "Emulator ready."
exit 0