【CMake】テスト結果をダッシュボードサーバーに送信: ctest_submit() の詳細解説とサンプルコード


ctest_submit() コマンドは、CMake で生成されたテスト結果をダッシュボードサーバーに送信するために使用されます。ダッシュボードサーバーは、テスト結果を分析し、プロジェクトの進捗状況を追跡するために使用されます。

構文

ctest_submit([PARTS <part>...] [FILES <file>...] [RETRY_COUNT <count>] [RETRY_DELAY <delay>] [RETURN_VALUE <result-var>] [QUIET])

オプション

  • QUIET: エラーメッセージ以外のすべての非エラーメッセージをコンソールに出力しないようにします。
  • RETURN_VALUE: 結果を result-var 変数に格納します。0 は成功、ゼロ以外の場合は失敗。
  • RETRY_DELAY: タイムアウトした送信後に再送信を試みるまでの待機時間(秒)。
  • RETRY_COUNT: タイムアウトした送信を再試行する回数。
  • FILES: 送信する特定のファイルを明示的にリストします。各ファイルは、呼び出し時に存在する必要があります。
  • PARTS: 送信する結果のサブセットを指定します。有効なパート名は次のとおりです。
    • Start: 送信なし
    • Update: Update.xml ファイル内の ctest_update 結果
    • Configure: Configure.xml ファイル内の ctest_configure 結果
    • Build: Build.xml ファイル内の ctest_build 結果
    • Test: Test.xml ファイル内の ctest_test 結果
    • Coverage: Coverage.xml ファイル内の ctest_coverage 結果
    • MemCheck: DynamicAnalysis.xml ファイル内の ctest_memcheck 結果
    • Notes: CTEST_NOTES_FILES で指定されたファイル
    • ExtraFiles: CTEST_EXTRA_SUBMIT_FILES で指定されたファイル
    • Upload: ctest_upload() で準備されたファイルをアップロード
    • Submit: 送信なし

CDash Upload APIへの送信

ctest_submit(CDASH_UPLOAD <file> [CDASH_UPLOAD_TYPE <type>] [RETRY_COUNT <count>] [RETRY_DELAY <delay>] [QUIET])

オプション

  • QUIET: エラーメッセージ以外のすべての非エラーメッセージをコンソールに出力しないようにします。
  • RETRY_DELAY: タイムアウトしたアップロード後に再アップロードを試みるまでの待機時間(秒)。
  • RETRY_COUNT: タイムアウトしたアップロードを再試行する回数。
  • CDASH_UPLOAD_TYPE: CDash へのアップロードに使用されるタイプ。
  • CDASH_UPLOAD: CDash にアップロードするファイル。

ctest_submit(PARTS Test Coverage)
ctest_submit(FILES test_results.xml coverage_report.html)
ctest_submit(CDASH_UPLOAD test_binary CDASH_UPLOAD_TYPE BINARY)
  • ctest_submit() コマンドは、テストの実行後にのみ呼び出すことができます。
  • 送信する前に、ダッシュボードサーバーが適切に構成されていることを確認してください。
  • ctest_submit() コマンドは、CMake 3.0 以降でのみ使用できます。
  • ctest_submit() コマンドは、エラーが発生した場合にエラーコードを返します。エラーコードの詳細については、CMake ドキュメントを参照してください。
  • ctest_submit() コマンドは、非同期で実行されます。つまり、コマンドが返される前に送信が完了するとは限りません。


cmake_minimum_required(VERSION 3.0)

project(MyProject)

add_executable(MyProgram main.cpp)
add_test(MyTest MyProgram)

ctest_submit(PARTS Test Coverage)

例 2: テストバイナリを CDash にアップロードする

cmake_minimum_required(VERSION 3.0)

project(MyProject)

add_executable(MyProgram main.cpp)
add_test(MyTest MyProgram)

ctest_submit(CDASH_UPLOAD test_binary CDASH_UPLOAD_TYPE BINARY)

例 3: ログファイルをダッシュボードサーバーに送信する

cmake_minimum_required(VERSION 3.0)

project(MyProject)

add_executable(MyProgram main.cpp)
add_test(MyTest MyProgram)

set(CTEST_SUBMIT_LOGS TRUE)

ctest_submit()

説明

  • 例 3
    この例では、CTEST_SUBMIT_LOGS 変数を TRUE に設定して、ctest_submit() コマンドにログファイルをダッシュボードサーバーに送信するように指示します。
  • 例 2
    この例では、ctest_submit() コマンドを使用して、test_binary ファイルを CDash にバイナリファイルとしてアップロードします。
  • 例 1
    この例では、ctest_submit() コマンドを使用して、Test.xml および Coverage.xml ファイル内のテスト結果をダッシュボードサーバーに送信します。
  • ctest_submit() コマンドの使用の詳細については、CMake ドキュメントを参照してください。
  • これらの例は、単なる例であり、プロジェクトのニーズに応じて変更する必要がある場合があります。


代替方法

  • カスタムスクリプトを作成する
    独自の要件に完全に一致するダッシュボードサーバーに送信機能を作成できます。
  • 別のテスト結果解析ツールを使用する
    多くのオープンソースのテスト結果解析ツールがあり、それぞれ独自の機能と利点があります。
  • 手動でダッシュボードサーバーにファイルをアップロードする
    これは、テスト結果のファイル数が少ない場合や、ダッシュボードサーバーへのアクセスに制限がある場合に役立ちます。

各代替方法の詳細

手動でダッシュボードサーバーにファイルをアップロードする

  1. ctest コマンドを使用して、テスト結果ファイルを生成します。
  2. ダッシュボードサーバーにログインします。
  3. テスト結果ファイルをアップロードします。

別のテスト結果解析ツールを使用する

  1. 使用したいテスト結果解析ツールを選択します。
  2. ツールのドキュメントに従って、CMake プロジェクトを設定します。
  3. テストを実行して、ツールの結果を分析します。

カスタムスクリプトを作成する

  1. ダッシュボードサーバーの API ドキュメントを読みます。
  2. テスト結果ファイルを解析し、ダッシュボードサーバーに必要な形式に変換するスクリプトを作成します。
  3. スクリプトを実行して、テスト結果をダッシュボードサーバーに送信します。

どの代替方法を選択するか

最適な代替方法は、個々のニーズによって異なります。以下の要素を考慮する必要があります。

  • 必要な機能
    必要な機能が特定のツールで提供されていない場合は、カスタムスクリプトを作成する必要があるかもしれません。
  • ダッシュボードサーバーへのアクセス
    ダッシュボードサーバーへのアクセスが制限されている場合は、別のツールを使用する必要があるかもしれません。
  • テスト結果の量
    テスト結果のファイル数が少ない場合は、手動でアップロードするのが最善の方法かもしれません。