Apache Bench и данные POST - PullRequest
       4

Apache Bench и данные POST

10 голосов
/ 10 сентября 2010

Я пытаюсь использовать apache bench для загрузки теста действия create в моем приложении rails, но ab, похоже, не отправляет данные POST - хотя он правильно отправляет POST, а не GET-запрос.

это команда, которую я запускаю:

ab -n 1 -p post -v 4 "http://oz01.zappos.net/registrations"

и это содержимое файла записи:

authenticity_token=M18KXwSOuIVbDPZOVQy5h8aSGoU159V9S5uV2lpsAI0

журналы рельсов показывают POST-запрос, поступающий, но непоказать все публикуемые параметры:

Started POST "/registrations" for 10.66.210.70 at Thu Sep 09 17:48:06 -0700 2010
  Processing by RegistrationsController#create as */*
Rendered registrations/new.html.erb within layouts/application (14.0ms)
Completed 200 OK in 24ms (Views: 14.6ms | ActiveRecord: 0.1ms)

, тогда как запрос POST, поступающий из браузера, приводит к этой записи журнала:

Started POST "/registrations" for 192.168.66.20 at Thu Sep 09 17:49:47 -0700 2010
  Processing by RegistrationsController#create as HTML
  Parameters: {"submit"=>"true", "authenticity_token"=>"AfNG0UoTbJXnxke2725efhYAoi3ogddMC7Uqu5mAui0=", "utf8"=>"\342\234\223", "registration"=>{"city"=>"", "address"=>"", "name"=>"", "zip"=>"", "optin"=>"0", "state"=>"", "email"=>""}}
Rendered registrations/new.html.erb within layouts/application (13.7ms)
Completed 200 OK in 24ms (Views: 14.3ms | ActiveRecord: 0.1ms)

и, наконец, вот что ab записывает в журнал для запроса:

---
POST /registrations HTTP/1.0
User-Agent: ApacheBench/2.0.40-dev
Host: oz01.zappos.net
Accept: */*
Content-length: 63
Content-type: text/plain


---

почему он не получает данные поста?

если файла "post" нет, то я получаю сообщение об ошибке, в котором говорится, что файл не найден, поэтому япо крайней мере знаю, что он находит файл ...

Ответы [ 2 ]

10 голосов
/ 24 января 2011

Может быть, вам нужна опция -T, как указано в man ab: -

ab -n 1 -p post -v 4 -T application/x-www-form-urlencoded "http://oz01.zappos.net/registrations"

Я тестировал с Django, и кажется, что Django на самом деле не заботится о заголовке типа контента (он отображал контент POSTed независимо от того, использовал я -T или нет), но Rails, возможно, захочет.

4 голосов
/ 09 марта 2012

Старый вопрос, но ради кого-то еще, кто ищет SO для этого, вот как я заставил его работать.

Убедитесь, что ДОПОЛНИТЕЛЬНО убедитесь, что ваш почтовый файл правильно закодирован URL без лишних непечатных символовили что-нибудь в конце.Самый безошибочный способ - просто создать его с помощью кода.Я использовал Python для создания моего:

>>> import urllib
>>> outfile = open('post.data', 'w')
>>> params = ({ 'auth_token': 'somelongstringthatendswithanequalssign=' })
>>> encoded = urllib.urlencode(params)
>>> outfile.write(encoded)
>>> outfile.close()

Пример вывода:

auth_token=somelongstringthatendswithanequalssign%3D
...