mimi c test_start test_stop события в распределенном режиме worker - PullRequest
0 голосов
/ 27 мая 2020

В моем locustfile я определил события test_on_start и test_on_stop для чтения файла, необходимого для теста, и для записи подробной статистики в CSV в конце теста. при работе в распределенном режиме эти события происходят на мастере, а не на рабочем. Я составляю список подробной статистики для каждой задачи в последовательности задач и в конце теста записываю файл CSV, когда тест останавливается. Я нашел этот вопрос о переполнении стека , который ссылается на установку и разборку. Я добавил их в свой class User(HttpUser):, но они, похоже, не выполняются.

Как я могу имитировать c эти события, когда тест выполняется на работнике в распределенном режиме?

Является ли есть способ лучше?

Я уже использую User on_start и on_stop - мой on_start вызывает функцию для выбора случайного пользователя из списка, который был создан при запуске @events.test_start.add_listener, что происходит только на мастере а не на воркерах, поэтому у воркера нет данных для входа в систему.

Кажется контрпродуктивным открывать файл, читать его, случайным образом выбирать пользователя и закрывать его каждый раз при вызове метода User on_start. Пользователь on_start также настраивает список итераций [], в котором я сохраняю время для каждой задачи.

Когда последовательность задач выполнена, то есть последняя задача выполнена, я выполняю self.interrupt(), который запускает on_stop, где я беру время итераций и помещаю их во второй список, который позже написано с использованием модуля CSV. возможно было бы лучше просто записать данные в CSV во время on_stop

1 Ответ

0 голосов
/ 27 мая 2020

Настройка / разборка для отдельных пользователей была удалена (потому что они сбивали с толку, так как она выполнялась на первом экземпляре этого класса User, и когда люди устанавливали свойства в этом экземпляре, их очень сбивал с толку тот факт, что более поздние экземпляры этого не делали. получи). Тбх, у меня sh их только что заменили методами класса ...

У пользователя все еще есть методы on_start / stop, и если вы объедините это с флагом, он может делать то, что вы хотеть. Примерно так:

class MyUser(HttpUser):
    stopped = False
... 
    def on_stop(self):
        if not MyUser.stopped:
             MyUser.stopped = True
             # write your csv
             # this doesnt guarantee that all your Users are finished though.

https://docs.locust.io/en/stable/writing-a-locustfile.html#on -start-and-on-stop-methods

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