RDS TestRunnerは、RDSの最新SnapshotからDBを複製し、それに対して各種クエリを実行し、完了までの時間を計測します。 利用可能なRDSのEngineは、MySQLのみです。
もう少し細かく言うと、以下の作業をします。
- RDSの最新SnapshotからDBを複製する
- インスタンス名は実行ユーザー名を元に自動で付与される
- DB Warm up用のSQLを投入する
- 列挙したSQLクエリを投入、各クエリの実行時間を計測する
- チャットに実行完了通知を送る
- 現在はHipChatのみ
DBの複製機能以外はOptionalです。また、複製したDBの一括破棄もできます。
RDS TestRunnerの使い方を紹介します。
クエリの計測には、open
コマンドを使い、-q
でクエリを列挙したファイルを渡して実行します。
(クエリファイルは、現状では1行毎に評価・計測するようになっているので注意してください。)
rds-testrunner open -q test-query.sql
default
以外に設定したresource
があれば、下記のようにパラメータで切替できます。
rds-testrunner open -r "fooresource" -q foo-test-query.sql
また、DBのInstance Typeを変更したい場合にも-t
で指定できます(デフォルトではdb.m3.medium
)
rds-testrunner open -t db.m3.large -q foo-test-query.sql
rds-testrunnner --help
および rds-testrunner open --help
を参照してください。
利用し終わったDB群をまとめて破棄します。
rds-testrunner close
現在、自分が起動しているミラーDBの一覧を表示します。
rds-testrunner list
バイナリをDownloadしてください。
適当にpathの通ったところにrds-testrunner
のバイナリを置けば利用できます。
rds-testrunner
は設定ファイルとして/etc/rds-testrunner.conf
もしくは$HOME/.rtrrc
を読み込みます。両方ある場合は後者が優先されます。
設定ファイルの書式にはHashiCorpが先日リリースしたHCLを利用しています。
設定例は、rds-testrunner.conf.example
にあります。
resource "default" {
instance = "crocos-test-db"
region = "ap-northeast-1"
uesr = "dbadmin"
password = "dbpassword"
warmup = "/tmp/warmup-query.sql"
}
resource "other..." {
..
}
aws {
key = "AWS_ACCESS_KEY_ID"
secret = "AWS_SECRET_ACCESS_KEY"
}
notify {
type = "hipchat"
token = "hipchat token"
room = "notify room id or name"
}
resource
ディレクティブにはDBインスタンスの情報を記載します。
複数定義することができ、標準ではdefault
が利用されます。
コマンド実行時に-r
で対象とするresource
の種類を指定することができます。
aws
ディレクティブにはCredential情報を記載します。
この項目を設定する代わりに、ENVにAWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY
をexportしておくか、IAM credentialを使える環境でも実行できます。
チャットへの通知に関するディレクティブです。
現在は、type
としてhipchat
のみが指定可能です。
token
にアクセストークン、room
に通知先のroom_id or room名を指定してください。
ライブラリの依存関係の管理にはgodep
を利用しています。
godep get
にて必要なライブラリを取得できます。
また、buildにはパッケージのディレクトリに移動して
go build
もしくは
gox -output="build/{{.OS}}/{{.Arch}}/{{.Dir}}"
でbuildできます。