我有一个包含大量JUnit集成测试的大型Groovy应用程序(256),其中大多数使用'com.github.tlrx.elasticsearch-test',版本:'1.2.1'在本地运行elasticsearch。
通过运行所有测试类的部分方式使用elasticsearch开始抛出'ElasticsearchIllegalStateException'并且消息'无法获取节点锁定'的所有测试,以下位置是否可写?:[。/ target / elasticsearch-test / data /cluster-test-kiml42s-MacBook-Pro.local]”。
如果我单独运行这些课程,它就可以正常工作。
这是我在所有@Befores中运行的初始化代码:
esSetup = new EsSetup();
CreateIndex createIndex = createIndex(index)
for(int i = 0; i < types.size(); i++){
createIndex.withMapping(types[i], fromClassPath(mappings[i]))
}
esSetup.execute(deleteAll(), createIndex)
client = esSetup.client()
如果我的拆解代码在@Afters中运行:
client.admin().indices().prepareDelete(index).get()
这个问题在我们的构建服务器上似乎没有发生,所以它只是烦人且不方便,不是一个严重的问题,但任何帮助都将是最受欢迎的。感谢。
答案 0 :(得分:0)
这个问题似乎是由于在jUnit运行所有测试时让测试节点保持活动状态 - 最终它无法创建新节点。解决方案是在after中使用esSetup.terminate()来销毁每个测试结束时的节点。
以下是正确使用的示例:https://gist.github.com/tlrx/4117854