首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Tsung源码分析(3):Tsung插件式协议支持

2012-07-03 
Tsung源码分析(三):Tsung插件式协议支持?TSUNG_ROOT/src/tsung/ts_plugin.erl定义了支持一个协议所需要实

Tsung源码分析(三):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的配置,比如配置sessiontype为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来完成的。

?

???????? 搞清楚原理后就可以很方便的扩展一个自定义的协议了。

热点排行