Add locust perf testing
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import random
|
||||
import os
|
||||
from locust import HttpLocust, TaskSet, task, between
|
||||
|
||||
|
||||
"""
|
||||
## Performance testing with Locust
|
||||
Run locally
|
||||
```
|
||||
$ pip install locust
|
||||
$ USERNAME=user locust --host=http://localhost:1880
|
||||
```
|
||||
"""
|
||||
username = os.environ.get("USERNAME")
|
||||
password = ""
|
||||
|
||||
products = {
|
||||
"58339",
|
||||
"46768",
|
||||
"48067",
|
||||
"60643",
|
||||
"62101",
|
||||
}
|
||||
|
||||
markets = {
|
||||
"SE",
|
||||
"GB",
|
||||
"NO",
|
||||
"DE"
|
||||
}
|
||||
|
||||
product_query = {
|
||||
"wallpaper?width=100&height=100",
|
||||
"canvas?width=100&height=70",
|
||||
"poster?width=70&height=50",
|
||||
"framed-print?sku=GLOBAL-CFP-20x28"
|
||||
}
|
||||
|
||||
|
||||
def random_product():
|
||||
return random.sample(products, 1)[0]
|
||||
|
||||
def random_market():
|
||||
return random.sample(markets, 1)[0]
|
||||
|
||||
def random_product_query():
|
||||
return random.sample(product_query, 1)[0]
|
||||
|
||||
|
||||
class QueryTaskSet(TaskSet):
|
||||
def on_start(self):
|
||||
self.client.auth = (username, password)
|
||||
|
||||
@task(10)
|
||||
def product_price(self):
|
||||
""" get random product with details"""
|
||||
self.client.get("/prices/{0}&territory={1}&product={2}".format(random_product_query(), random_market(),random_product()))
|
||||
|
||||
@task(1)
|
||||
def stop(self):
|
||||
self.interrupt()
|
||||
|
||||
|
||||
class UserBehaviour(TaskSet):
|
||||
tasks = {QueryTaskSet: 10}
|
||||
|
||||
|
||||
class Api2Locust(HttpLocust):
|
||||
task_set = UserBehaviour
|
||||
wait_time = between(0.100, 3)
|
||||
Reference in New Issue
Block a user