mirror of
https://github.com/flatcar/scripts.git
synced 2026-05-05 04:06:33 +02:00
Wrapper script around run_remote_tests that knows about test cells
This is a first pass. I'll review this code myself and do more testing, but I wanted to get folks a look at it to make sure I was going in the right direction. BUG=none TEST=ran using both cell and hostname scenarios Review URL: http://codereview.chromium.org/3007002
This commit is contained in:
parent
bd30076470
commit
bfe72ce842
149
bin/cros_run_wifi_tests.sh
Executable file
149
bin/cros_run_wifi_tests.sh
Executable file
@ -0,0 +1,149 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyright (c) 2009 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.
|
||||
|
||||
# Wrapper script around run_remote_tests.sh that knows how to find
|
||||
# device test cells.
|
||||
|
||||
|
||||
# TODO(pstew): Apparently the script files are in transition from
|
||||
# src/scripts to src/scripts/bin. However this state has existed
|
||||
# for months now, therefore we need to look for the common libs in
|
||||
# both places
|
||||
script_root=$(dirname $0)
|
||||
if [ -f ${script_root}/../common.sh ] ; then
|
||||
script_root=${script_root}/..
|
||||
fi
|
||||
|
||||
. "${script_root}/common.sh"
|
||||
|
||||
# Figure out the default chromelab server name. In order for this to
|
||||
# work correctly, you have to:
|
||||
#
|
||||
# - Put the hostname into "scripts/.default_wifi_test_lab"
|
||||
# - Create an /etc/hosts entry in your chroot for that hostname
|
||||
# (if it isn't findable via DNS)
|
||||
# - Make sure you have created a wifi_testbed_${lab} file in the
|
||||
# ${autotest}/files/client/config/ directory
|
||||
if [ -f "$GCLIENT_ROOT/src/scripts/.default_wifi_test_lab" ] ; then
|
||||
DEFAULT_LAB=`cat "$GCLIENT_ROOT/src/scripts/.default_wifi_test_lab"`
|
||||
fi
|
||||
|
||||
# TODO(pstew) Since this is a wrapper script, we need to accept all
|
||||
# arguments run_remote_tests does, plus a few more of our own. This
|
||||
# can lead to version skew issues
|
||||
|
||||
DEFINE_string args "" "Command line arguments for test, separated with comma" a
|
||||
DEFINE_string board "" "The board for which you are building autotest"
|
||||
DEFINE_string chroot "" "alternate chroot location" c
|
||||
DEFINE_boolean cleanup ${FLAGS_FALSE} "Clean up temp directory"
|
||||
DEFINE_string iterations "" "Iterations to run every top level test" i
|
||||
DEFINE_string prepackaged_autotest "" "Use this prepackaged autotest dir"
|
||||
DEFINE_string results_dir_root "" "alternate root results directory"
|
||||
DEFINE_boolean verbose ${FLAGS_FALSE} "Show verbose autoserv output" v
|
||||
|
||||
# These flags are specific to run_wifi_tests
|
||||
DEFINE_string cell "" "Cell number to perform test on"
|
||||
DEFINE_string client "" "Host name or IP of device to perform test"
|
||||
DEFINE_string lab "${DEFAULT_LAB}" "Lab machine to perform test on"
|
||||
DEFINE_string url "" "URL to lab server config server"
|
||||
|
||||
FLAGS "$@" || exit 1
|
||||
|
||||
run_remote_flags=""
|
||||
run_remote_args=${FLAGS_args}
|
||||
|
||||
append_flag () {
|
||||
local delim=''
|
||||
[ -n "${run_remote_flags}" ] && delim=' '
|
||||
run_remote_flags="${run_remote_flags}${delim}$*"
|
||||
}
|
||||
|
||||
append_arg () {
|
||||
local delim=''
|
||||
[ -n "${run_remote_args}" ] && delim=','
|
||||
run_remote_args="${run_remote_args}${delim}$*"
|
||||
}
|
||||
|
||||
if [ -n "${FLAGS_board}" ]; then
|
||||
append_flag --board "'${FLAGS_board}'"
|
||||
fi
|
||||
|
||||
if [ -n "${FLAGS_chroot}" ]; then
|
||||
append_flag --chroot "'${FLAGS_chroot}'"
|
||||
fi
|
||||
|
||||
if [ "${FLAGS_cleanup}" -eq ${FLAGS_TRUE} ]; then
|
||||
append_flag --cleanup
|
||||
fi
|
||||
|
||||
if [ -n "${FLAGS_iterations}" ]; then
|
||||
append_flag --iterations ${FLAGS_iterations}
|
||||
fi
|
||||
|
||||
if [ -n "${FLAGS_prepackaged_autotest}" ]; then
|
||||
append_flag --prepackaged_autotest "'${FLAGS_prepackaged_autotest}'"
|
||||
fi
|
||||
|
||||
if [ -n "${FLAGS_results_dir_root}" ]; then
|
||||
append_flag --results_dir_root "'${FLAGS_results_dir_root}'"
|
||||
fi
|
||||
|
||||
if [ "${FLAGS_verbose}" -eq ${FLAGS_TRUE} ]; then
|
||||
append_flag --verbose
|
||||
fi
|
||||
|
||||
# Parse our local args
|
||||
if [ -n "${FLAGS_lab}" ] ; then
|
||||
# Add a config file for the lab if one isn't already set
|
||||
if ! expr "${run_remote_args}" : '.*config_file=' >/dev/null; then
|
||||
append_arg "config_file=wifi_testbed_${FLAGS_lab}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${FLAGS_url}" ] ; then
|
||||
lab_url=${FLAGS_url}
|
||||
elif [ -n "${FLAGS_lab}" ] ; then
|
||||
lab_url="http://${FLAGS_lab}:8080/cells"
|
||||
else
|
||||
echo ">>> No lab server specified. Please use --lab or --url options"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cell_no=0
|
||||
|
||||
# Retrieve the testbed config from the server and match either the client
|
||||
# or the cell number to one of the entries
|
||||
ret=$(curl -s $lab_url | \
|
||||
while read line; do
|
||||
# Each line from the server is made up of:
|
||||
# client_name router_name server_name client_addr router_addr server_addr
|
||||
set $line
|
||||
if [ "${FLAGS_cell}" = "$cell_no" -o "${FLAGS_client}" = "$1" -o \
|
||||
"${FLAGS_client}" = "$4" ] ; then
|
||||
echo "$4"
|
||||
echo "router_addr=$5"
|
||||
if [ "$6" != "0.0.0.0" ] ; then
|
||||
echo "server_addr=$6"
|
||||
fi
|
||||
break
|
||||
fi
|
||||
cell_no=$[cell_no + 1]
|
||||
done)
|
||||
|
||||
if [ -z "$ret" ] ; then
|
||||
echo ">>> Cell or host not found at $lab_url"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
set $ret
|
||||
remote=$1
|
||||
shift
|
||||
for arg in $*; do
|
||||
append_arg $arg
|
||||
done
|
||||
|
||||
eval "exec "${script_root}/run_remote_tests.sh" \
|
||||
-a "${run_remote_args}" --remote=${remote} $run_remote_flags $FLAGS_ARGV"
|
||||
Loading…
x
Reference in New Issue
Block a user