1c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury#!/bin/bash
2c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury# Use of this source code is governed by a BSD-style license that can be
4c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury# found in the LICENSE file.
5c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khouryfind_common_sh() {
6c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  local common_paths=(/usr/lib/crosutils $(dirname "$0"))
7c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  local path
8c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
9c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  SCRIPT_ROOT=
10c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  for path in "${common_paths[@]}"; do
11c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury    local common="${path}/common.sh"
12c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury    if ([ -r "${common}" ] && . "${common}" && [ -d "${SCRIPTS_DIR}" ]); then
13c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury      SCRIPT_ROOT="${path}"
14c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury      break
15c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury    fi
16c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  done
17c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury}
18c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khouryfind_common_sh
19c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury. "${SCRIPT_ROOT}/common.sh" || ! echo "Unable to load common.sh" || exit 1
20c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
21c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryDEFAULT_PRIVATE_KEY="${GCLIENT_ROOT}/src/scripts/mod_for_test_scripts/\
22c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khouryssh_keys/testing_rsa"
23c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
24c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryTMP="/tmp/dejagnu-tests/"
25c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryTMP_PRIVATE_KEY=${TMP}/private_key
26c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryTMP_KNOWN_HOSTS=${TMP}/known_hosts
27c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhouryCONTROL_PATH="${TMP}/%r@%h:%p"
28c57af6e608f9e8b53726be062a2a8e056d65344fRaymes KhourySSH_ARGS="-p22 -o StrictHostKeyChecking=no \
29c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury    -o UserKnownHostsFile=${TMP_KNOWN_HOSTS} -i ${TMP_PRIVATE_KEY}"
30c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
31c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_init_remote() {
32c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  mkdir -p ${TMP}
33c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  cp ${DEFAULT_PRIVATE_KEY} ${TMP_PRIVATE_KEY}
34c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  chmod 0400 ${TMP_PRIVATE_KEY}
35c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  PS1=. TERM=linux ssh ${SSH_ARGS} -t -t -M -S "${CONTROL_PATH}" root@$1 \
36c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury      >/dev/null  2>&1 &
37c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  echo $! > "${TMP}/master-pid"
38c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  dejagnu_ssh root@$1 -- "echo Connection OK."
39c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury}
40c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
41c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_cleanup_remote() {
42c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  set +e
43c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  kill "$(cat ${TMP}/master-pid)"
44c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  set -e
45c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  rm -rf "${TMP}"
46c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury}
47c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
48c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_ssh() {
49c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  COMMAND="ssh ${SSH_ARGS} -t -o ControlPath=${CONTROL_PATH} $@"
50c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  # TODO(raymes): Remove this timeout hack once our tests run without
51c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  # infinite loops.
52c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  TIMEOUT_COMMAND="$(echo "$COMMAND" | sed "s/sh -c '/sh -c 'timeout 5 /g")"
53c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  $TIMEOUT_COMMAND
54c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury}
55c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury
56c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khourydejagnu_scp() {
57c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury  scp ${SSH_ARGS} -o ControlPath="${CONTROL_PATH}" $@
58c57af6e608f9e8b53726be062a2a8e056d65344fRaymes Khoury}
59