私は Hudson CI システムをセットアップしており、今のところ、プロジェクトの構築と単体テストの実行に使用しています。次のステップは、メモリ リーク検出器の Purify をビルド サイクルに統合することです。ここで、purify 内でも単体テストを開始したいと考えています。このために、次のコマンドを実行する新しいバッチ タスクを作成しました。
purify.exe /SaveTextData MyExecutable.exe --test TestLibrary.dll --output xml
Purify のドキュメントで読んだように、GUI モードではなく purify を実行するために /SaveTextData オプションが使用されます。コマンドラインでローカルワークステーションでこのコマンドを実行すると、完全に機能します。ただし、ハドソンによって開始された場合は、何も起こりません。残念ながら、浄化のログはありません...
Hudson やその他の CI システムで浄化を開始しようとした人はいますか?
前もって感謝します。
よろしくお願いします
マーティン
編集: Hudson を異なるコンピューターでマスターとスレーブとして実行していることをお伝えするのを忘れていました。マスターで、スレーブの浄化内で単体テストを開始するタスクを構成しました。JNLP 経由でスレーブを実行しています。
編集 18.03.2010:
わかりましたので、ようやく問題の原因に少し近づきました。
purify ローカルで単体テストを実行すると、ログ ファイル EngineCmdLine.log に 3 つのコマンドが含まれていることがわかりました。
次のコマンドで浄化を開始しています。
purify.exe /SaveTextData TestRunnerConsoleWD.exe --test TestDemoWD.dll
purify を手動で開始したときの EngineCmdLine.log の出力:
ファイル: D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msv9\TestRunnerConsoleWD.exe
ファイル: C:\WINDOWS\system32\ws2_32.dll
ファイル: D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\TestDemoWD.dll
Hudson 経由で起動した場合の出力:
File: D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\TestRunnerConsoleWD.exe
File: C:\WINDOWS\system32\ws2_32.dll
File: D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\TestDemoWD.dll
File: D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\TestDemoWD.dll
purify のエラー出力:
Instrumenting:
BtcTestDemoWD.dll 313856 bytes
Purify: While processing file > D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\TESTFWWD.DLL:
Error: Cannot replace file c:\Programme\IBM\RationalPurifyPlus\PurifyPlus\cache\BTCTESTFWWD$Purify_D_workspace_hudson_workspace_Purify__TestFW__CommonsCoreTest__Cpp__msvs9.DLL.
Is it in use?
TESTFWWD.DLL 505344 bytes
Unable to instrument D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\TestDemoWD.dll (0x1)
問題は、purify が TestDemoWD.dll ライブラリでコマンドを 2 回開始するのはなぜですか?