4

Rails (3.2.13) アプリケーションを httperf で負荷テストしようとしています。Cookie を必要としないページでは非常にうまく機能しました。しかし、Cookieが必要なページではうまくいきませんでした。公式バージョンは大きな Cookie をサポートしていないため、Gregg Pollack の httperf ( https://github.com/Gregg/httperf_big_cookies ) を使用しています。

使用したコマンドは次のとおりです。

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

そのため、レールアプリケーションの負荷をテストするための問題またはより良いツール (コンソールベース) を克服する方法を教えてください。

4

1 に答える 1

5

Rails に付属する CSRF 検証で問題が発生している可能性があります。ログを確認して、次の行が表示されている場合は、それが理由です。

WARNING: Can't verify CSRF token authenticity

回避策として、テストで使用する「secret/master」トークンを作成して CSRF 検証をバイパスし、それを有効なものとして受け入れるようにアプリケーションに指示します。たとえば、ApplicationController の「」の直後に次の行を追加します。 protect_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 に答える