4

我正在尝试使用 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'

cookies方法总是nil在控制器内部返回。

所以,请建议我如何克服这个问题或更好的工具(基于控制台)来测试 Rails 应用程序的负载。

4

1 回答 1

5

您可能在使用 rails 附带的 CSRF 验证时遇到问题。检查您的日志,如果您看到以下行,那就是原因:

WARNING: Can't verify CSRF token authenticity

一种解决方法是创建一个“秘密/主”令牌用于您的测试以通过 CSRF 验证,然后告诉您的应用程序接受它作为有效,例如,在您的 ApplicationController 中添加以下行保护_from_forgery”行:

skip_before_filter :verify_authenticity_token, :if =>lambda{ params[:authenticity_token].present? && params[:authenticity_token] == 'YOUR_SECRET_TOKEN' }

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

于 2013-07-01T22:28:40.610 回答