blob: 8c55eb694620e02ca24c374716eada26f3456c2c [file] [log] [blame]
#!/bin/bash
# Copyright 2023 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# validate number of arguments to equal 2
if [ "$#" -ne 2 ]; then
echo "This script requires 2 parameters, server address and assigned base instance number"
exit 1
fi
if [ -z ${ANDROID_PRODUCT_OUT+x} ]; then echo "ANDROID_PRODUCT_OUT is not defined"; exit 1; fi
if [ -z ${ANDROID_HOST_OUT+x} ]; then echo "ANDROID_HOST_OUT is not defined"; exit 1; fi
set -ex
# map arguments to variables
server=$1
base_instance_num=$2
# create a temp directory to store the artifacts
temp_dir=/tmp/cvd_dist
rm -rf $temp_dir
mkdir -p $temp_dir
# copy and compress the artifacts to the temp directory
ssh $server -t "mkdir -p ~/.cvd_artifact; mkdir -p ~/cvd_home"
rsync -aSvch --recursive $ANDROID_PRODUCT_OUT --files-from=$ANDROID_PRODUCT_OUT/required_images $server:~/cvd_home --info=progress2
if [ -d $ANDROID_HOST_OUT/../linux_bionic-arm64/cvd-host_package ]; then
echo "Use contents in cvd-host_package dir"
rsync -avch $ANDROID_HOST_OUT/../linux_bionic-arm64/cvd-host_package/* $server:~/cvd_home --info=progress2
elif [ -f $ANDROID_HOST_OUT/../linux_bionic-arm64/cvd-host_package.tar.gz ]; then
echo "Use contents in cvd-host_package.tar.gz"
# re-compress with rsyncable option
# TODO(b/275312073): remove this if toxbox supports rsyncable
cd $ANDROID_HOST_OUT/../linux_bionic-arm64; pigz -d -c cvd-host_package.tar.gz | pigz -R > $temp_dir/cvd-host_package.tar.gz
rsync -avh $temp_dir/* $server:.cvd_artifact --info=progress2
ssh $server -t "cd .cvd_artifact; tar -zxvf cvd-host_package.tar.gz -C ~/cvd_home/"
else
echo "There is neither cvd-host_package dir nor cvd-host_package.tar.gz"
exit 1
fi
web_ui_port=$((8443+$base_instance_num-1))
adb_port=$((6520+$base_instance_num-1))
fastboot_port=$((7520+$base_instance_num-1))
instance_id=$(uuidgen)
# sets up SSH port forwarding to the remote server for various ports and launch cvd instance
# port forward rule as base_instance_num=1 in local
ssh $server -L 8443:127.0.0.1:$web_ui_port \
-L 15550:127.0.0.1:15550 -L 15551:127.0.0.1:15551 -L 15552:127.0.0.1:15552 \
-L 15553:127.0.0.1:15553 -L 15554:127.0.0.1:15554 -L 15555:127.0.0.1:15555 \
-L 15556:127.0.0.1:15556 -L 15557:127.0.0.1:15557 -L 15558:127.0.0.1:15558 \
-L 6520:127.0.0.1:$adb_port -L 7520:127.0.0.1:$fastboot_port \
-t "cd cvd_home && HOME=~/cvd_home bin/launch_cvd --base_instance_num=$base_instance_num"