Как я должен использовать саранчу, чтобы написать стресс-тесты для WebSocket - PullRequest
0 голосов
/ 09 июля 2019

1.Как я должен поддерживать жизнь?2. Как рассчитать время отклика?

Я переписал громче всего по данным онлайн-блога

класс WebSocketClient (объект):

def __init__(self, host):
    self.host = host
    self.ws = websocket.WebSocket()

def connect(self, burl, name):
    start_time = time.time()
    try:
        self.conn = self.ws.connect(url=burl)
    except websocket.WebSocketTimeoutException as e:
        total_time = int((time.time() - start_time) * 1000)
        events.request_failure.fire(request_type="websocket", name=name+"_error", response_time=total_time, exception=e)
        flag = False
        return flag
    else:
        total_time = int((time.time() - start_time) * 1000)
        events.request_success.fire(request_type="websocket", name=name+"_right", response_time=total_time, response_length=0)

    return self.conn

def recv(self):
    return self.ws.recv()

def send(self, msg):

    self.ws.send(msg)

def close(self):
    self.ws.close()

класс WebsocketLocust (Locust):

def __init__(self, *args, **kwargs):
    super(WebsocketLocust, self).__init__(*args, **kwargs)
    self.client = WebSocketClient(self.host)

class SearchTest (TaskSet):

@task
def searchtest(self):
    self.url = 'wss://api.bbxapp.vip/v1/ifcontract/realTime'
    self.client.connect(self.url, name='chat_room')
    flag = True
    while flag:
        data ={"action":"ping"}
        data =json.dumps(data)
        self.client.send(data)
        globals = {'true': 0}
        recv = self.client.recv()
        recv=json.loads(recv)

        if recv["data"]== "pong":
            self.client.send(data)
        else:
            flag = False

Name # reqs # fails Avg Min Max |Медиана req / s

chat_room_right 1 0 (0,00%) 3089 3089 3089 |3100 0,00

Всего 1 0 (0,00%) 0,00

среднее время очень длинное , я думаю, что "total_time = int ((time.time () - start_time) * 1000)"есть несколько ошибок.

пожалуйста, помогите мне

...