使用httperf进行Rails负载测试

Ash*_*sta 4 cookies ruby-on-rails load-testing httperf ruby-on-rails-3.2

我正在尝试使用httperf加载测试我的Rails(3.2.13)应用程序.它对于不需要cookie的页面非常有效.但是,我无法使它适用于需要cookie的页面.我正在使用Gregg Pollack的httperf(https://github.com/Gregg/httperf_big_cookies),因为正式版不支持大cookie.

这是我使用的命令:

httperf --session-cookie --wsesslog=1,5,path.txt --rate=1 --timeout=15 --server=localhost --port=3000

而且,这是path.txt文件:

    /log_in
    /sessions method=POST contents='utf8=?&remember_me=1&commit=Login&email=john@widgetsco.com&password=password'
Run Code Online (Sandbox Code Playgroud)

cookies方法始终返回nil控制器内部.

所以,请建议我如何克服问题或更好的工具(基于控制台)来测试铁路应用的负载.

gui*_*eva 5

您可能在使用rails附带的CSRF验证时遇到了麻烦.检查您的日志,如果您看到以下行,那么原因如下:

WARNING: Can't verify CSRF token authenticity
Run Code Online (Sandbox Code Playgroud)

解决方法可以是通过传递CSRF验证来创建用于测试的"秘密/主控"令牌,然后告诉您的应用程序接受它作为有效,例如,在"应用程序控制器"之后立即添加以下行. protect_from_forgery"line:

skip_before_filter :verify_authenticity_token, :if =>lambda{ params[:authenticity_token].present? && params[:authenticity_token] == 'YOUR_SECRET_TOKEN' }
Run Code Online (Sandbox Code Playgroud)

然后在httperf测试中,您应该发送带有参数的主令牌:&authenticity_token = YOUR_SECRET_TOKEN