Elasticsearch通过测试抛出“ElasticsearchIllegalStateException”

时间:2016-02-11 10:26:39

标签: testing elasticsearch groovy junit

我有一个包含大量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()

这个问题在我们的构建服务器上似乎没有发生,所以它只是烦人且不方便,不是一个严重的问题,但任何帮助都将是最受欢迎的。感谢。

1 个答案:

答案 0 :(得分:0)

这个问题似乎是由于在jUnit运行所有测试时让测试节点保持活动状态 - 最终它无法创建新节点。解决方案是在after中使用esSetup.terminate()来销毁每个测试结束时的节点。

以下是正确使用的示例:https://gist.github.com/tlrx/4117854