コンテンツへ移動

リプレイ

リプレイは Chronicle で最もリスクの高い境界です。canonical session と protocol interface を消費し、記録された production 宛先へ再接続することはありません。

  • command mode は、target に依存しない計画の完了後にのみ、Chronicle が所有する監視対象 listener に対して実行と読み取りの効果を認可します。
  • explicit-target mode は、--execute と必要なすべての target/effect gate が指定されるまで dry-run のままです。
  • 書き込みには常に明示的な認可(--allow-write)が必要です。認証、公開、未知の効果は拒否されたままです。
  • すべての canonical connection に target mapping が必要です。
  • 記録された宛先はフォールバックに使いません。
  • incomplete、malformed、unmatched、unsupported、pipelined、または曖昧な欠損を含む操作は表示されたままになり、実行しません。

command mode はアプリケーションの監視対象コピーを起動し、その scope が所有する一意の loopback listener を 1 つ検出します。

Terminal window
chronicle replay checkout -- ./my-app

ターゲットを起動する前に計画と拒否チェックを完了します。command mode は監視対象コピーの loopback target と一致する host を推測できますが、書き込み、認証、公開、未知の操作を認可することはありません。

すでに起動しているアプリケーションには、loopback の IP リテラル target と必要なすべての gate を指定します。

Terminal window
chronicle replay checkout \
--target http://127.0.0.1:8080 \
--allow-host 127.0.0.1 \
--allow-read \
--execute

Explicit-target mode には次が必要です。

  • http:// と loopback IP リテラル;
  • target と同じ --allow-host 値を繰り返し指定すること;
  • --allow-read または --allow-write などの操作の認可;
  • --execute

書き込みには追加で --allow-write が必要です。設定だけでこれらの実行 gate が暗黙に付与されることはありません。

上限付きの平文 HTTP/1.1 では、リプレイはキャプチャした Host、hop-by-hop field、AuthorizationProxy-AuthorizationCookie、forwarding header、ExpectTransfer-Encoding を削除します。target 用の Host を 1 つ出力し、Content-Length を再計算します。redirect は追跡しません。任意の認可情報は設定された環境変数名からのみ取得し、キャプチャした credential は使いません。

検証では status、body の SHA-256/size、無視対象ではない header の順序を比較します。詳細出力に body や任意の header value を含めません。結果は passed、failed、skipped、inconclusive、unsupported operation を区別します。