Herramientas de usuario

Herramientas del sitio


fw:locust

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:locust [2014/08/08 08:58]
alfred [More things...]
fw:locust [2020/05/09 09:25] (actual)
Línea 2: Línea 2:
 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. 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.
  
 +  * Docs: [[http://​docs.locust.io/​en/​latest/​]]
 ===== Basic things ===== ===== Basic things =====
 ==== Install ==== ==== Install ====
Línea 18: Línea 19:
   * ''​host'',​ you can specify it on the command line using the –host option. It tells the host to be loaded.   * ''​host'',​ you can specify it on the command line using the –host option. It tells the host to be loaded.
   * ''​weight''​ tells the frequency of use, for example, ''​WebUserLocust''​ will be executed three times ''​MobileUserLocust''​.   * ''​weight''​ tells the frequency of use, for example, ''​WebUserLocust''​ will be executed three times ''​MobileUserLocust''​.
-<​code>​+<​code ​python>
 class WebUserLocust(Locust):​ class WebUserLocust(Locust):​
     weight = 3     weight = 3
Línea 57: Línea 58:
 </​code>​ </​code>​
 Is the same than... Is the same than...
-<​code>​+<​code ​python>
 from locust import HttpLocust, TaskSet, task from locust import HttpLocust, TaskSet, task
  
Línea 117: Línea 118:
 ===== More things... ===== ===== More things... =====
 ==== The TaskSet class ==== ==== The TaskSet class ====
 +=== Declaring tasks with the task decorator ===
 +<code python>
 +from locust import Locust, TaskSet, task
  
 +class MyTaskSet(TaskSet):​
 +    @task
 +    def my_task(self):​
 +        print "​Locust instance (%r) executing my_task"​ % (self.locust)
 +
 +class MyLocust(Locust):​
 +    task_set = MyTaskSet
 +</​code>​
 +Or defining weight (task2 will be executed twice than task):
 +<code python>
 +from locust import Locust, TaskSet, task
 +
 +class MyTaskSet(TaskSet):​
 +    min_wait = 5000
 +    max_wait = 15000
 +
 +    @task(3)
 +    def task1(self):​
 +        pass
 +
 +    @task(6)
 +    def task2(self):​
 +        pass
 +
 +class MyLocust(Locust):​
 +    task_set = MyTaskSet
 +</​code>​
 +
 +=== Set an dictionary to tasks attribute ===
 +The next dictionary will assign two tasks, each one with their weight.
 +<code python>
 +class MyTaskSet(TaskSet):​
 +    tasks = {my_task: 3, another_task:​1}
 +</​code>​
 +
 +=== The on_start function ===
 +A TaskSet class can declare an on_start function. That function is called when a simulated user starts executing tasks in that TaskSet.
 +
 +=== Nesting TaskSets ===
 +We can define a ''​TaskSet''​ as a task. Then it will represent a group of sub-task which are executed in that way. 
 +
 +It could be useful to represent a user that makes actions over the web (like enter in a web, then browse films and watch one, then navigate in the blog and comment and comment again, then navigate again, then browse films...). ​
 +
 +A nested class set could call the ''​self.interrupt()''​ function. It interrupts the action in that class set.
 +
 +=== Nested sub-tasks examples ===
 +
 +<code python>
 +class ForumPage(TaskSet):​
 +    @task(20)
 +    def read_thread(self):​
 +        pass
 +
 +    @task(1)
 +    def new_thread(self):​
 +        pass
 +
 +    @task(5)
 +    def stop(self):
 +        self.interrupt()
 +
 +class UserBehaviour(TaskSet):​
 +    tasks = {ForumPage:​10}
 +
 +    @task
 +    def index(self):​
 +        pass
 +</​code>​
 +<code python>
 +class MyTaskSet(TaskSet):​
 +    @task
 +    class SubTaskSet(TaskSet):​
 +        @task
 +        def my_task(self):​
 +            pass
 +</​code>​
 ==== Hacer nuestro propio cliente ==== ==== Hacer nuestro propio cliente ====
 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 [[http://​docs.locust.io/​en/​latest/​testing-other-systems.html|aquí]],​ donde tenemos un código ''​XmlRpcClient''​ y una clase ''​Locust''​ que lo usa, la ''​XmlRpcLocust''​. 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 [[http://​docs.locust.io/​en/​latest/​testing-other-systems.html|aquí]],​ donde tenemos un código ''​XmlRpcClient''​ y una clase ''​Locust''​ que lo usa, la ''​XmlRpcLocust''​.
fw/locust.1407488327.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)