はじめに
CWL では仕様が公開されているため、自分で CWL 準拠のワークフローエンジン(e.g.,「僕の考えた最強のワークフローエンジン」)を作成することも可能です。
またGithub のリポジトリで準拠度を計るためのテスト集 (以下では conformance test と呼びます) も公開されているため、自作したエンジンの準拠度を調べることも簡単に行なえます。
この記事ではワークフローエンジンの準拠度を確認できる conformance test の実行方法を解説します。
注意!
この記事は CWL に対応したワークフローエンジンを実装する人向けの記事です!
CWL を書いて利用する一般の方は、お茶でも飲みながら軽い気持ちで読んでいただければ幸いです。
conformance test の実行方法
事前準備
$ git clone git@github.com:common-workflow-language/common-workflow-language.git
$ cd common-workflow-language
$ pip install cwltest
どう使うの
困ったときは --help
で使用方法が出てきます。
$ ./run_test.sh --help
run_test.sh: Run common workflow tool description language conformance tests.
Syntax:
...
とにかく全部テストしたい
$ ./run_test.sh
デフォルトでは cwl-runner (通常はリファレンス実装である cwltool) の準拠度テストを、v1.0/conformance_test_v1.0.yaml に書かれたテストを用いて行います。
出力は以下の形式になります。
$ ./run_test.sh
...
153 tests passed, 13 failures, 29 unsupported features
1 tool tests failed
この例は、195個のテスト中153個はパス、13個は失敗、29個のテストは処理系が未サポートの機能を含むためスキップされたことを示しています。
特定のテストだけ実行したい
$ ./run_test.sh -n=1
上記では、一番最初のテストのみ実行します。-n
には 1-3
や 2,4,6
などの記法で、複数のテストの実行を指定することもできます。
自作のワークフローエンジンのテストをしたい
$ ./run_test.sh RUNNER=/path/to/your-own-engine
RUNNER
変数で指定したワークフローエンジンの準拠度テストを行います。run_test.sh
は RUNNER
に --quiet
オプションと入力の CWL ファイル、パラメータが書かれた YAML (or JSON) ファイルを与えて実行します。
テストの実行が遅い
$ ./run_test.sh -j=32
-j
オプションを使うことで、並列にテストを行うことができます。
しかし、各テスト時のエラー表示も混ざって出てきてしまうため、標準出力で確認する場合には使いにくいです。--junit-xml=foobar.xml
を使うことで、Junit 形式の出力を v1.0/foorbar.xml
に出力してくれるため、こちらと併用するのが良さそうです。
エンジン実装上の注意
未サポートの機能に対しては 33
をリターンコードとして返すことで、run_test.sh
がそれを認識して unsupported features
に振り分けてくれます1。
-
v1.1 から、CWL の処理系のツール定義が提供されています。v1.0 でも インターフェースは同じなので、この CWL ファイルで動くように処理系を作成するといいでしょう。 ↩