2B4G项目需要做一些线下的压力测试

来源:互联网 发布:java erp系统源码下载 编辑:程序博客网 时间:2024/06/02 05:05

原文:2B4G项目需要做一些线下的压力测试

一、登陆桩做什么?

2B4G项目需要做一些线下的压力测试,主要是针对新增的一些模块的性能进行测评,所以需要提供一个模拟登陆服务的桩以Support这个测评工作。登陆桩它是个Mock的登陆服务,在接收到登陆请求以后,模拟真实的登陆服务,构造一个认证后的串作为响应报文返回,达到模拟登陆的目的。2B4G
二、登陆桩该怎么做?
根据上面对登陆桩需求的分析,我们可以把登陆桩的实现划分如下:
1. 监听服务:建立一个TCP连接,在指定端口监听登陆请求;
2. 解析请求包:收到的请求包是按照一定格式压缩加密而来的,桩需要对其解密解压缩把我们需要关注的字段取出来;
3. 构造响应包:根据我们解析后的请求报文,我们按照真实登陆服务的响应报文格式去构造该条请求报文所对应的响应报文,然后对该报文压缩加密后响应给请求方;
4. 并发性:桩需要支持多个账户并发模拟登录,所以我们需要实现的服务应该是一个多线程的。
三、大刀阔斧实现登陆桩!
请求响应报文的格式涉及到公司的机密,所以不在这里详细表述。报文主要的思路就是:
实例-->Json化-->pack-->加密-->发送----------------接收--------------->解密-->unpack-->反Json化-->得到具体的字段信息.
构造响应包-->Json化-->pack-->加密-->响应!
今天的主要内容是并发Socket的使用,在Python中,使用SocketServer模块建立连接,SocketServer.ThreadingTCPServer类支持并发TCP连接。那么该怎么使用这个并发TCP服务呢?让我们一步步慢慢来。
首先就是实现一个自定义的TCPHandle类了,我是这样定义的:
class MyTCPHandle(SocketServer.StreamRequestHandler):
在该自定义类中,需要实现handle方法:
def handle(self):
最后就是在main中去建立TCP连接:
mockserver = SocketServer.ThreadingTCPServer(('', int(sys.argv[1])), MyTCPHandle)
第二个参数是服务的端口,我是通过传参的方式去完成的。
最后,TCP开始了忙碌的工作:
mockserver.serve_forever()
这篇日志,从7月28就开始写,一直忙工作,时间抽不出来,今天算是下定决心给写完了。不过看内容方面,明显和我当时打算写日志时候差了很多,就这样吧,希望能多少帮到大家一点!


0 0
原创粉丝点击