Проблема Locust TaskSequence с более чем 1 seq_task - PullRequest
0 голосов
/ 10 апреля 2020

Я не могу запустить 2 или более @ seq_task по порядку, после получения и использования токена доступа с именем входа POST.

  1. on_start получить токен доступа
  2. GET, используя токен к конечной точке API
  3. POST, используя тот же токен к той же конечной точке API
  4. остановить саранчу, когда Общее число пользователей для симуляции = значение, установленное при запуске (это работает)

Отлично работает, используя 2 или 3 с токеном доступа. Он не работает ни с обоими, ни с добавлением @task(1) перед def projects(self) и def new_project(self). При использовании обоих происходит сбой на 3, 401 Клиент не авторизован ...

Чего мне не хватает?

from locust import HttpLocust, TaskSet, task, between, TaskSequence, seq_task
from locust.exception import StopLocust

class UserBehaviour(TaskSequence):
    def on_start(self):
        """ on_start is called when a Locust start before any task is scheduled """
        """self.client.verify = False"""
        self.login()

    def on_stop(self):
        """ on_stop is called when the TaskSet is stopping """
        self.logout()

    def login(self):
        self.response = self.client.post("/api/security/auth/token/obtain/", 
            {"username":"loadtester", "password":"Password1"})
        js = self.response.json()
        self.rspAcs = js["access"]
        print(self.rspAcs, ' ')

    def logout(self):
        self.client.post("/api/security/auth/token/obtain/", 
            {"username":"loadtester", "password":"Password1"})

    @seq_task(1)
    class some_process(TaskSequence):
        @seq_task(1)
        def projects(self):
            self.client.get("/api/analysis/project/project/", headers=
                {"Authorization": "Bearer " + self.parent.rspAcs})
            print(self.parent.rspAcs, ' ')

        @seq_task(2)
        def new_project(self):
            self.client.post("/api/analysis/project/project/", headers=
                {"Authorization": "Bearer " + self.parent.rspAcs}, json={"project_name":"new_project"})
            print(self.parent.rspAcs, ' ')

        @seq_task(3)
        def stop(self):
            self.interrupt()

    @seq_task(2)
    def done(self):
        raise StopLocust()

class WebsiteUser(HttpLocust):
    task_set = UserBehaviour
    wait_time = between(5, 9)

Журналы для общего количества симулируемых пользователей = 3, коэффициент штриховки = 1. Обратите внимание на 2 неудачных POST в конце.

