Мне нужен пример или пояснение о том, как написать тест загрузки саранчи с помощью настраиваемого клиента (в моем случае - WebSocket Server). Я видел объяснение, данное в саранче documentation, но я понимаю, как точно функции __getattr__
и def wrapper(*args, **kwargs):
, которые захватывают события саранчи, запускаются через саранчу.Пример написания теста загрузки сервера websocket с использованием поддержки пользовательских клиентов саранчи
1
A
ответ
0
Я играл с этим сегодня, а также нашел удобный пример немного сложным, потому что трудно сказать, где происходит волшебство. Вот гораздо более простая версия взаимодействия с клиентом и задачами и пользователями. Вместо декоратора, который ловит какой-либо произвольный метод для клиента, я сделал это только для того, чтобы сделать одно, чтобы вы могли видеть, где происходит синхронизация и обработка ошибок, и как он использует крючки событий саранчи для отправки успехов и сбоев.
import time
from locust import TaskSet, task, Locust, events
class SimpleClient(object):
def __init__(self):
pass
def execute(self, name):
start_time = time.time()
try:
print("do your things cause stress and throw exceptions here.")
time.sleep(1)
except Exception as e:
total_time = int((time.time() - start_time) * 1000)
events.request_failure.fire(request_type="execute", name=name, response_time=total_time, exception=e)
else:
total_time = int((time.time() - start_time) * 1000)
events.request_success.fire(request_type="execute", name=name, response_time=total_time, response_length=0)
class SimpleTasks(TaskSet):
@task
def simple_task(self):
self.client.execute('simple_things')
class SimpleUser(Locust):
def __init__(self, *args, **kwargs):
super(Locust, self).__init__(*args, **kwargs)
self.client = SimpleClient()
task_set = SimpleTasks
min_wait = 1000
max_wait = 10000
, а затем вы можете запустить это в терминале что-то вроде:
locust -f simple_test.py --no-web --clients=2 --hatch-rate=2 --num-request=4 --print-stats --only-summary