| #!/bin/bash |
| |
| # Copyright (c) 2014 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. |
| |
| set -e |
| |
| BRANCH=$1 |
| BUILD=$2 |
| # This script assumes that atest is in PATH |
| ATEST='atest' |
| RUN_SUITE='../../../third_party/autotest/files/site_utils/run_suite.py' |
| |
| USAGE_STRING='Usage: ./run_wifi_release_suite.sh <branch number> <build number>' |
| |
| declare -i PREFLIGHT_POOL_VERSION=41 |
| |
| if [[ $# -eq 0 || -z $2 ]] ; then |
| echo $USAGE_STRING |
| exit |
| fi |
| |
| # atheros_ar9300 on kernel 3.4 |
| list_1=(alex lumpy stumpy) |
| |
| # atheros_ar9462 on kernel 3.4 |
| list_2=(parrot butterfly) |
| |
| # atheros_ar9462 on kernel 3.8 |
| list_3=(link stout peppy falco monroe panther leon wolf mccloud zako) |
| |
| # marvell_88w8797_2x2 on kernel 3.8 |
| list_4=(snow spring skate) |
| |
| # marvell_88w8897_2x2 on kernel 3.8 |
| list_5=(peach_pi peach_pit) |
| |
| # marvell_88w8897_2x2 on kernel 3.10 |
| list_6=(nyan_big nyan_blaze nyan_kitty) |
| |
| # intel wilkins peak 2 on kernel 3.8 |
| list_7=(falco_li tricky) |
| |
| # intel wilkins peak 2 on kernel 3.10 |
| list_8=(squawks expresso clapper glimmer quawks enguarde kip squawks gnawty |
| swanky winky candy orco sumo ninja banjo heli) |
| |
| # intel wilkins peak 2 on kernel 3.14 |
| list_9=(samus auron_paine auron_yuna guado tidus rikku lulu gandof) |
| |
| # Broadcom 4354 on kernel 3.14 |
| list_10=(veyron_speedy veyron_minnie veyron_mickey) |
| |
| # Marvell 8897 on kernel 3.14 |
| list_11=(veyron_mighty veyron_jaq veyron_jerry veyron_tiger) |
| |
| # Intel Stonepeak2 on kernel 3.18 |
| list_12=(cyan celes ultima reks chell lars terra sentry edgar banon umaro |
| kefka cave sabin asuka tifa caroline) |
| |
| # Marvell 8897 on kernel 3.18 |
| list_13=(elm) |
| |
| # Marvell 8897 on kernel 4.4.14 |
| list_14=(kevin) |
| |
| # Intel Stonepeak2 on kernel 4.4 |
| list_15=(pyro snappy) |
| |
| DESIRED_BOARDS=(list_1 list_2 list_3 list_4 list_5 list_6 list_7 list_8 list_9 |
| list_10 list_11 list_12 list_13 list_14 list_15) |
| |
| # POOLS format: POOLS[<pool name>]=<suite name> |
| declare -A POOLS |
| POOLS[wificell]=wifi_release |
| |
| return_item_exists_in_array() { |
| for current_board in ${boards_to_run[@]}; do |
| if [[ ${1} == ${current_board} ]] ; then |
| echo 'True' |
| fi |
| done; |
| echo 'False' |
| } |
| |
| return_available_hosts() { |
| OIFS='$IFS' |
| IFS=$'\n' |
| |
| boards=("${!1}") |
| local pool=${2} |
| |
| #TODO: Filter out stderr so the user doesn't see it. |
| for host in `$ATEST host list | grep -w 'pool:'${2}` ; do |
| IFS=$' ' |
| local host_info=($host) |
| for board in ${boards[@]}; do |
| if [[ ${host_info[3]} == 'False' && (${host_info[1]} != 'Repairing' && |
| ${host_info[1]} != 'Repair Failed') && |
| $board == ${host_info[5]} ]] ; then |
| already_added=$(return_item_exists_in_array ${board}) |
| if [[ ${already_added} == 'False' ]] ; then |
| boards_to_run+=($board) |
| fi |
| fi |
| done; |
| IFS=$'\n' |
| done; |
| IFS=$OIFS |
| } |
| |
| return_host_list() { |
| local pool=${1} |
| for sub_list in ${DESIRED_BOARDS[@]} ; do |
| previous_count=${#boards_to_run[@]} |
| |
| subst="$sub_list[@]" |
| list_items=(`echo "${!subst}"`) |
| return_available_hosts list_items[@] ${pool} |
| |
| current_count=${#boards_to_run[@]} |
| if [ $current_count -eq $previous_count ] ; then |
| echo 'No devices from '$sub_list' ('${list_items}') were available!' |
| fi |
| |
| done; |
| } |
| |
| results_folder='/tmp/connectivity_release_' |
| results_folder+=$BRANCH'-'$BUILD'-'`date +%Y-%m-%d-%H-%M-%S` |
| if [ -e ${results_folder} ] ; then |
| rm -rf ${results_folder} |
| fi |
| |
| mkdir $results_folder |
| latest_results_folder='/tmp/connectivity_results_latest' |
| if [ -h ${latest_results_folder} ] ; then |
| rm -rf ${latest_results_folder} |
| fi |
| ln -s ${results_folder} ${latest_results_folder} |
| |
| for pool in "${!POOLS[@]}"; do |
| boards_to_run=() |
| return_host_list ${pool} |
| |
| for board in ${boards_to_run[@]}; do |
| # Perform the conversion from autotest platform names to board build names |
| if [ $board == 'spring' ] ; then |
| board='daisy_spring' |
| elif [ $board == 'skate' ] ; then |
| board='daisy_skate' |
| elif [ $board == 'snow' ] ; then |
| board='daisy' |
| elif [ $board == 'alex' ] ; then |
| board='x86-alex' |
| fi |
| |
| run_command=$RUN_SUITE' --build='$board'-release/R'$BRANCH'-'$BUILD |
| run_command+=' --pool='$pool' --board='$board' --suite_name='${POOLS[$pool]} |
| |
| results_file=$results_folder'/'$pool'_'$board'.txt' |
| |
| #TODO: Move or delete extra files created by run suite |
| eval $run_command &> $results_file & |
| disown %1 |
| |
| done; |
| done; |
| |
| echo 'All results are available in: '${results_folder} |