Edited at

Conformance test について


はじめに

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-32,4,6 などの記法で、複数のテストの実行を指定することもできます。


自作のワークフローエンジンのテストをしたい

$ ./run_test.sh RUNNER=/path/to/your-own-engine

RUNNER 変数で指定したワークフローエンジンの準拠度テストを行います。run_test.shRUNNER--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





  1. v1.1 から、CWL の処理系のツール定義が提供されています。v1.0 でも インターフェースは同じなので、この CWL ファイルで動くように処理系を作成するといいでしょう。