blob: c9a0ffa4e100f8b44fdfa931c92c956e4ea2ca27 [file] [log] [blame]
Jan Tattermuscha30fc5d2016-03-25 14:00:23 -07001#!/bin/bash
Craig Tiller6169d5f2016-03-31 07:46:18 -07002# Copyright 2015, Google Inc.
Jan Tattermuscha30fc5d2016-03-25 14:00:23 -07003# All rights reserved.
4#
5# Redistribution and use in source and binary forms, with or without
6# modification, are permitted provided that the following conditions are
7# met:
8#
9# * Redistributions of source code must retain the above copyright
10# notice, this list of conditions and the following disclaimer.
11# * Redistributions in binary form must reproduce the above
12# copyright notice, this list of conditions and the following disclaimer
13# in the documentation and/or other materials provided with the
14# distribution.
15# * Neither the name of Google Inc. nor the names of its
16# contributors may be used to endorse or promote products derived from
17# this software without specific prior written permission.
18#
19# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31# Creates a performance worker on GCE.
Jan Tattermuschb19b62c2016-03-31 17:18:54 -070032# IMPORTANT: After creating the worker, one needs to manually add the pubkey
33# of jenkins@the-machine-where-jenkins-starts-perf-tests
34# to ~/.ssh/authorized_keys so that multi-machine scenarios can work.
35# See tools/run_tests/run_performance_tests.py for details.
Jan Tattermuscha30fc5d2016-03-25 14:00:23 -070036
37set -ex
38
39cd $(dirname $0)
40
41CLOUD_PROJECT=grpc-testing
42ZONE=us-central1-b # this zone allows 32core machines
43
Jan Tattermuschb19b62c2016-03-31 17:18:54 -070044INSTANCE_NAME="${1:-grpc-performance-server1}"
Jan Tattermusch15d29792016-05-09 23:27:05 -070045MACHINE_TYPE=n1-standard-8
Jan Tattermuscha30fc5d2016-03-25 14:00:23 -070046
47gcloud compute instances create $INSTANCE_NAME \
48 --project="$CLOUD_PROJECT" \
49 --zone "$ZONE" \
50 --machine-type $MACHINE_TYPE \
51 --image ubuntu-15-10 \
Jan Tattermusch15d29792016-05-09 23:27:05 -070052 --boot-disk-size 300 \
Jan Tattermusch4de2c322016-05-10 14:33:07 -070053 --scopes https://www.googleapis.com/auth/bigquery
Jan Tattermuscha30fc5d2016-03-25 14:00:23 -070054
55echo 'Created GCE instance, waiting 60 seconds for it to come online.'
56sleep 60
57
58gcloud compute copy-files \
59 --project="$CLOUD_PROJECT" \
60 --zone "$ZONE" \
Jan Tattermuschb19b62c2016-03-31 17:18:54 -070061 jenkins_master.pub linux_performance_worker_init.sh jenkins@${INSTANCE_NAME}:~
Jan Tattermuscha30fc5d2016-03-25 14:00:23 -070062
63gcloud compute ssh \
64 --project="$CLOUD_PROJECT" \
65 --zone "$ZONE" \
Jan Tattermuschb19b62c2016-03-31 17:18:54 -070066 jenkins@${INSTANCE_NAME} --command "./linux_performance_worker_init.sh"