ApacheBenchmark与Rails3 authenticity_token的问题

时间:2011-02-15 05:44:56

标签: ruby-on-rails-3 apachebench

我试图在新的Rails 3应用程序中使用AB来进行性能记录/跟踪。 由于应用程序始终需要登录,因此我必须执行POST请求才能登录。 我能够将凭证放在一些文本文件中,如下所示,但AuthenticityToken正在解决问题。

#login_data.txt

user_account%5Busername%5D=admin&user_account%5Bpassword%5D=adminhr

#AB command

ab -v4 -n100 -t5 -T 'application/x-www-form-urlencoded' -p login_data.txt http://nhc.lvh.me:3000/

#The log

Started POST "/" for 127.0.0.1 at 2011-02-15 11:13:37 +0545
  Processing by CompaniesController#index as */*
  Parameters: {"user_account"=>{"username"=>"admin", "password"=>"[FILTERED]"}}
Completed   in 1ms

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):


Rendered /Users/millisami/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
Rendered /Users/millisami/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1194.0ms)
Rendered /Users/millisami/.rvm/gems/ruby-1.9.2-p136/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (1291.3ms)

问题是如何在使用ab时传递或忽略AuthenticityToken? 由于它是动态生成的,我可以在某处存储还是有其他更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您可以做的是建立一个除测试和开发之外的环境。您可以放置​​development.rb环境的副本并将其命名为benchmark.rb。

还在database.yml上为基准环境添加了一个条目。您可以复制开发条目的内容。

然后在您的代码中,如果环境是基准测试,您可以跳过验证真实性令牌。现在启动rails s -e benchmark并针对该服务器执行基准测试。