blob: f1027ab2280285785ddc1e01810f7bf12cdaab20 [file] [log] [blame]
#!/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