分布式压测工具Grinder的示例教程 : headers及Cookie设置

本文详细介绍在使用Grinder进行HTTP服务压测时,如何正确设置Cookie模块以实现有效的会话管理。文章解释了直接在Header中设置Cookie的无效性,并通过示例代码展示了正确的设置方法,确保Cookie的域名与URL域名一致,从而提高压测的准确性和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在压测HTTP服务时常常需要在请求前设置headers字段,其中Cookie虽然是Header字段但是在Grinder里面必须要单独由CookieModule来设置,直接在Header里设置Cookie是不会生效的。需要指出的是Cookie的域名必须和GET的url中的域名完全相同,否则Cookie设置不会生效。以下是一个完整的示例。Grinder的配置可参考分布式压测工具Grinder的Hello World示例教程

 

from net.grinder.script.Grinder import grinder
from net.grinder.script import Test
from net.grinder.plugin.http import HTTPRequest, HTTPPluginControl
from HTTPClient import Cookie, CookieModule, CookiePolicyHandler
from HTTPClient import NVPair
from java.util import Date
import random
import string

log = grinder.logger.info

test1 = Test(1, "GET with headers")
request1 = HTTPRequest()
test1.record(request1)

class TestRunner:
    def __call__(self):
        domain = 'test.pengpengzhou.com'
        port = '8080'

        cookieValue = ''.join([random.choice(string.ascii_letters + string.digits) for n in xrange(15)])

        # Now let's add a new cookie.
        threadContext = HTTPPluginControl.getThreadHTTPClientContext()
        expiryDate = Date()
        expiryDate.year += 10

        cookie = Cookie("ckid", cookieValue , domain , "/", expiryDate, 0)
        CookieModule.addCookie(cookie, threadContext)

        uid = ''.join([random.choice(string.ascii_letters + string.digits) for n in xrange(12)])
        url = ''.join(["http://", domain , ":", port, "/htest?uid=",uid])
        headersGet = ( NVPair('Accept-Language', 'en-us,en;q=0.5'),  NVPair('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0'), )
        request1.setHeaders(headersGet)
        result = request1.GET(url)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值