Skip to content

reqs2reqs

リクエストを変換します。

リクエストの先頭部分を抽出します。

Config

Definitions

Key Type Description Example Default
size int 抽出するリクエストの数 10

Examples

先頭の10リクエストを抽出する
reqs2reqs:
  - name: head
    config:
      size: 10

filter

条件に一致するリクエストのみを抽出します。

Config

Definitions

Root
Key Type Description Example Default
filters RequestCondition[] 本設定を反映させるRequestの条件
and_or (AndOr) conditionsをAND/ORどちらで判定するか and
negative (bool) 否定条件とするか true false
AndOr
Name Description
and AND条件
or OR条件

Examples

pathにokが含まれ かつ nameにOKが含まれるリクエストのみ抽出する
res2res:
  - name: filter
    config:
       and_or: and
       filters:
         - path:
             items:
               - regexp: .*ok.*
         - name:
             items:
               - regexp: .*OK.*

1つのfilter内でpathとnameをAND検索することもできます

res2res:
  - name: filter
    config:
      and_or: and
      filters:
        - path:
            items:
              - regexp: .*ok.*
          name:
            items:
              - regexp: .*OK.*    

add

先頭または末尾にリクエストを追加します。

Config

Definitions

root
Key Type Description Example Default
reqs Request[] 本設定を反映させるRequestの条件
location (Location) 先頭と末尾どちらに追加するか tail head
Location
Name Description
head 先頭
tail 末尾

Examples

末尾に/rest/sample?word=hogeというリクエストを追加する
reqs2reqs:
  - name: add
    config:
      reqs:
        - path: /rest/sample
          qs: {word: [hoge]}
      location: tail

replace

条件に一致するリクエストを置換します。

Config

Definitions

Root
Key Type Description Example Default
items Replacer[] 置換設定のリスト
Replacer
Key Type Description Example Default
conditions RequestCondition[] 置換するRequestの条件
and_or (AndOr) conditionsをAND/ORどちらで判定するか and
negative (bool) 否定条件とするか true false
queries dict[str[]]) 置換するクエリ
{"a": [1], "b": [2, 3]}
headers dict[str] 置換するヘッダ
{"header1": 1, "header2": 2}
AndOr
Name Description
and AND条件
or OR条件

queriesheadersについて

リクエストに存在しないクエリやヘッダの場合は、設定した値が追加されます

Examples

pathが/targetと一致するリクエストのクエリを置換する (id=dummay_id, time=dummy_date)
reqs2reqs:
  - name: replace
    config:
      items:
        - conditions:
            - path:
                items:
                  - regexp: /target
          queries:
            id: ["dummy_id"]
            time: ["dummy_date"]

shuffle

リクエストの順序をシャッフルします。

Config

Definitions

Config設定はありません。

Examples

リクエストをシャッフルする
reqs2reqs:
  - name: shuffle

repeat

リクエスト全体を指定回数だけ複製します。

Config

Definitions

Key Type Description Example Default
times int 複製する数 10

Examples

リクエスト全体を10回複製する
reqs2reqs:
  - name: repeat
    config:
      times: 10

empty_guard

リクエストが空の場合に処理を中断します。

Prerequirements

Slackの場合

環境変数 SLACK_INCOMING_WEBHOOKS_URLIncoming webhookのURIを設定して下さい

Config

Definitions

root
Key Type Description Example Default
notifies (Notify[]) 処理を中断する時の通知設定
Notify
Key Type Description Example Default
notifier string 使用する通知設定の名前 jumeaux
message string 送信するメッセージ
{{ title }}を中断しました

notifierについて

TODO: 後日マニュアルに記載します。
それまでの間、設定例はテストコードtest_empty_guardを参考にしてください。

messageついて

jinja2の表現を利用できます。
プロパティはConfigurationで定義されたものを使用できます。

Examples

リクエストが空の場合に処理を中断する
reqs2reqs:
  - name: empty_guard
リクエストが空の場合にnotifier jumeauxを使用して通知 および 処理の中断をする
reqs2reqs:
  - name: empty_guard
    config:
      notifies:
        - notifier: jumeaux
          message: "{{ title }} notify!"

notifier: jumeauxについて

Jumeauxのconfigに以下のような設定が必要です。

notifiers:
  jumeaux:
    type: slack
    channel: "#jumeaux"
    username: jumeaux
    icon_emoji: "jumeaux"

rename

条件に一致するリクエストの名称を変更します。

Config

Definitions

Root
Key Type Description Example Default
conditions Condition[] 変更値と条件
Condition
Key Type Description Example Default
name str 変更後の名称
{{ name }} ({{ path }})
when str 条件式
"qs.id.0 == 1"

nameおよびwhenについて

jinja2の表現を利用できます。
プロパティはrequestで定義されたものを使用できます。

nameはテンプレート部分を{{ }}で囲む必要があります。
一方、whenは式であるため{{ }}で囲む必要はありませんが、代わりに文字列はクォートで囲って下さい。

Examples

pathにtargetという文字列が含まれる場合にrenamedへ名称を変更する
reqs2reqs:
  - name: replace
    config:
      conditions:
        - name: renamed
          when: "'target' in path"
複雑な条件
  1. pathが小文字のアルファベット3文字である場合はGOODへ名称を変更する
  2. 1に該当せずidが1つだけ指定されており、かつ2より大きい場合は<クエリのid>: <元の名称>へ名称を変更する
    2-1. 例えばid=4で名称がhogeのとき、新しい名称は4: hogeとなる
  3. 1と2に該当しない場合は名称を変更しない
reqs2reqs:
  - name: replace
    config:
      conditions:
        - name: "GOOD"
          when: "path|reg('[a-z]{3}')"
        - name: "{{ qs.id.0 }}: {{ name }}"
          when: "qs.id|length == 1 and qs.id.0|int > 2"