首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pax考试中编辑配置文件

在Pax考试中编辑配置文件
EN

Stack Overflow用户
提问于 2014-05-07 07:21:58
回答 1查看 1.2K关注 0票数 0

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

代码语言:javascript
复制
public class TestConfigurationFactory implements ConfigurationFactory {

@Override
public Option[] createConfiguration() {
    return options(
            karafDistributionConfiguration()
                    .frameworkUrl(
                            maven().groupId("org.apache.karaf")
                                    .artifactId("apache-karaf")
                                    .version("3.0.1").type("tar.gz"))
                    .unpackDirectory(new File("target/exam"))
                    .useDeployFolder(false),
            keepRuntimeFolder(),
            // Karaf (own) features.
            KarafDistributionOption.features(
                    maven().groupId("org.apache.karaf.features")
                            .artifactId("standard").classifier("features")
                            .version("3.0.1").type("xml"), "scr"),
            // CXF features.
            KarafDistributionOption.features(maven()
                    .groupId("org.apache.cxf.karaf")
                    .artifactId("apache-cxf").version("2.7.9")
                    .classifier("features").type("xml")),
            // Application features.
            KarafDistributionOption.features(
                    maven().groupId("com.me.project")
                            .artifactId("my-karaf-features")
                            .version("1.0.0-SNAPSHOT")
                            .classifier("features").type("xml"), "my-feature"),
            KarafDistributionOption.editConfigurationFilePut(
                       "etc/com.me.test.cfg", "key", "value"));
}
}

我在editConfigurationFilePut中指定的属性被正确地修改,但是.cfg文件的其余属性被删除。如果我使用editConfigurationFilePut方法编辑Karaf的一个配置文件,它将按预期的方式工作(只是添加新属性而不修改现有属性),所以我认为问题可能是Pax考试试图在.cfg文件被我的特性安装之前修改配置,从而创建一个新的文件将属性放入其中。如果是这样的话,是否有什么方法来同步这个过程,以便只有在正确安装了特性之后才对.cfg文件进行编辑?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-20 12:28:37

这有两个不同的原因。1)在configfile被“编辑”后才安装该特性。2)该特性只包含一个配置部分,而不是configfile部分。

我猜原因之一是最有可能的原因,因为它需要一个运行的Karaf通过Pax考试来安装一个特性。因此,要解决第一个原因,请将配置替换为测试项目中的配置文件。出于第二个原因,确保特性确实引用了配置而不是配置管理配置,或者将配置添加到config-admin服务的配置中。您可以通过在单元测试中注入ConfigAdmin服务并将属性添加到配置pid中来实现这一点。

编辑:合并这两种解决方案,因为因为1)配置文件实际可用所需时间更长,其余部分由config-admin服务来完成。确保您的测试通过注入配置管理服务或等待它的可用性来检索它。现在,在@a方法中,请确保等到配置完成后再进行更改。这样您就不需要复制配置文件了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23511297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档