Appearance
qvsctl manifest test
Infrastructure Adapter から生成する Application Manifestを試験します。
使い方
qvsctl manifest test
説明
モジュールのルートディレクトリにある test
ディレクトリ配下に配置したテストケースを実行し、Adapter から生成する Application Manifest を試験します。
リモートにあるGitリポジトリのadapterをモジュールとして利用する場合は、リポジトリへの接続方法に応じて以下の環境変数を設定してください。
- HTTPS接続用:
GIT_TOKEN
- SSH接続用:
GIT_SSH_KEY_PATH
Warning
これまでGitアクセストークンの指定にはGITHUB_TOKEN
という環境変数を用いていましたが、こちらは非推奨となります。
HTTPS接続にはGIT_TOKEN
を使用してください。
// Gitのアクセストークンを環境変数GIT_TOKENに設定
export GIT_TOKEN=ghp_AbCdefghiJklmnopqrStuVwXyz1234567890
// SSH接続用の秘密鍵の絶対パスを環境変数GIT_SSH_KEY_PATHに設定
export GIT_SSH_KEY_PATH=/home/user/.ssh/id_ecdsa
以下は simple
という Adapter を試験する際のディレクトリ構成の一例です。
.
├── kubernetes
│ ├── deployment
│ │ └── simple
│ │ └── main.cue
│ └── types.cue
└── test
├── simple
│ ├── qvs.yaml # 試験対象の Adapter を利用する QVS Config
│ ├── params.json # コンパイル時に利用するパラメータファイル
│ └── results
│ └── manifests.yml # コンパイルした結果、生成を期待する Manifest
└── test.cue # テスト定義ファイル
テスト定義ファイルは、以下の仕様に従ってCUE言語で記述します。
designpattern_test
というパッケージ名のCUEファイルであること。- テストケースは以下のスキーマに従うこと。
- テストをSKIPしたい場合、
setup
またはmain
キーで"-"
を指定すること。
cue
#TestCase: {
config: string // QVS Config のファイルパス
param: string // Parameter ファイルのファイルパス
expected: {
setup: string // 下位互換のためキーであり、削除予定
main: string // app/main phase の期待値 Manifest を配置するディレクトリ
}
}
例えば、テストケースを以下のように定義します。ここで、objectのキー(例ではsimple
)がテストケース名に該当します。
simple: {
config: "./simple/qvs.yaml"
param: "./simple/params.json"
expected: {
setup: "-"
main: "./simple/results"
}
}
コマンド実行時の出力例は以下のとおりです。成功時には"PASS"という文字列を、失敗時には期待値との差分を表示します。
// 成功例
qvsctl manifest test
PASS
// 失敗例
qvsctl manifest test
--- FAIL: TestDesignPattern (0.43s)
--- FAIL: TestDesignPattern/simple/main (0.43s)
test.go:123: test failed for a command `qvsctl manifest compile -m . -c test/simple/qvs.yaml -p test/simple/params.json`
Manifest for apps/v1.Deployment/test-namespace/simple-test-app didn't match:
--- Expected
+++ Actual
map[string]interface{}{
... // 2 ignored and 3 identical entries
"spec": map[string]interface{}{
- "minReadySeconds": int(600),
+ "minReadySeconds": int(60),
・
・
・
-test.v
オプションを利用することで詳細なメッセージの表示が可能です。
qvsctl manifest test -test.v
=== RUN TestDesignPattern
=== RUN TestDesignPattern/simple/setup
test.go:73: Skipping test case
=== RUN TestDesignPattern/simple/main
--- PASS: TestDesignPattern (0.64s)
--- SKIP: TestDesignPattern/simple/setup (0.00s)
--- PASS: TestDesignPattern/simple/main (0.64s)
PASS
また、-test.run
オプションを利用することで特定のテストのみの実行が可能です。その他のオプションについては以下を参照してください。
オプション
-compiler.preserve テスト時に生成したManifestを削除せずに残します
-log_dir string 指定したディレクトリにログ出力をします
-test.parallel n 最大 n 並列でテストを実行します (Default: 8)
-test.run regexp 正規表現にマッチした test caseのみ実行します
-test.timeout d 期間 d (golang の time.ParseDuration で解析可能な文字列) が過ぎた場合 panic でテストを終了します、0指定で timeout は無効になります (Default: 0)
-test.v 詳細なログを出力