歪小Y_02 发表于 2019-3-22 16:32:51

性能测试 - Locust dubbo client

Locust dubbo客户端实现
# _*_ coding:utf-8 _*_

'''
Locust dubbo client
Max.Bai
2018-08
'''


import time
import random
import json
import socket
import dubbo_telnet
import requests
from locust import Locust, TaskSet, events, task


class DubboClient(object):
    def __init__(self, host, port):
      self.conn = dubbo_telnet.connect(host, port)
      self.conn.set_connect_timeout(10)

    def do(self,msg):
      start_time = time.time()
      try:
            self.conn.do(msg)
      except Exception as e:
            total_time = int((time.time() - start_time) * 1000)
            events.request_failure.fire(request_type="dubbo", name="start", response_time=total_time, exception=e)
      else:
            total_time = int((time.time() - start_time) * 1000)
            events.request_success.fire(request_type="dubbo", name="start", response_time=total_time, response_length=0)



class DubboLocust(Locust):
    """
    This is the abstract Locust class which should be subclassed. It provides an dubbo client
    that can be used to make dubbo requests that will be tracked in Locust's statistics.
    """
    def __init__(self, *args, **kwargs):
      super(DubboLocust, self).__init__(*args, **kwargs)
      self.client = DubboClient(self.host, self.port)



class TestUser(DubboLocust):

    host = "119.29.67.113"
    port = 20904
    min_wait = 2000
    max_wait = 2000

    class task_set(TaskSet):
      @task
      def send_data1(self):
            msg = 'invoke com.abc.com.base.service.faceattendance.abcService.action("parm1", "parm2", "parm3")'
            response = self.client.do(msg)
            print "recv:%s"%str(response)


if __name__ == "__main__":
    user = TestUser()
    user.run()


qqq911 发表于 2019-4-12 10:47:14

感谢分享

Miss_love 发表于 2020-12-25 16:57:58

感谢分享
页: [1]
查看完整版本: 性能测试 - Locust dubbo client