1. Login to GCP with your Google account (for example, your @gmail account) at https://cloud.google.com. If do not have a Google account, you will have to create an account first.
1. Login to GCP with your Google account (for example, your @gmail account) at https://cloud.google.com. If do not have a Google account, you will have to create an account first.
2. Enable billing on Google cloud platform. Instructions [here](https://cloud.google.com/container-engine/docs/before-you-begin) (see the '*Enable billing*' section).
2. Enable billing on Google cloud platform. Instructions [here](https://cloud.google.com/container-engine/docs/before-you-begin) (see the '*Enable billing*' section).
3. Create a Project from the [GCP console](https://console.cloud.google.com).i.e Click on the project dropdown box on the top right (to the right if the search box) and click `Create a project` option.
3. Create a Project from the [GCP console](https://console.cloud.google.com).i.e Click on the project dropdown box on the top right (to the right if the search box) and click '*Create a project*' option.
4. Enable the Container Engine API. Instructions [here](https://cloud.google.com/container-engine/docs/before-you-begin) (See the '*Enable the Container Engine API*’ section). Alternatively, you can do the following:
4. Enable the Container Engine API. Instructions [here](https://cloud.google.com/container-engine/docs/before-you-begin) (See the '*Enable the Container Engine API*’ section). Alternatively, you can do the following:
- 4.1 Click on the `Products & Services` icon on the top left (i.e the icon with three horizontal bars) and select `API Manager`
- 4.1 Click on the '*Products & Services*' icon on the top left (i.e the icon with three horizontal bars) and select '*API Manager*'
- 4.2 Select the `Container Engine API` under `Google Cloud APIs` on the main page. Note that you might have to click on `More` under `Google Cloud APIs` to see the `Container Engine API` link
- 4.2 Select the '*Container Engine API*' under '*Google Cloud APIs*' on the main page. Note that you might have to click on '*More*' under '*Google Cloud APIs*' to see the '*Container Engine API*' link
- 4.3 Click on the `Enable` button. If the API is already enabled, the button's label would be `Disable` instead (do not click the button if its label is `Disable`)
- 4.3 Click on the '*Enable*' button. If the API is already enabled, the button's label would be '*Disable*' instead (do NOT click the button if its label is '*Disable*')
5. Create a Cluster from the GCP console. i.e Go to the Container Engine section from GCP console and click ‘Create Container Cluster’ and follow the instructions.
5. Create a Cluster from the GCP console. i.e Go to the Container Engine section from GCP console and click '*Create Container Cluster*' and follow the instructions.
- 5.1. The instructions for Name/Zone/MachineType etc are [here](https://cloud.google.com/container-engine/docs/clusters/operations) (**NOTE**: The page also has instructions to setting up default clusters and configuring `kubectl`. We will be doing that later)
- 5.1. The instructions for 'Name/Zone/MachineType' etc are [here](https://cloud.google.com/container-engine/docs/clusters/operations) (**NOTE**: The page also has instructions to setting up default clusters and configuring `kubectl`. We will be doing that later)
- 5.2. For the cluster size, a smaller size of <10GCEinstancesisgoodenoughforourusecases-assumingthatweareplanningtorunareasonablysmallnumberofstressclientinstances.Forthemachinetype,somethinglike'2vCPUs7.5GB'(availableinthedropdownbox)shouldbegoodenough.
- 5.2. For the cluster size, a smaller size of <10GCEinstancesisgoodenoughforourusecases-assumingthatweareplanningtorunareasonablysmallnumberofstressclientinstances.Forthemachinetype,somethinglike'2vCPUs7.5GB'(availableinthedropdownbox)shouldbegoodenough.
- 5.3. **IMPORTANT**: Before hitting the "Create" button, click on “More” link just above the "Create" button and Select "Enabled" for BigQuery , "Enabled" for Cloud Platform and "Read/Write" for Cloud User Accounts.
- 5.3. **IMPORTANT**: Before hitting the '*Create*' button, click on '*More*' link just above the '*Create*' button and Select '*Enabled*' for BigQuery , '*Enabled*' for Cloud Platform and '*Read/Write*' for Cloud User Accounts.
- 5.4. Create the cluster by clicking "Create" button.
- 5.4. Create the cluster by clicking '*Create*' button.
#### *On your machine* (or the machine from which stress tests on GKE are launched):
#### *On your machine* (or the machine from which stress tests on GKE are launched):
1. You need a working gRPC repository on your machine. If you do not have it, clone the grpc repository from github (https://github.com/grpc/grpc) and follow the instructions at https://github.com/grpc/grpc/blob/master/INSTALL.md
1. You need a working gRPC repository on your machine. If you do not have it, clone the grpc repository from github (https://github.com/grpc/grpc) and follow the instructions [here](https://github.com/grpc/grpc/blob/master/INSTALL.md)
**Note**: Do `$ sudo apt-get install python-pip` or `$ easy_install -U pip` if you do not have pip
-**Note**: Do `$ sudo apt-get install python-pip`(or `$ easy_install -U pip`) if you do not have pip
6. Install the `requests` Python package if you don’t have it already by doing `sudo pip install requests`. More details regarding `requests` package are [here](http://docs.python-requests.org/en/master/user/install/)
6. Install the `requests` Python package if you don’t have it already by doing `sudo pip install requests`. More details regarding `requests` package are [here](http://docs.python-requests.org/en/master/user/install/)
7. Set the `gcloud` defaults: See the instructions at https://cloud.google.com/container-engine/docs/before-you-begin under "*Set gcloud defaults*" section)
7. Set the `gcloud` defaults: See the instructions [here](https://cloud.google.com/container-engine/docs/before-you-begin) under "*Set gcloud defaults*" section)
- 7.1. Make sure you also fetch the cluster credentials for `kubectl` command to use. I.e `$ gcloud container clusters get-credentials CLUSTER_NAME`
- Make sure you also fetch the cluster credentials for `kubectl` command to use. I.e `$ gcloud container clusters get-credentials CLUSTER_NAME`
### **Launching Stress tests**
### **Launching Stress tests**
The stress tests are launched by the following script (path is relative to GRPC root directory) :
The stress tests are launched by the following script (path is relative to GRPC root directory) :
>Launches the 5 instances of stress test clients, 1 instance of stress test server and runs the test for 180 seconds. The test would be run on the default container cluster (that you have set in `gcloud`) in the project `sree-gce`.
>Launches the 5 instances of stress test clients, 1 instance of stress test server and runs the test for 180 seconds. The test would be run on the default container cluster (that you have set in `gcloud`) in the project `sree-gce`.
> Note: we currently do not have the ability to launch multiple instances of the server. This can be added very easily in future
> Note: we currently do not have the ability to launch multiple instances of the server. This can be added very easily in future