码迷,mamicode.com
首页 > Web开发 > 详细

locust压测非http协议

时间:2018-11-27 12:24:53      阅读:1236      评论:0      收藏:0      [点我收藏+]

标签:etc   系统   报告   编写   osc   requests   exception   收集   nts   

Locust是以HTTP为主要目标构建的。

但是,通过编写触发器request_success和 request_failure事件的自定义客户端,可以轻松扩展到任何基于请求/响应的系统的负载测试 。

我们知道locust默认内部只封装httplocust;使用的是requests中的session进行了封装;

那么问题来了,如果我想测试其它协议怎么办,比如websocket  , grpc等等。

 

 

在开始之前,需要了解的几点:

1>self.client: locust协议入口实例,我们只要重写一个实例给client即可。

2>以下两个事件,用来收集报告信息,否则写好后执行你会发现收集不到性能数据

events.request_failure.fire()
events.request_success.fire()

 

具体步骤:

1>编写WebSocketClient类(主要用来替换掉self.client的http实例)

class WebSocketClient(object):

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

    def connect(self, burl):
        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="websockt", name=urlweb, response_time=total_time, exception=e)
        else:
            total_time = int((time.time() - start_time) * 1000)
            events.request_success.fire(request_type="websockt", name=urlweb, 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)

注意:该类中定义了,websocket的常用操作,链接、接收、发送;最主要是events.request_failure.fire和events.request_success.fire这两个用来收集性能数据,如果不写

报告收集不到性能数据。

上边代码只是以websocket举例,其它协议也一样,只要注意收集性能数据就可以。当然也可以不写在这里。这个看代码怎么写了。

 

2>重写一个HttpLocust类,我们这里叫做WebsoketLoscust类

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

注意:WebsocketLocust从Locust继承; 这里主要是将self.client重新实例成,我们第一部写好的websocketClient实例。 

这样一来我们通过self.client.xxxx就可以使用其方法

3>编写TaskSet类

 

locust压测非http协议

标签:etc   系统   报告   编写   osc   requests   exception   收集   nts   

原文地址:https://www.cnblogs.com/yhleng/p/10025465.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!