¡Esta es una revisión vieja del documento!
Is a load testing tool in which you define user behaviour and the system launches a lot of non-real users accessing your web page.
$ pip install locustio
We define several tasks (functions that take one argument, a Locus class instance). We set them on a TaskSet class, using the tasks attribute. This class defines the user behaviour. The engine which move all of this is the Locust class, it indicates the “limits” (of time, with min_wait and max_wait) for the user.
HttpLocust is a Locust class that allows HTTP requests.
The Locust class represents a user then, the system, will create a lot of locust instances (one for each user simulated). It contains…
task_set attribute, which will be set with a TaskSet instance that defines the user behaviour.min_wait and max_wait attributes, milliseconds that a simulated user will wait between executing each task. If they are not set, locust will wait a second to execute it again (both have 1000 as default).This…
from locust import HttpLocust, TaskSet def login(l): l.client.post("/login", {"username":"ellen_key", "password":"education"}) def index(l): l.client.get("/") def profile(l): l.client.get("/profile") class UserBehavior(TaskSet): tasks = {index:2, profile:1} def on_start(self): login(self) class WebsiteUser(HttpLocust): task_set = UserBehavior min_wait=5000 max_wait=9000
Is the same than…
from locust import HttpLocust, TaskSet, task
class UserBehavior(TaskSet):
def on_start(self):
""" on_start is called when a Locust start before any task is scheduled """
self.login()
def login(self):
self.client.post("/login", {"username":"ellen_key", "password":"education"})
@task(2)
def index(self):
self.client.get("/")
@task(1)
def profile(self):
self.client.get("/profile")
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait=5000
max_wait=9000
In the same path than the locust file:
locust
Or in different path:
locust -f ../locust_files/my_locust_file.py
Running two locust in the same file (weight attribute will define the frequency of calling).
locust -f locust_file.py WebUserLocust MobileUserLocust
$ pip install pyzmqYou'll need a master:
locust -f ../locust_files/my_locust_file.py --master
And an arbitrary number of slave processes:
locust -f ../locust_files/my_locust_file.py --slave
Or with multiple machines:
locust -f ../locust_files/my_locust_file.py --slave --master-host=192.168.0.100
You only need to access the url: http://127.0.0.1:8089
Haremos un cliente “específico” para la tarea de deseemos. Este heredará de la clase Locust y usará el código que deseemos. Luego, para definir las acciones del test de carga heredaremos de esa clase; esta contendrá el taskset. Ver aquí, donde tenemos un código XmlRpcClient y una clase Locust que lo usa, la XmlRpcLocust.