xref: /aosp_15_r20/external/autotest/utils/probe_bluetooth_duts.sh (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li#!/bin/sh
2*9c5db199SXin Li
3*9c5db199SXin Li# Copyright 2017 The Chromium OS Authors. All rights reserved.
4*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
5*9c5db199SXin Li# found in the LICENSE file.
6*9c5db199SXin Li
7*9c5db199SXin Li# This script probes the readiness of the DUTs and chameleon boards in
8*9c5db199SXin Li# the wifi-cells in the test lab.
9*9c5db199SXin Li
10*9c5db199SXin LiBT_HOSTS="chromeos15-row1-rack4-host1
11*9c5db199SXin Li          chromeos15-row1-rack4-host2
12*9c5db199SXin Li          chromeos15-row1-rack4-host3
13*9c5db199SXin Li          chromeos15-row1-rack5-host1
14*9c5db199SXin Li          chromeos15-row1-rack5-host2
15*9c5db199SXin Li          chromeos15-row1-rack5-host3
16*9c5db199SXin Li          chromeos15-row1-rack5-host4"
17*9c5db199SXin Li
18*9c5db199SXin LiSSH_OPTIONS="-q -i ~/.ssh/.test_rsa \
19*9c5db199SXin Li             -o UserKnownHostsFile=/dev/null \
20*9c5db199SXin Li             -o StrictHostKeyChecking=no"
21*9c5db199SXin Li
22*9c5db199SXin LiPROBE_RESULT_DIR="/tmp/bt_probe_result"
23*9c5db199SXin Li
24*9c5db199SXin LiSEP_LINE="------------------------------------------------------------------"
25*9c5db199SXin Li
26*9c5db199SXin Li
27*9c5db199SXin Lifunction disp_result {
28*9c5db199SXin Li  test "$1" -eq "0" && echo ok || echo "-"
29*9c5db199SXin Li}
30*9c5db199SXin Li
31*9c5db199SXin Lifunction probe_dut {
32*9c5db199SXin Li  dut="$1.cros"
33*9c5db199SXin Li
34*9c5db199SXin Li  # ping test
35*9c5db199SXin Li  ping -q -w 10 -c1 "${dut}" > /dev/null 2>&1
36*9c5db199SXin Li  ping_result="$(disp_result $?)"
37*9c5db199SXin Li
38*9c5db199SXin Li  # Check board
39*9c5db199SXin Li  board=$(ssh ${SSH_OPTIONS} root@"$dut" cat /etc/lsb-release | \
40*9c5db199SXin Li          awk -F'=' '/CHROMEOS_RELEASE_BUILDER_PATH/ {print $2}')
41*9c5db199SXin Li
42*9c5db199SXin Li  # Print the result
43*9c5db199SXin Li  printf "$1            %5s  %s\n" "${ping_result}" "${board}" \
44*9c5db199SXin Li    > "${PROBE_RESULT_DIR}/${dut}"
45*9c5db199SXin Li}
46*9c5db199SXin Li
47*9c5db199SXin Lifunction probe_chameleon {
48*9c5db199SXin Li  RN42_MODULE="/usr/lib/python2.7/site-packages/chameleond-0.0.2-py2.7.egg/chameleond/utils/bluetooth_rn42.py"
49*9c5db199SXin Li
50*9c5db199SXin Li  chameleon="$1-chameleon.cros"
51*9c5db199SXin Li
52*9c5db199SXin Li  # ping test
53*9c5db199SXin Li  ping -q -w 10 -c1 "${chameleon}" > /dev/null 2>&1
54*9c5db199SXin Li  ping_result="$(disp_result $?)"
55*9c5db199SXin Li
56*9c5db199SXin Li  # .usb_host_mode label test
57*9c5db199SXin Li  ssh $SSH_OPTIONS root@"$chameleon" "test -f /etc/default/.usb_host_mode"
58*9c5db199SXin Li  label_result="$(disp_result $?)"
59*9c5db199SXin Li
60*9c5db199SXin Li  # Check if chameleond is running.
61*9c5db199SXin Li  test $(ssh ${SSH_OPTIONS} root@"$chameleon" \
62*9c5db199SXin Li         ps | awk '$5~"run_chameleond"' | wc -l) -gt "0"
63*9c5db199SXin Li  chameleond_result="$(disp_result $?)"
64*9c5db199SXin Li
65*9c5db199SXin Li  # RN42 self-test status
66*9c5db199SXin Li  ssh ${SSH_OPTIONS} root@"$chameleon" \
67*9c5db199SXin Li      "python ${RN42_MODULE} > /dev/null 2>&1"
68*9c5db199SXin Li      # "find / -name *bluetooth_rn42.py | xargs python > /dev/null 2>&1"
69*9c5db199SXin Li  RN42_result="$(disp_result $?)"
70*9c5db199SXin Li
71*9c5db199SXin Li  # TODO: add self test for bluefruit too.
72*9c5db199SXin Li
73*9c5db199SXin Li  # Print the result
74*9c5db199SXin Li  printf "$1-chameleon  %5s %6s %10s %4s\n" "${ping_result}" \
75*9c5db199SXin Li      "${label_result}" "${chameleond_result}" "${RN42_result}" \
76*9c5db199SXin Li    > "${PROBE_RESULT_DIR}/${chameleon}"
77*9c5db199SXin Li}
78*9c5db199SXin Li
79*9c5db199SXin Lifunction probe_duts {
80*9c5db199SXin Li  # Fork parallel processes to probe the DUTs.
81*9c5db199SXin Li  for host in $BT_HOSTS; do
82*9c5db199SXin Li    probe_dut $host &
83*9c5db199SXin Li    dut_pids="${dut_pids} $!"
84*9c5db199SXin Li  done
85*9c5db199SXin Li}
86*9c5db199SXin Li
87*9c5db199SXin Lifunction probe_chameleons {
88*9c5db199SXin Li  # Fork parallel processes to probe the chameleon boards.
89*9c5db199SXin Li  for host in $BT_HOSTS; do
90*9c5db199SXin Li    probe_chameleon $host &
91*9c5db199SXin Li    chameleon_pids="${chameleon_pids} $!"
92*9c5db199SXin Li  done
93*9c5db199SXin Li}
94*9c5db199SXin Li
95*9c5db199SXin Lifunction create_ping_result_dir {
96*9c5db199SXin Li  dut_pids=""
97*9c5db199SXin Li  chameleon_pids=""
98*9c5db199SXin Li
99*9c5db199SXin Li  mkdir -p "${PROBE_RESULT_DIR}"
100*9c5db199SXin Li  rm -fr "${PROBE_RESULT_DIR}"/*
101*9c5db199SXin Li}
102*9c5db199SXin Li
103*9c5db199SXin Lifunction print_dut_status {
104*9c5db199SXin Li  echo
105*9c5db199SXin Li  echo "Dut                                    ping                  board"
106*9c5db199SXin Li  echo "${SEP_LINE}"
107*9c5db199SXin Li
108*9c5db199SXin Li  # Wait for all probing children processes to terminate.
109*9c5db199SXin Li  for pid in ${dut_pids}; do
110*9c5db199SXin Li    wait ${pid}
111*9c5db199SXin Li  done
112*9c5db199SXin Li
113*9c5db199SXin Li  # Sort and print the results.
114*9c5db199SXin Li  cat "${PROBE_RESULT_DIR}"/*-host?.cros | sort
115*9c5db199SXin Li  echo; echo
116*9c5db199SXin Li}
117*9c5db199SXin Li
118*9c5db199SXin Lifunction print_chameleon_status {
119*9c5db199SXin Li  echo "Chameleon                              ping  label chameleond rn42"
120*9c5db199SXin Li  echo "${SEP_LINE}"
121*9c5db199SXin Li
122*9c5db199SXin Li  # Wait for all probing children processes to terminate.
123*9c5db199SXin Li  for pid in ${chameleon_pids}; do
124*9c5db199SXin Li    wait ${pid}
125*9c5db199SXin Li  done
126*9c5db199SXin Li
127*9c5db199SXin Li  # Sort and print the results.
128*9c5db199SXin Li  cat "${PROBE_RESULT_DIR}"/*-chameleon.cros | sort
129*9c5db199SXin Li  echo; echo
130*9c5db199SXin Li}
131*9c5db199SXin Li
132*9c5db199SXin Licreate_ping_result_dir
133*9c5db199SXin Liprobe_duts
134*9c5db199SXin Liprobe_chameleons
135*9c5db199SXin Liprint_dut_status
136*9c5db199SXin Liprint_chameleon_status
137