使PAX (OSGI测试)框架更快的技巧



我知道PAX做了很多事情,创建容器并复制所有这些jar并不便宜,但是有什么提高性能的一般技巧吗?我的一些测试在容器外只需要几分之一秒就可以执行,而在容器内则需要更长的时间。我使用PAX主要是为了验证我的清单是准确的,并且包可以部署而不会丢失任何依赖项。我试过Knopflerfish、Equinox和Felix,总的来说,它们相对于无容器的裸机运行速度相对较慢。

正如您所意识到的,底层容器并没有太大的区别。

如果你想在运行中创建最小的bundle,你可以尝试Pax Tinybundles:如果这适用于你的情况,你可以构建一组最小的bundle,其中只包含你实际需要测试的内容。例如,您可以打包您的Manifest。我自己还没有为这个特殊的目的对它进行基准测试,但是值得一试。

作为旁注,请考虑Pax Exam 2.3引入了对@Before和@After的支持(见这里),从而帮助您实现更灵活的加载设置/卸载。

使用Native Container比Pax Runner Container更快,节省了启动外部进程的开销。

使用EagerSingleStagedReactorFactory节省了为每个测试重新启动框架的开销。

为了避免复制jar文件,选择mvn: URLs或mavenBundle()而不是一般的url,那么bundle将在下载后从本地Maven存储库中获取。

Pax Exam 2.3.0中的一个新特性是reference:协议,它允许您在适当的位置提供包,而不需要复制-这甚至适用于分解包(即解压缩的目录结构)。

最新更新