0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

gossテストシナリオ作成 その1

まずgossでテストを実行する前に、テスト項目を作成する必要がある。

テストシナリオ作成第一歩

最もお手軽且つ個人的に最初に実行するのはgoss autoaddサブコマンドである。

前提としてgossは/usr/local/binにインストールされ、PATHが通っているものとする

goss autoadd [サービス名やユーザ名など]

[サービス名やユーザ名など]にはSystemdに登録されているservice名などを入力する。
すると、対象のサービスのSystemd上の状況(enable/disableやrunning/stoppedなど)の現在の状態を正とするテストシナリオをカレントディレクトリのgoss.yamlに出力する。

さらに対象サービスの実行ユーザの/etc/passwd上に載っているUIDやGIDなど、プロセスのステータス、ポートのListen状態などを現在の状態を正としてgoss.yamlに出力する。

またユーザ名を指定すれば、そのユーザが所属しているGroupに関する内容も引っ張ってきてテストシナリオとしてgoss.yamlに出力する。

さらにテストを作成する

この後もさらに goss autoadd keyword でテストを作成していくが
既にテストシナリオファイルがあると、上書きにならずどんどんテストシナリオを追記していく。

例えば

goss autoadd httpd
goss autoadd mariadb

と実行すると
goss.yamlにhttpdとmariadbのテストが両方書かれた状態となる。
後述するaddサブコマンドでのテスト追加でも同様です。

テストシナリオをファイル出力する際に、既にファイルがあれば一度読み込んでautoaddやaddの内容を追加した上で項目を並べなおしてファイル出力するようです。
ソース読めば確実にわかりますよ!
ただしこれはデメリットも一部ある(後述)ので注意は必要です。

この仕様のため、とりあえずautoaddでザクザクと実行するだけでざっくりとしたテストシナリオは出来上がります。

出力ファイル名を変える

テストシナリオファイル名は-gオプションで変更可能です。

goss -g WebServer.yaml autoadd httpd

またとりあえずデフォルトのgoss.yamlで出力しておいて、mvでファイル名を変更した後に
-gで変更後ファイル名にしてもちゃんと追記してくれます。

goss autoadd httpd
mv goss.yaml WebServer.yaml
goss -g autoadd mariadb

個人的には残していくテストシナリオファイル名は-gで何らかgoss.yaml以外のファイル名を付け、goss.yamlは試しで作成したテストや動作確認用として使うようにしています。

長くなってきたので続きはその2

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?