standalone    | Starting Locust in standalone mode...
standalone    | $ locust --web-port 8089 --loglevel DEBUG -f /mnt/locust/locustfile.py -H http://10.22.162.62
standalone    | [2020-04-10 00:08:21,004] standalone/INFO/locust.main: Starting web monitor at http://*:8089
standalone    | [2020-04-10 00:08:21,004] standalone/INFO/locust.main: Starting Locust 0.14.5
standalone    | [2020-04-10 00:08:30,134] standalone/INFO/locust.runners: Hatching and swarming 3 users at the rate 1 users/s (0 users already running)...
standalone    | [2020-04-10 00:08:30,136] standalone/DEBUG/urllib3.connectionpool: Starting new HTTP connection (1): 10.22.162.62:80
standalone    | [2020-04-10 00:08:30,257] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/security/auth/token/obtain/ HTTP/1.1" 200 569
standalone    | [2020-04-10 00:08:30,258] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTEwLCJqdGkiOiI2NzUyODJhMDk1YzE0YWMzOGI3MDdmZTRlOTZkZmYxYiIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMCwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.r8RZgaDl5wDc3Fe_KEFMsq9b1nhI85z30u8L5b_DkHY
standalone    | [2020-04-10 00:08:30,258] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:30,258] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:30,258] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:30,291] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "GET /api/analysis/project/project/ HTTP/1.1" 200 614
standalone    | [2020-04-10 00:08:30,292] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTEwLCJqdGkiOiI2NzUyODJhMDk1YzE0YWMzOGI3MDdmZTRlOTZkZmYxYiIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMCwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.r8RZgaDl5wDc3Fe_KEFMsq9b1nhI85z30u8L5b_DkHY
standalone    | [2020-04-10 00:08:30,292] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:30,292] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:30,292] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:31,137] standalone/DEBUG/urllib3.connectionpool: Starting new HTTP connection (1): 10.22.162.62:80
standalone    | [2020-04-10 00:08:31,255] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/security/auth/token/obtain/ HTTP/1.1" 200 569
standalone    | [2020-04-10 00:08:31,256] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTExLCJqdGkiOiJlNTU1YzRhY2MwNzQ0ZTYyYjA5ODRmMzNmMWM4NGZiMyIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMSwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.ybVAOGWznEpctHzZmsoO2yXBySY_cZkDjK-vQp3yRis
standalone    | [2020-04-10 00:08:31,256] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:31,256] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:31,257] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:31,291] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "GET /api/analysis/project/project/ HTTP/1.1" 200 614
standalone    | [2020-04-10 00:08:31,292] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTExLCJqdGkiOiJlNTU1YzRhY2MwNzQ0ZTYyYjA5ODRmMzNmMWM4NGZiMyIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMSwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.ybVAOGWznEpctHzZmsoO2yXBySY_cZkDjK-vQp3yRis
standalone    | [2020-04-10 00:08:31,292] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:31,292] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:31,292] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:32,136] standalone/INFO/locust.runners: All locusts hatched: WebsiteUser: 3 (0 already running)
standalone    | [2020-04-10 00:08:32,139] standalone/DEBUG/urllib3.connectionpool: Starting new HTTP connection (1): 10.22.162.62:80
standalone    | [2020-04-10 00:08:32,258] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/security/auth/token/obtain/ HTTP/1.1" 200 569
standalone    | [2020-04-10 00:08:32,259] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTEyLCJqdGkiOiIxYjY2MzI2MTYyMzQ0YTAyYmNiM2MyZGIwMTFkZTAxOSIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMiwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.DSIK-2TnOJbb0191fVdTb9sKjathJFLGgSf7vko-xi0
standalone    | [2020-04-10 00:08:32,259] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:32,259] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:32,259] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:32,293] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "GET /api/analysis/project/project/ HTTP/1.1" 200 614
standalone    | [2020-04-10 00:08:32,293] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTEyLCJqdGkiOiIxYjY2MzI2MTYyMzQ0YTAyYmNiM2MyZGIwMTFkZTAxOSIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMiwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.DSIK-2TnOJbb0191fVdTb9sKjathJFLGgSf7vko-xi0
standalone    | [2020-04-10 00:08:32,293] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:32,294] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:32,294] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:38,272] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/analysis/project/project/ HTTP/1.1" 401 65
standalone    | [2020-04-10 00:08:38,273] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTExLCJqdGkiOiJlNTU1YzRhY2MwNzQ0ZTYyYjA5ODRmMzNmMWM4NGZiMyIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMSwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.ybVAOGWznEpctHzZmsoO2yXBySY_cZkDjK-vQp3yRis
standalone    | [2020-04-10 00:08:38,273] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:38,273] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:38,273] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:38,983] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/analysis/project/project/ HTTP/1.1" 401 65
standalone    | [2020-04-10 00:08:38,984] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTEwLCJqdGkiOiI2NzUyODJhMDk1YzE0YWMzOGI3MDdmZTRlOTZkZmYxYiIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMCwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.r8RZgaDl5wDc3Fe_KEFMsq9b1nhI85z30u8L5b_DkHY
standalone    | [2020-04-10 00:08:38,984] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:38,984] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:38,984] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:40,566] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/analysis/project/project/ HTTP/1.1" 201 62
standalone    | [2020-04-10 00:08:40,567] standalone/INFO/stdout: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNTg2NDgwOTEyLCJqdGkiOiIxYjY2MzI2MTYyMzQ0YTAyYmNiM2MyZGIwMTFkZTAxOSIsInVzZXJfaWQiOjMsIm9yaWdpbmFsX2lhdCI6MTU4NjQ3NzMxMiwicmVmcmVzaF9pbnRlcnZhbCI6MTIwfQ.DSIK-2TnOJbb0191fVdTb9sKjathJFLGgSf7vko-xi0
standalone    | [2020-04-10 00:08:40,567] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:40,567] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:40,567] standalone/INFO/stdout: 
standalone    | [2020-04-10 00:08:41,982] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/security/auth/token/obtain/ HTTP/1.1" 200 569
standalone    | [2020-04-10 00:08:42,101] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/security/auth/token/obtain/ HTTP/1.1" 200 569
standalone    | [2020-04-10 00:08:42,222] standalone/DEBUG/urllib3.connectionpool: http://10.22.162.62:80 "POST /api/security/auth/token/obtain/ HTTP/1.1" 200 569

1 Ответ

0 голосов
/ 13 апреля 2020

Обнаружено в одном из примеров саранчи на Github, где они добавили SequentialTaskSet. В настоящее время в Dockerhub: мастер-образ. Документация еще не настала, но примера может быть достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...