# Load Testing settings

This folder contains files needed to run load tests locally or on a Kubernetes / Service Fabric cluster.

<p>
<img src="../../../img/loadtests/loadtestproj_dir.PNG">
<p>

## Set a local environment

Modify the **app.config** file in the LoadTest project directory and set the following service urls.

```
<Servers>
    <MvcWebServer url="http://localhost:5100" />
    <CatalogApiServer url="http://localhost:5101" />
    <OrderingApiServer url="http://localhost:5102" />
    <BasketApiServer url="http://localhost:5103" />
    <IdentityApiServer url="http://localhost:5105" />
    <LocationsApiServer url="http://localhost:5109" />
    <MarketingApiServer url="http://localhost:5110" />
  </Servers>
```

Modify the **.env** file and set the following config property as shown bellow.

```
USE_LOADTEST=True
```
## Set a Service Fabric environment

Modify the **app.config** file in the LoadTest project directory and set the following service urls.

```
<Servers>
    <MvcWebServer url="http://<target_sf_dns>:5100" />
    <CatalogApiServer url="http://<target_sf_dns>:5101" />
    <OrderingApiServer url="http://<target_sf_dns>:5102" />
    <BasketApiServer url="http://<target_sf_dns>:5103" />
    <IdentityApiServer url="http://<target_sf_dns>:5105" />
    <LocationsApiServer url="http://<target_sf_dns>:5109" />
    <MarketingApiServer url="http://<target_sf_dns>:5110" />
  </Servers>
```

Modify the **ServiceManifest.xml** files of the eShop SF Services and set the **UseLoadTest** environment variable to True. This setting enables the load tests to bypass authorization in api services.

<p>
<img src="../../../img/loadtests/sfmanifestsettings.PNG">
<p>

Deploy the SF services. **PLEASE** Read our [SF deployment guide for Linux](./../../../deploy/az/servicefabric/LinuxContainers/readme.md) And [SF deployment guide for Windows](./../../../deploy/az/servicefabric/WindowsContainers/readme.md) to know about how to deploy eshop on SF.

## Set a Kubernetes environment

Modify the **app.config** file in the LoadTest project directory and set the following service urls.

```
<Servers>
    <MvcWebServer url="http://<public_ip_k8s>/webmvc" />
    <CatalogApiServer url="http://<public_ip_k8s>/catalog-api" />
    <OrderingApiServer url="http://<public_ip_k8s>/ordering-api" />
    <BasketApiServer url="http://<public_ip_k8s>/basket-api" />
    <IdentityApiServer url="http://<public_ip_k8s>/identity" />
    <LocationsApiServer url="http://<public_ip_k8s>/locations-api" />
    <MarketingApiServer url="http://<public_ip_k8s>/marketing-api" />
  </Servers>
```

Modify the **conf_local.yml** file in the K8s directory and set the **EnableLoadTest** environment variable to True. This setting enables the load tests to bypass authorization in api services.

<p>
<img src="../../../img/loadtests/k8ssettings.PNG">
<p>

Deploy the kubernetes services. **PLEASE** Read our [k8s deployment guide](./../../../k8s/README.k8s.md) to know about how to deploy eshop on Kubernetes.

## Run Load Tests

Open the load test you want to perform ***.loadtest** files and click the Run Load test button.

<p>
<img src="./../../../img/loadtests/runloadtest.PNG">
<p>