首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >elasticsearch 6 ESIntegTestCase“代码库属性已设置”

elasticsearch 6 ESIntegTestCase“代码库属性已设置”
EN

Stack Overflow用户
提问于 2018-06-13 17:36:50
回答 2查看 520关注 0票数 0

我正在尝试从2.3.4升级到ES 6.2。

以前,我们通过使用NodeBuilder并运行本地ES节点来集成测试代码。如果可能的话,我更愿意把它换成ESIntegTestCase的用法。

然而,当我尝试运行集成测试时,我得到了以下错误:

 `at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:164)     at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:190)     at java.lang.Class.forName0(Native Method)     at java.lang.Class.forName(Class.java:348)     at com.carrotsearch.randomizedtesting.RandomizedRunner$2.run(RandomizedRunner.java:592) Caused by: java.lang.IllegalStateException: codebase property already set: codebase.metrics-core -> file:/Users/me/.m2/repository/io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar, cannot set to file:/Users/me/.m2/repository/com/yammer/metrics/metrics-core/2.2.0/metrics-core-2.2.0.jar     at org.elasticsearch.bootstrap.Security.readPolicy(Security.java:236)     at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:139)     ... 4 more` 

这意味着什么,我如何才能修复它?

我的测试类被注释为:@RunWith(com.carrotsearch.randomizedtesting.RandomizedRunner.class)并扩展了ESIntegTestCase,如果这有帮助的话。

感谢任何人能提供的任何帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-14 20:16:52

根据这个问题:除非你正在测试一个插件或类似的东西,否则也不应该再真正使用https://github.com/elastic/elasticsearch/issues/21544 ESIntegTestCase (参见这里的回复帖子:https://discuss.elastic.co/t/how-do-i-deal-with-this-particular-jar-hell-issue/135662/4)。

查看此处了解更多信息:https://discuss.elastic.co/t/codebase-property-already-set-when-running-esintegtestcase/135659/2

我现在找到的使用elasticsearch进行集成测试的最佳方法在讨论帖子中提到:使用测试容器-elasticsearch (https://github.com/dadoonet/testcontainers-java-module-elasticsearch)

您需要在运行测试的机器上安装docker,但它会自动拉取所需的docker镜像,启动容器并在结束时再次将其拆除。

票数 1
EN

Stack Overflow用户

发布于 2018-08-27 06:19:33

如果开发一个插件仍然需要嵌入式ES,那么设置系统属性-Dtests.gradle=false也许可以解决这个问题。

由于BootstrapForTesting.java L175包含:

if (System.getProperty("tests.gradle") == null) {
  addClassCodebase(codebases, "plugin-classloader", "org.elasticsearch.plugins.ExtendedPluginsClassLoader");
  addClassCodebase(codebases, "elasticsearch-secure-sm", "org.elasticsearch.secure_sm.SecureSM");
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50833920

复制
相关文章

相似问题

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