LoginSignup
1
0

More than 5 years have passed since last update.

Conformance test について

Last updated at Posted at 2018-12-13

はじめに

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 ファイルで動くように処理系を作成するといいでしょう。 

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0