1

funkload を Cookie とうまく連携させるための設定に問題があります。fl-recordそれぞれが Cookie を送信する一連のリクエストをオンにして実行します。フォルダー パスを指定せずにコマンドを使用すると、出力は TCPWatch-Proxy 形式で保存され、すべての Cookie の内容を確認できるため、それらが送信されたことがわかります。

たとえば、これは次の内容ですwatch0003.request

GET http://mydomainnamehere.pl/api/world/me/ HTTP/1.1
Host: mydomainnamehere.pl
Proxy-Connection: keep-alive
Referer: http://mydomainnamehere.pl/test/engine/
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.57 Safari/534.24
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: pl,en-US;q=0.8,en;q=0.6,fr-FR;q=0.4,fr;q=0.2
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: Beacon-ClientID=<<<some-beaconpush-id-here>>>; sessionid=<<<some-session-id>>>; fbs_<<<some-facebook-id>>>="access_token=<<<some-access-token>>>&expires=1308254400&secret=<<<some-secret>>>&session_key=<<<some-session-key>>>&sig=<<<some-signature>>>&uid=<<<some-user-id>>>"; Beacon-Preferred-Client=WebSocket

ただしfl-record、テスト ケースの名前を指定して実行し、funkload に出力を Python テストとして保存するように命令すると、すべての Cookie が省略されます。コードには、それらと関係のある行は 1 行もありません。

import unittest
from funkload.FunkLoadTestCase import FunkLoadTestCase
from webunit.utility import Upload
from funkload.utils import Data
#from funkload.utils import xmlrpc_get_credential

class Simple(FunkLoadTestCase):

    def setUp(self):
        """Setting up test."""
        self.logd("setUp")
        self.server_url = self.conf_get('main', 'url')
        # XXX here you can setup the credential access like this
        # credential_host = self.conf_get('credential', 'host')
        # credential_port = self.conf_getInt('credential', 'port')
        # self.login, self.password = xmlrpc_get_credential(credential_host,
        #                                                   credential_port,
        # XXX replace with a valid group
        #                                                   'members')

    def test_simple(self):
        # The description should be set in the configuration file
        server_url = self.server_url
        # begin of test ---------------------------------------------

        ...

        # /tmp/tmp5Nv5lW_funkload/watch0003.request
        self.get(server_url + "/api/world/me/",
                 description="Get /api/world/me/")

        ...

        # end of test -----------------------------------------------

    def tearDown(self):
        """Setting up test."""
        self.logd("tearDown.\n")

if __name__ in ('main', '__main__'):
    unittest.main()

構成ファイルもありますが、Cookie については何もありません。

一方、ドキュメンテーションには、fl には (Cookie サポート) があると記載されています。また、以前のリリースで Cookie のサポートに関するいくつかのバグ修正を見つけたので、これは単なる空のステートメントではないと推測できます。また、変更ログの 1 つで、「削除された Cookie」が出力に含まれていないと述べている箇所を見つけました。これは、おそらく問題は、記録された Cookie が削除対象としてマークされているか、TCP-Watch 形式から実際のテストケースへの変換時に fl によってそのように認識されていることではないかと思いました。ただし、これは単なる推測です。

知りたい:

  • Cookie の funkload のサポートで成功したことがある場合。もしそうなら、どのバージョンを使用していましたか。
  • funkload に関する一般的な経験と、より複雑なセットアップで使用する価値があるかどうかについて。

編集

によって記録されたリクエストの一部は明らかTCPWatchに完全に無視され、出力テスト ケースには含まれません。なぜそれをするのか誰にも分かりますか?リダイレクトと関係がありますか?

編集(2)

わかりました。この1つのことは実際に理にかなっています。リダイレクトの結果は単にフォローするだけで生成されるため、除外されますHTTP 302 Found。ただし、Cookie の問題はまだ説明されていません。

4

2 に答える 2

0

Funkload にバグが見つかりました。Funkload は、「.」が先頭にある Cookie を正しく処理していません。ドメインで。現在、すべての Cookie は静かに無視されています。

このブランチを確認してください: https://github.com/sbook/FunkLoad

すでにプル リクエストを送信しました: https://github.com/nuxeo/FunkLoad/pull/32

于 2011-09-05T12:02:17.267 に答える