gpt4 book ai didi

scala - 基于docker容器的库以支持elastic4s

转载 作者:行者123 更新时间:2023-12-03 01:43:44 25 4
gpt4 key购买 nike

我正在使用elastic4s,也对使用基于docker容器的测试环境进行 Elasticsearch 感兴趣。

testcontainers-scaladocker-it-scala这样的库很少,但是找不到我如何将elastic4s集成到这些库中,有人曾经使用过基于Docker容器的测试环境吗?

目前我的规格非常简单:

class ElasticSearchApiServiceSpec extends FreeSpec {

implicit val defaultPatience = PatienceConfig(timeout = Span(100, Seconds), interval = Span(50, Millis))

val configuration: Configuration = app.injector.instanceOf[Configuration]

val elasticSearchApiService = new ElasticSearchApiService(configuration)

override protected def beforeAll(): Unit = {
elasticSearchApiService.elasticClient.execute {
index into s"peopleIndex/person" doc StringDocumentSource(PeopleFactory.rawStringGoodPerson)
}
// since ES is eventually
Thread.sleep(3000)
}

override protected def afterAll(): Unit = {
elasticSearchApiService.elasticClient.execute {
deleteIndex("peopleIndex")
}
}

"ElasticSearchApiService Tests" - {

"elastic search service should retrieve person info properly - case existing person" in {
val personInfo = elasticSearchApiService.getPersonInfo("2324").futureValue

personInfo.get.name shouldBe "john"
}
}

}

当我运行它时,我在终端中在后台运行 Elasticsearch ,但是我现在想使用容器,这样它就不再那么依赖了。

最佳答案

我猜您不想依赖本地计算机上运行的ES服务器进行测试。那么最简单的方法就是使用testcontainers-scalaGenericContainer通过这种方式运行官方ES docker image:

class GenericContainerSpec extends FlatSpec with ForAllTestContainer {
override val container = GenericContainer("docker.elastic.co/elasticsearch/elasticsearch:5.5.1",
exposedPorts = Seq(9200),
waitStrategy = Wait.forHttp("/")
)

"GenericContainer" should "start ES and expose 9200 port" in {
assert(Source.fromInputStream(
new URL(
s"http://${container.containerIpAddress}:${container.mappedPort(9200)}/_status")
.openConnection()
.getInputStream)
.mkString
.contains("ES server is successfully installed"))
}
}

关于scala - 基于docker容器的库以支持elastic4s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45530362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com