| #!/bin/bash |
| # Copyright (c) 2011 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. |
| find_common_sh() { |
| local common_paths=(/usr/lib/crosutils $(dirname "$0")) |
| local path |
| |
| SCRIPT_ROOT= |
| for path in "${common_paths[@]}"; do |
| local common="${path}/common.sh" |
| if ([ -r "${common}" ] && . "${common}" && [ -d "${SCRIPTS_DIR}" ]); then |
| SCRIPT_ROOT="${path}" |
| break |
| fi |
| done |
| } |
| find_common_sh |
| . "${SCRIPT_ROOT}/common.sh" || ! echo "Unable to load common.sh" || exit 1 |
| |
| DEFAULT_PRIVATE_KEY="${GCLIENT_ROOT}/src/scripts/mod_for_test_scripts/\ |
| ssh_keys/testing_rsa" |
| |
| TMP="/tmp/dejagnu-tests/" |
| TMP_PRIVATE_KEY=${TMP}/private_key |
| TMP_KNOWN_HOSTS=${TMP}/known_hosts |
| CONTROL_PATH="${TMP}/%r@%h:%p" |
| SSH_ARGS="-p22 -o StrictHostKeyChecking=no \ |
| -o UserKnownHostsFile=${TMP_KNOWN_HOSTS} -i ${TMP_PRIVATE_KEY}" |
| |
| dejagnu_init_remote() { |
| mkdir -p ${TMP} |
| cp ${DEFAULT_PRIVATE_KEY} ${TMP_PRIVATE_KEY} |
| chmod 0400 ${TMP_PRIVATE_KEY} |
| PS1=. TERM=linux ssh ${SSH_ARGS} -t -t -M -S "${CONTROL_PATH}" root@$1 \ |
| >/dev/null 2>&1 & |
| echo $! > "${TMP}/master-pid" |
| dejagnu_ssh root@$1 -- "echo Connection OK." |
| } |
| |
| dejagnu_cleanup_remote() { |
| set +e |
| kill "$(cat ${TMP}/master-pid)" |
| set -e |
| rm -rf "${TMP}" |
| } |
| |
| dejagnu_ssh() { |
| COMMAND="ssh ${SSH_ARGS} -t -o ControlPath=${CONTROL_PATH} $@" |
| # TODO(raymes): Remove this timeout hack once our tests run without |
| # infinite loops. |
| TIMEOUT_COMMAND="$(echo "$COMMAND" | sed "s/sh -c '/sh -c 'timeout 5 /g")" |
| $TIMEOUT_COMMAND |
| } |
| |
| dejagnu_scp() { |
| scp ${SSH_ARGS} -o ControlPath="${CONTROL_PATH}" $@ |
| } |