在Elastic4S 7.x中使用本地节点运行单元测试

时间:2019-09-18 12:07:08

标签: elastic4s

我正在将系统升级到Elasticsearch / Elastic4S 7.3,但是我在单元测试中遇到了问题。希望我缺少明显的东西。

当前(使用E4S 6.1.4),我使用ClassLocalNodeProvider为测试提供了一个本地http客户端(该客户端在Travis中针对每个GitHib拉取请求远程运行)

在E4S 7.x中,似乎无法直接替代LocalNode(?)

我确实尝试在下面的代码中用ClientProvider替换ClassLocalNodeProvider,但是看来我需要为客户端提供一个具体的定义:ElasticClient(我的ElasticClientProvider类的ES7版本确实期望使用ElasticClient而不是HttpClient)。

impl<'a> Parent<'a> {
    pub fn set_child_ref(&'a mut self) {
        self.child_ref.push(self.wrapper.get());
    }
}

1 个答案:

答案 0 :(得分:0)

E4S不再支持LocalNode,我现在使用Docker插件来创建一个普通的ES节点来运行测试。在本地工作,尚未经过Travis或Concourse测试。容器确实需要一些时间才能启动,然后它在具有动态分配的端口号的localhost上运行。

import org.testcontainers.elasticsearch.ElasticsearchContainer  

val container = new ElasticsearchContainer()
container.setDockerImageName("docker.elastic.co/elasticsearch/elasticsearch-oss:7.3.0")
container.start()

val host = container.getHttpHostAddress()
val client: ElasticClient = new ElasticClient(JavaClient(ElasticsearchClientUri(s"http://${host}?ssl=false")))