Skip to content

Webサーバの移行時にテストとかできるツール

Notifications You must be signed in to change notification settings

maretol/twister

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Twister

[Twi]n page te[ster] -> Twister

2つのWebページを比較する。

APIサーバとかWebサーバで破壊的更新をしなければならないときとかに確認する

Using

実行バイナリまだ作ってないから自分でビルドするか go run main.go で補完してほしい


まず設定ファイルの土台を作ってあげる

$ twister config create

たぶん実行ディレクトリに twisterconf.json ってのができたはず

example:

実際に動かしてみる

たとえばWebサーバに破壊的変更が入って更新する必要があったとする

  • URL1 : https://old.server/
  • URL2 : https://new.server/

こんな感じのアドレスの場合、twisterconf.json に

  "urls": [
    "http://old.server",
    "http://new.server"
  ],
  "paths": [
    "/api/test/"
  ]

と書いてあげる。 paths はアドレスの共通部分を書いてあげる

あとは実行したらそれぞれのアドレス、 http://old.server/api/testhttp://new.server/api/test にアクセスし、結果を比較してくれる。

もし結果が同じなら"Not exist the result to show"って答えてくれる。違ったら差分を出せるようにしたい(現状は一応差分を出してくれるが完璧な状態ではない)

Option

表示時にURLだけだとわからないケースでもURLにタグ付けしてあげると表示時にそっちを使ってくれる

その場合、設定ファイルには

  "urls": [
    {
      url: "http://old.server",
      tag: "old"
    },
    {
      url: "http://new.server",
      tag: "new"
    }
  ],

と書いてあげればいい

example2

configファイルのurlは非共通部分、pathsはパスの共通部分で分けているので

  "urls": [
    "http://api.server/v1/",
    "http://api.server/v2/"
  ],
  "paths": [
    "/api/test?q=hogehoge"
  ]

みたいな形で少しだけ応用してテストすることもできる。

その他

ヘッダー、ステータスコード、ボディの3要素を比較しているが、設定ファイルのそれぞれをfalseにすると比較しなくなる。

ヘッダー比較時はJSONの urls と同じ階層に

  "header": {
    "ignore": [
      "Date",
      "Timestamp",
      "API-Key"
    ]
  }

のように設定すると比較をスルーしてくれる

実行時にパラメータを設定するとconfigを上書きして比較したり、--config で任意のコンフィグファイルを渡せるようになってるはず。

to do

  • HTTPアクセスの並列処理
  • 3つ以上のページの比較
  • responseがJSONやXMLだったときはテキストとしての比較ではなくデータ各要素の比較にしたい
  • Color 対応
  • リファクタリング
  • test追加&CI対応

license

たぶん MIT になる。(I may apply MIT License)


Used Library


This software includes the work that is distributed in the Apache License 2.0.

About

Webサーバの移行時にテストとかできるツール

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages