问题标签 [pax-exam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
513 浏览

java - Pax 考试同步问题

我正在使用 Pax Exam 对我的 OSGi 应用程序执行集成测试。该应用程序由许多不同的包组成,我使用 ConfigurationFactory 将它们部署到测试容器,如下所示:

这很好用,然后我可以编写测试方法来测试我的应用程序,但是我有以下问题,我理解它本质上是一个同步问题。我作为 my-feature 的一部分部署的其中一个包有一个 EventHandler,它侦听正在启动的包并将有关每个已启动包的一些信息写入数据库。我假设这是与我的测试方法的执行异步发生的事情。因此,在我的测试方法执行后,我可以在我的测试输出中看到以下异常,该异常发生在我的 EventHandler 中:

我的理解是,这个异常是由于在执行我的测试方法并且 Pax Exam 开始关闭容器时,我的 EventHandler 仍在处理包,愉快地从 DB 读取和写入,当 TransactionManager 被扫过它时脚。所以我的问题是,有没有办法强制 Pax Exam 在关闭 Karaf 之前等待我的 EventHandler 完成处理?

0 投票
1 回答
1158 浏览

apache-karaf - 在 Pax Exam 中编辑配置文件

我正在使用 Pax Exam 对我的 OSGi 应用程序执行集成测试。我有一个配置工厂,我在其中指定要安装在测试容器中的应用程序的 Karaf 功能,然后修改作为我的功能的一部分安装的 .cfg 文件的一些属性。

我在其中指定的属性editConfigurationFilePut已正确修改,但 .cfg 文件的其余属性已被删除。如果我使用该editConfigurationFilePut方法编辑 Karaf 的配置文件之一,它会按预期工作(只是添加新属性而不修改现有属性)所以我认为问题可能是 Pax Exam 尝试在 .cfg 文件之前修改配置由我的功能安装,因此会创建一个新文件来放入该属性。如果是这种情况,是否有某种方法可以同步此过程,以便仅在正确安装该功能后编辑 .cfg 文件?

0 投票
2 回答
832 浏览

osgi - 使用 felix、osgi 和 PaxRunner 框架为 osgi 创建集成测试时出现 java.lang.AbstractMethodError/ClassCastException

我正在尝试为我的包创建集成测试。基本上我想模仿我在普通网络应用程序项目中的设置(其中测试在 src/test 文件夹中)

我几乎就在那里,只是当捆绑包尝试激活时出现异常

本机容器异常

分叉容器异常

我尝试向他们的官方 JIRA 委员会提交,但我无权这样做:

https://ops4j1.jira.com/browse/PAXEXAM/fixforversion/12880/?selectedTab=com.atlassian.jira.jira-projects-plugin:version-issues-panel

有人可以帮我解决我的问题吗?我已经走到尽头了:(

示例项目(如果项目文件不起作用,请告诉我):

http://www.mediafire.com/download/qnh2gzgygys9982/cq-training.zip

命令: mvn clean 验证

谢谢

0 投票
1 回答
1553 浏览

java - ClassNotFoundException:org.apache.felix.dm.DependencyActivatorBase 与 Pax 考试

我正在为我的 OSGi 单元测试使用 Pax Exam (3.5.0)。我已经创建了一个测试,但是当我运行它时,我得到了这个堆栈跟踪:

我已经CoreOptions.mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager", "3.1.0")在选项中进行了配置,我看到它org.ops4j.pax.logging.pax-logging-api[org.ops4j.pax.swissbox.extender.BundleWatcher] : Scanning bundle [org.apache.felix.dependencymanager]已加载。

我仍然得到例外。有人知道我做错了什么吗?

干杯。

0 投票
2 回答
1606 浏览

intellij-idea - 如何调试 OSGi 服务

当涉及多个服务并在 pax 考试的帮助下进行测试时,我如何启用和调试。

我有一组服务编排并提供功能。这些服务中的每一个都有模拟其他服务的测试。除此之外,还有通过 pax 考试完成的集成测试。

但是当我通过我的 IDE:intelliJ 钩住一个调试器并运行测试时,调试器不会被钩住。我应该在这里使用远程调试吗?如果是,我应该在 pax 考试中配置它吗?

0 投票
1 回答
951 浏览

osgi - Blueprint/OSGi 中的类加载问题

我有两个托管服务工厂的蓝图,如下所示:

在集成测试(OPS4j Pax Exam)中使用上述服务时,偶尔会出现以下异常:

似乎蓝图正在尝试在两个不同的线程中初始化服务实例,并且当第二个线程到达 OSGi 容器(Felix)时,面临这个错误。因为包已经被第一个线程加载了。

正如我所提到的,这不是永久性的行为,并且会发生 10-20% 的时间。

有人对原因和潜在解决方案有任何想法吗?

0 投票
1 回答
106 浏览

xml - 是否可以使用 Pax Exam 更改 XML 配置文件?

我想在同一台机器上使用 Pax Exam 运行多个 Fuse 实例,并且我想重新配置所有使用的端口以使其成为可能。不幸的是,在 etc/jetty.xml 中定义了一个端口。有没有办法让它以某种方式改变?我看到有一组选项被调用KarafDistributionOption.editConfigurationFile*,但它们仅适用于属性文件。

  • 是否有任何选项实现可供使用?
  • 是否有任何事件挂钩,例如“这是保险丝安装,在我开始之前做你想做的事”?
0 投票
2 回答
423 浏览

eclipse-plugin - 如何在 Pax 考试中使用启动参数启动 Equinox 应用程序?

我想在 Pax Exam 中测试我的 OSGI 应用程序,但是从我的插件之一启动应用程序时遇到了一些问题。

我使用 Equinox,并且有一些特定于 Equinox 的类扩展了 org.eclipse.equinox.app.IApplication。然后可以在 Eclipse Application Launcher 中选择此类,并且是要运行的第一个类(在我的情况下,它控制应用程序生命周期)。

当我运行 Pax Exam 测试时,所有包都已解析,但我的 IApplication 未启动。

如何在 Pax Exam 中运行此类应用程序?

此外,我怎样才能传递一些应用程序参数?我只看到一些 frameworkProperty (-F) 和 systemProperty (-D),但我需要一些常规的应用程序参数。

0 投票
1 回答
63 浏览

java - OSGi 本地集成测试在精益示例项目上失败

我已经建立了一个 maven、osgi、pax、声明式服务测试项目,但我遇到了奇怪的行为。使用声明式服务的集成测试存在问题。

当通过本地运行时,测试中止并出现错误(日志如下)mvn install。当我通过eclipse将它作为junit测试用例执行时,它可以工作。当在 ci 服务器上调用相同的 maven 命令时,它也可以工作(日志也在下面)。

所以很明显我在这里遗漏了一些东西。你能帮我解释一下出了什么问题吗?


数据

错误日志:https
://github.com/mbe24/mode/issues/2 ci 构建日志:https ://travis-ci.org/mbe24/mode/builds/36392361

0 投票
0 回答
337 浏览

osgi - OSGi Pax Exam 4 gogo shell 解析器在启动 paxexam 4 测试时无法解析 gosh_profile

我正在尝试在我的 PaxExam 测试类中启用 Felix GoGo Shell。这只是为了开发包时与 OSGi 容器进行简单交互的原因。这是我的 PaxExam 测试课程:

object.wait() 用于保持,因此我可以通过 shell 与容器交互。但这是我得到的例外:

我将 jdk1.8_u20 与 Apache Felix 4.4.1 一起使用。

我真的很感激任何帮助,因为通过调试我没有运气找到这个问题的根源。

非常感谢