#!/bin/sh # Copyright 2017 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # This script probes the readiness of the DUTs and chameleon boards in # the wifi-cells in the test lab. BT_HOSTS="chromeos15-row1-rack4-host1 chromeos15-row1-rack4-host2 chromeos15-row1-rack4-host3 chromeos15-row1-rack5-host1 chromeos15-row1-rack5-host2 chromeos15-row1-rack5-host3 chromeos15-row1-rack5-host4" SSH_OPTIONS="-q -i ~/.ssh/.test_rsa \ -o UserKnownHostsFile=/dev/null \ -o StrictHostKeyChecking=no" PROBE_RESULT_DIR="/tmp/bt_probe_result" SEP_LINE="------------------------------------------------------------------" function disp_result { test "$1" -eq "0" && echo ok || echo "-" } function probe_dut { dut="$1.cros" # ping test ping -q -w 10 -c1 "${dut}" > /dev/null 2>&1 ping_result="$(disp_result $?)" # Check board board=$(ssh ${SSH_OPTIONS} root@"$dut" cat /etc/lsb-release | \ awk -F'=' '/CHROMEOS_RELEASE_BUILDER_PATH/ {print $2}') # Print the result printf "$1 %5s %s\n" "${ping_result}" "${board}" \ > "${PROBE_RESULT_DIR}/${dut}" } function probe_chameleon { RN42_MODULE="/usr/lib/python2.7/site-packages/chameleond-0.0.2-py2.7.egg/chameleond/utils/bluetooth_rn42.py" chameleon="$1-chameleon.cros" # ping test ping -q -w 10 -c1 "${chameleon}" > /dev/null 2>&1 ping_result="$(disp_result $?)" # .usb_host_mode label test ssh $SSH_OPTIONS root@"$chameleon" "test -f /etc/default/.usb_host_mode" label_result="$(disp_result $?)" # Check if chameleond is running. test $(ssh ${SSH_OPTIONS} root@"$chameleon" \ ps | awk '$5~"run_chameleond"' | wc -l) -gt "0" chameleond_result="$(disp_result $?)" # RN42 self-test status ssh ${SSH_OPTIONS} root@"$chameleon" \ "python ${RN42_MODULE} > /dev/null 2>&1" # "find / -name *bluetooth_rn42.py | xargs python > /dev/null 2>&1" RN42_result="$(disp_result $?)" # TODO: add self test for bluefruit too. # Print the result printf "$1-chameleon %5s %6s %10s %4s\n" "${ping_result}" \ "${label_result}" "${chameleond_result}" "${RN42_result}" \ > "${PROBE_RESULT_DIR}/${chameleon}" } function probe_duts { # Fork parallel processes to probe the DUTs. for host in $BT_HOSTS; do probe_dut $host & dut_pids="${dut_pids} $!" done } function probe_chameleons { # Fork parallel processes to probe the chameleon boards. for host in $BT_HOSTS; do probe_chameleon $host & chameleon_pids="${chameleon_pids} $!" done } function create_ping_result_dir { dut_pids="" chameleon_pids="" mkdir -p "${PROBE_RESULT_DIR}" rm -fr "${PROBE_RESULT_DIR}"/* } function print_dut_status { echo echo "Dut ping board" echo "${SEP_LINE}" # Wait for all probing children processes to terminate. for pid in ${dut_pids}; do wait ${pid} done # Sort and print the results. cat "${PROBE_RESULT_DIR}"/*-host?.cros | sort echo; echo } function print_chameleon_status { echo "Chameleon ping label chameleond rn42" echo "${SEP_LINE}" # Wait for all probing children processes to terminate. for pid in ${chameleon_pids}; do wait ${pid} done # Sort and print the results. cat "${PROBE_RESULT_DIR}"/*-chameleon.cros | sort echo; echo } create_ping_result_dir probe_duts probe_chameleons print_dut_status print_chameleon_status