ApacheBenchmark ab проблема с Rails3 authenticity_token - PullRequest
2 голосов
/ 15 февраля 2011

Я пытался поиграть с AB для записи / отслеживания производительности в новом приложении Rails 3. Поскольку приложение всегда требует входа в систему, мне пришлось сделать запрос 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)

Проблема в том, как передать или игнорировать этот AuthenticityToken при использовании ab? Так как он генерируется динамически, могу ли я хранить где-нибудь или есть другое лучшее решение?

1 Ответ

0 голосов
/ 05 сентября 2012

Что вы могли бы сделать, это настроить среду помимо тестирования и разработки. Вы можете поместить копию среды development.rb и назвать ее benchmark.rb.

Также добавьте запись в database.yml для тестовой среды. Для этого вы можете скопировать содержимое записи разработки.

И тогда в вашем коде вы можете пропустить проверку токена подлинности, если среда является эталонной. Теперь запустите rails s -e benchmark и выполните свой тест на этом сервере.

...