我设置了一个 Hudson CI 系统,目前它用于构建项目和运行一些单元测试。我的下一步是将内存泄漏检测器 Purify 集成到构建周期中。现在我想在 purify 中启动单元测试,为此我创建了一个新的批处理任务,它运行以下命令:
purify.exe /SaveTextData MyExecutable.exe --test TestLibrary.dll --output xml
正如我在 Purify 文档中所读到的,使用 /SaveTextData 选项是为了在 GUI 模式下运行 purify。如果我在命令行中的本地工作站上运行此命令,它将完美运行。但如果它是由 Hudson 发起的,则不会发生任何事情。可惜没有净化记录...
有没有人尝试过通过 Hudson 或任何其他 CI 系统开始净化?
提前致谢。
此致
马丁
编辑:我忘了告诉你,我让 Hudson 在不同的计算机上作为主从运行。在主服务器上,我配置了一个任务,该任务应该在从服务器上的 purify 中启动单元测试。我正在通过 JNLP 运行从站。
编辑 18.03.2010:
好的,所以最后我更接近问题的根源。
我发现,在本地净化中运行我的单元测试,日志文件 EngineCmdLine.log 包含三个命令。
我开始使用以下命令进行净化:
purify.exe /SaveTextData TestRunnerConsoleWD.exe --test TestDemoWD.dll
手动启动净化时EngineCmdLine.log的输出:
文件:D:\workspace\hudson\workspace\Purify_TestFW_CommonsCoreTest_Cpp_msvs9\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 库启动两次命令?