在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插件。这个插件使得Tsung可以模拟客户端与WebSocket服务器的交互,包括建立连接、发送文本或二进制数据、关闭连接等操作。这有助于评估WebSocket服务在高并发下的...
5. **实时监控和报告**:Tsung提供了丰富的实时监控数据,包括响应时间、吞吐量、错误率等,且支持生成详细的测试报告,便于分析测试结果。 6. **开源社区支持**:作为一个活跃的开源项目,Tsung拥有丰富的文档和...
1. **多协议支持**:TSUNG支持多种网络协议,使得它可以广泛应用于不同类型的系统和服务测试。 2. **高效的资源利用率**:即使是在普通硬件上,TSUNG也能够模拟大量的并发用户请求,对目标系统形成压力。 3. **集群...
1.3Multi-Protocols using a plug-in system多协议支持(通过插件方式实现):当前最新版本支持的协议插件有:HTTP , WebDAV, Jabber/XMPP, PostgreSQL,LDAP和MySQL 1.4SSL support 1.5利用底层osip别名技术,在单独的...
接着,通过以下命令安装Tsung: ```bash sudo apt-get install tsung ``` ## 2. 使用Tsung注册用户 Tsung支持通过XML配置文件来定义测试场景。为了测试Openfire的注册功能,你可以从`tsung/examples`目录下复制一...
3. **运行阶段**:Tsung 持续监控系统性能,并记录各种指标,如响应时间、吞吐量、失败率等。 4. **结束阶段**:测试完成后,使用 `tsung stop` 命令停止测试,Tsung 会生成详细的测试报告,分析结果可以帮助我们...
1. **支持多种协议**:除了XMPP,Tsung还支持HTTP、MySQL等多种常见协议。 2. **分布式架构**:能够跨多台服务器进行部署,实现大规模的压力测试。 3. **高效性**:通过Erlang语言的并发特性,可以在较低硬件配置的...
3. **多协议支持**:通过插件机制支持多种网络协议。 4. **SSL 支持**:确保安全连接。 5. **IP 别名技术**:在单一机器上使用多个 IP 地址。 6. **Erlang 代理监控**:远程监控服务器资源如 CPU、内存、网络流量等...
随着时间的发展,Tsung不断完善并支持更多的协议和技术栈。 #### 二、特性 ##### 2.1 Tsung的主要特点 - **协议支持广泛**:支持HTTP、XMPP、PostgreSQL、MySQL等多种常用协议。 - **可扩展性强**:通过插件机制...
它支持多种协议,包括 HTTP、HTTPS、FTP、TCP 和ejabberd 等。`Tsung` 的强大之处在于它的可扩展性和灵活性,允许用户通过自定义脚本进行复杂的负载测试。 在执行完 `Tsung` 的负载测试后,它会生成一份详细的 JSON...
tsung的测试脚本,包含发送单人消息,群组消息,获取花名册等
MQTT压力测试之Tsung的使用 MQTT压力测试之Tsung的使用
Tsung是一款开源的压力测试工具,能够模拟多个用户对各种...Tsung作为一个跨平台工具,通过其多协议支持和易于理解的用户手册,能够帮助测试人员构建出符合需要的测试场景,从而对系统的健壮性和性能作出客观的评价。
- **分布式测试**:Tsung可以部署在多个节点上,模拟来自不同地理位置的并发用户,更真实地反映出实际的负载情况。 - **多协议支持**:覆盖了常见的网络协议,能够对Web应用、数据库、即时通讯等多种服务进行压力...
压力测试 压力测试 tsung linux
Openfire 3.9.3 Load Test Tsung配置xml,10万用户下集群测试的Tsung压力测试工具的jabber_cluster.xml,session 5分钟
5. **收集数据**:Tsung在运行过程中会记录各项性能指标。 6. **分析结果**:使用Tsung的内置报告工具或第三方工具分析测试数据,得出性能结论。 **RedDiamond系统分析** 在RedDiamond_Tsung_tests中,我们关注...
这个包是什么Tsung是多协议分布式负载测试工具。 它可用于测试基于IP的客户端/服务器应用程序(支持的协议:HTTP,WebDAV,SOAP,PostgreSQL,MySQL,LDAP,MQTT,AMQP和Jabber / XMPP)的可伸缩性和性能。 可以找到...
tsung高并发测试工具搭建(自己亲测,详细的一逼),改文档是自己一步一步摸索出来的,主要是安装tsung整个过程很详细,搭过的人,知道tsung的搭建依赖很恶心,不是一时半会能搞出来的
关于tsung工具的安装步骤以及使用过程中会遇到的常见问题解答