注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Fly to the Sky!

很多人因为寂寞而错爱一个人,更多人因为错爱一个人而寂寞一生。

 
 
 

日志

 
 

grinder---HTTP Plugin  

2009-11-03 10:22:17|  分类: grinder |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

What's it for?

HTTP Plugin是一个成熟的测试HTTP服务的插件。它有很多对测试HTTP脚本有用的实用程序,如同一个工具,如TCPProxy允许自动录制HTTP脚本。录制的脚本通常是自定义的,例如模拟多用户的情况。这要求你至少了解如何编写脚本。

HTTPPlugin内嵌在Grinder中,当一个脚本import它的任何一个class时就会对其进行初始化。例如:

from net.grinder.plugin.http import HTTPRequest

 

    该插件提供的一个关键类是HTTPRequest。了解如何使用该类的最好方法是使用TCPProxy录制一个脚本。

Plugin为每个worker线程维护一个连接和Cookies cache,该cache在每一个run前都会被重置。每个run由一个worker线程执行,模拟由用户发起的一次browser会话。在一次run开始之前重置线程的cookies,使得基于cookie跟踪的服务器应用程序创建一个新的会话。

如果服务器应用程序使用的是其它会话跟踪机制(如URL重写或隐藏参数),则需要脚本捕捉和重发相应的token

如果测试中包含一个HTTPRequest,则该插件将搜集更多统计数字,包括HTTP状态码,响应消息体长度,以及连接时间信息。这些统计数字将在console显示,并记录在data日志文件中。如果一个测试中包含多个HTTPRequest,会纪录到最后一个响应的状态码。

Controlling the HTTPPlugin

插件的行为可以由 Grinder脚本通过HTTPPluginControl facade来控制。

Levels of Control控制级别

HTTPPluginControl facade提供了三种级别的HTTPPlugin行为控制:

  1. Default Connection Behaviour 默认连接行为
    • Method: getConnectionDefaults
    • 返回一个HTTPPluginConnection,可以用来设置一个新连接的默认行为。
  2. Thread Connection Behaviour 线程连接行为
    • Method: getThreadConnection
    • 为一个独有的URL返回一个HTTPPluginConnection
    • HTTPPluginConnection对当前Thread和当前run是有效的。可用来对一个 per-URL basis上当前的thread/run设置指定的认证详情,默认消息头,cookies,代理服务器等.
    • 如果不是由worker线程调用,该方法会抛出GrinderException
  3. Thread HTTPClient Context Object Behaviour
    • Method: getThreadHTTPClientContext
    • 为调用该方法的worker线程返回HTTPClient context对象。当需要直接调用HTTPClient方法时,该方法是十分有用的,例如:CookieModule.listAllCookies(Object)
    • 如果不是由worker线程调用,该方法会抛出GrinderException

Importing the HTTPPluginControl

插入以下语句到grinder脚本中:

from net.grinder.plugin.http import HTTPPluginControl

Setting an HTTP proxy

如果需要指定一个HTTP代理发送请求消息,可以通过以下代码指定默认HTTP代理:

control = HTTPPluginControl.getConnectionDefaults()

control.setProxyServer("localhost", 8001)

HTTP代理同样可以在线程连接级别指定。如下,针对一个URL指定代理。

proxyURL1 = HTTPPluginControl.getThreadConnection("http://url1")

proxyURL2 = HTTPPluginControl.getThreadConnection("http://url2")

proxyURL1.setProxyServer("localhost", 8001)

proxyURL2.setProxyServer("localhost", 8002)

Setting HTTPClient Authorization module:

在默认情况下,HTTPClient认证模块已不再可用,因为它会阻止原始认证消息头的发送。另外,该模块也会降低速度,因为HTTPClient必须解析响应消息。

仍希望使用HTTPClient认证模块的用户可以通过以下代码激活它。

control = HTTPPluginControl.getConnectionDefaults()

control.setUseAuthorizationModule(1)

See the Digest Authentication sample in the script gallery.

Setting HTTP Headers

HTTPPlugin允许设置请求消息中的HTTP 消息头。该方法将设置定义为header-name/value对。

control = HTTPPluginControl.getConnectionDefaults()

control.setDefaultHeaders(NVPair("(header-name)", "(value)"),))

典型消息头有Accept及相关Accept-*Connection, From, User-Agent等。

例如,断开长连接如下:

control = HTTPPluginControl.getConnectionDefaults()

control.setDefaultHeaders(NVPair("Connection", "close"),))

Setting Encoding

ContentTransfer的编码通过一个布尔值控制。

control = HTTPPluginControl.getConnectionDefaults()

control.setUseContentEncoding(0)

control.setUseTransferEncoding(1)

Setting Redirect Behaviour设置重定向行为

HTTPPplugin行为中是否开启重定向通过一个布尔值控制。

control = HTTPPluginControl.getConnectionDefaults()

control.setFollowRedirects(0)

Setting Local Address

如果在一个带有多重网络接口的服务器上测试,则可以通过HTTPPlugin为出站连接设置本地IP地址。

control = HTTPPluginControl.getConnectionDefaults()

control.setLocalAddress("(local IP Address)")

Setting Timeout Value

用于创建连接和读取响应消息的延时时间的值可以通过HTTPPlugin控制。

下面的例子,对所有连接设置一个默认的延时时间为30秒。

control = HTTPPluginControl.getConnectionDefaults()

control.setTimeout(30)

Setting Cookie Behaviour

对于是否使用cookies由一个布尔值控制。

control = HTTPPluginControl.getConnectionDefaults()

control.setUseCookies(0)

  评论这张
 
阅读(1305)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017