1. 程式人生 > >分散式壓測工具Grinder的示例教程 : headers及Cookie設定

分散式壓測工具Grinder的示例教程 : headers及Cookie設定

在壓測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)