在Websocket for
Tsung一文中有提到如何扩展Tsung支持自有协议,这里所说的插件式协议支持是指上文中提到的第一种方式:作为session type,本文说明下它的实现原理。
tsung的配置文件中会有sessions这一节,主要配置会话进程跟测试服务器之间的交互过程。sessions可包含多个session,每个session有不同的概率,在会话进程选择session时,会根据这个概率来决定使用哪个session。
每个session都有个type属性,定义与测试服务器交互时使用的协议(应用层协议,如HTTP,XMMP等)。Tsung本身是通过一种插件式的方式来支持不同的协议的,所以可以很方便的扩展。
TSUNG_ROOT/src/tsung/ts_plugin.erl定义了支持一个协议所需要实现的接口。如ts_http就是通过behavior(ts_plugin)(这里的behavior跟Java中的implements作用相似)的方式来声明它支持所有ts_plugin定义的操作(当然,也可以不用behavior那个声明,只要实现了它定义的方法也行)。
ts_config.erl(TSUNG_ROOT/src/tsung_controller/ts_config.erl)在解析配置时,会匹配session的type,并通过SessionType:parse_config的方式来解析该session的配置,比如配置session
type为ts_http,那么会通过ts_http:parse_config(TSUNG_ROOT/src/tsung/ts_htpp.erl)来解析session中的配置。而ts_http:parse_config会把解析的任务交给ts_config_http.erl(TSUNG_ROOT/src/tsung_controller/ts_config_http.erl)来完成(下文以http协议说明)。
解析一个session配置最重要的任务就是解析其中向测试服务器发送信息的请求。比如http协议,ts_config_http通过parse_config函数解析要请求的地址(不包括host信息,这已经在server节中配置过)、http访求,甚至agent信息(模拟),并生成一个http_request结构(定义在TSUNG_ROOT/include/ts_http.hrl),然后将此http_request做为参数生成一个ts_request:tsung中代表请求的数据结构(TSUNG_ROOT/include/ts_profile.hrl)。
会话进程启动后,首先进行的就是匹配session中定义的操作(通过ts_client:handle_next_action)。在匹配到下一个操作是向测试服务发请求(配置文件中的<request>,通过ts_request匹配)的动作后,会调用ts_client:handle_next_request来创建一个TCP连接,并通过回调函数ts_http:get_message拿到这个请求要发送的数据,然后通过此TCP连接发送到测试服务器。
一般情况下,一个请求发出去后,有两种结果:一种是等待服务器响应,一种是无视响应继续下一个动作。如果是等待服务器的响应,那么当收到服务器的响应时,是通过ts_client:handle_info回调ts_http:parse来处理的。另外,有些应用使用的协议,服务器会主动向客户端发送消息(如websocket),它是通过ts_client:handle_info回调ts_http:parse_bidi来完成的。
搞清楚原理后就可以很方便的扩展一个自定义的协议了。
分享到:
相关推荐
tsung里面测试websocket的插件含 websocket.xml 等
1.3Multi-Protocols using a plug-in system多协议支持(通过插件方式实现):当前最新版本支持的协议插件有:HTTP , WebDAV, Jabber/XMPP, PostgreSQL,LDAP和MySQL 1.4SSL support 1.5利用底层osip别名技术,在单独的...
tsung的测试脚本,包含发送单人消息,群组消息,获取花名册等
tsung是一个非常好用的压力测试软件,基于erlang语言,支持多种协议如xmpp,http,mysql,支持集群,高效率,可以用一台普通的机器压垮几台性能强大的服务器。 针对消息通知服务xmpp服务器,可以用tsung来测试消息...
压力测试 压力测试 tsung linux
Openfire 3.9.3 Load Test Tsung配置xml,10万用户下集群测试的Tsung压力测试工具的jabber_cluster.xml,session 5分钟
Tsung安装使用的详细解说,主要针对xmpp的服务端(比如openfire的测试),编写测试场景的脚本配置详细说明。本人使用的是ubuntu操作系统、Tsung1.4.1
tsung为一个开源的多协议分布式负载测试工具,使用erlang语言开发的。具体安装使用可以参考URL:http://www.51ste.com/share/det-222.html
MQTT压力测试之Tsung的使用 MQTT压力测试之Tsung的使用
tsung+erlang测试工具,初学者应用必备,内部放置tsung源程序文件和erlang文件
这个包是什么Tsung是多协议分布式负载测试工具。 它可用于测试基于IP的客户端/服务器应用程序(支持的协议:HTTP,WebDAV,SOAP,PostgreSQL,MySQL,LDAP,MQTT,AMQP和Jabber / XMPP)的可伸缩性和性能。 可以找到...
tsung-react-stats 从 json 报告中显示 tsung 统计信息
tsung 测试 java erlang
tsung高并发测试工具搭建(自己亲测,详细的一逼),改文档是自己一步一步摸索出来的,主要是安装tsung整个过程很详细,搭过的人,知道tsung的搭建依赖很恶心,不是一时半会能搞出来的
关于tsung工具的安装步骤以及使用过程中会遇到的常见问题解答
RedDiamond_Tsung_tests:RedDiamond的负载测试
tsung最新用户手册,包含HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP, and Jabber/XMPP servers压力测试模版,错误说明等。
tsung安装使用,参数说明,模拟openfire注册用户,模拟用户openfire登录、状态更改、发送消息,对openfire长时间压力测试
—tsung-1.5.0.tar.gz —libtemplate-perl_2.20.orig.tar.gz —gnuplot-4.4.0.tar.gz —otp_src_R15B.tar.gz —perl-HTML-Tagset-3.10-2.1.1.noarch.rpm —perl-HTML-Parser-3.55-1.fc6.x86_64.rpm —...
tsung:性能测试工具