我正在将我的Play 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类的情况下让我的测试工作。
答案 0 :(得分:0)
我找不到一种方法来配置测试,以便在没有TcpClient的情况下工作,因此最终不得不咬紧牙关并升级到Play 2.6。这确实解决了这个问题。