使用http客户端配置Elastic4S 6.0以在Play 2.5上运行测试

时间:2017-11-21 16:48:10

标签: scala elastic4s

我正在将我的Pl​​ay 2.5.14应用程序从Elastic4s 2.4更新到Elastic4s 6.0。应用程序工作(通过httpClient exlusively),我可以运行我的测试,但不能同时运行两个!

我的build.sbt

中的例外情况
class ElasticsearchRepositorySpec extends WordSpec with SearchMatchers with 
ClassLocalNodeProvider with HttpElasticSugar {

val testClient = http
  // injections
val elasticClientProvider = new ElasticClientProvider {
override def client: HttpClient = testClient
}

我的测试类配置如下

uk.gov.ons.addressIndex.server.modules.ElasticsearchRepositorySpec *** ABORTED ***
  org.elasticsearch.transport.BindTransportException: Failed to bind to [9300-9400]
at org.elasticsearch.transport.TcpTransport.bindToPort(TcpTransport.java:755)
at org.elasticsearch.transport.TcpTransport.bindServer(TcpTransport.java:720)

来自ClassLocalNodeProvider的http对象。我根本不使用TcpClient,但如果我从build.sbt中注释掉elastic4s-tcp(或将其设置为%test),则本地节点在启动时失败

[error] p.c.s.n.PlayRequestHandler - Exception caught in Netty
java.lang.AbstractMethodError: null
        at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:73)
        at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:107)

但如果我没有对其进行评论,那么该应用程序将失败

ul

似乎我可能需要升级到2.6来解决这个问题,除非我可以在没有Tcp类的情况下让我的测试工作。

1 个答案:

答案 0 :(得分:0)

我找不到一种方法来配置测试,以便在没有TcpClient的情况下工作,因此最终不得不咬紧牙关并升级到Play 2.6。这确实解决了这个问题。