2017-11-21 3 views
0

Ich bin dabei, meine Play 2.5.14-Anwendung von Elastic4s 2.4 auf Elastic4s 6.0 zu aktualisieren. Die Anwendung funktioniert (ausschließlich über den httpClient) und ich kann meine Tests laufen lassen, aber nicht beide gleichzeitig!Konfigurieren Sie Elastic4S 6.0 mit HTTP-Client für die Ausführung auf Play 2.5 mit Tests

Exceprt von My build.sbt

"com.sksamuel.elastic4s" %% "elastic4s-core" % Versions.elastic4s excludeAll ExclusionRule(organization = "org.apache.logging.log4j"), 
    // for the http client 
    "com.sksamuel.elastic4s" %% "elastic4s-http" % Versions.elastic4s excludeAll ExclusionRule(organization = "org.apache.logging.log4j"), 
    // for the tcp client 
    "com.sksamuel.elastic4s" %% "elastic4s-tcp" % Versions.elastic4s excludeAll ExclusionRule(organization = "org.apache.logging.log4j"), 
    // testing 
    "com.sksamuel.elastic4s" %% "elastic4s-testkit" % Versions.elastic4s % "test", 
    "com.sksamuel.elastic4s" %% "elastic4s-embedded" % Versions.elastic4s % "test", 
    "org.apache.logging.log4j" % "log4j-core" % "2.8.2" % "test", 
    "org.apache.logging.log4j" % "log4j-api" % "2.8.2" % "test", 

My Testklasse konfiguriert ist als

class ElasticsearchRepositorySpec extends WordSpec with SearchMatchers with 
ClassLocalNodeProvider with HttpElasticSugar { 

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

das HTTP-Objekt folgt aus dem ClassLocalNodeProvider kommen. Ich habe nicht die TcpClient überhaupt verwenden, aber wenn ich auf Kommentar elastic4s-tcp vom build.sbt (oder auf% Testset) der lokale Knoten nicht beim Start mit

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) 

Aber wenn ich dies nicht tun Kommentar it out scheitert die Anwendung mit

[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) 

und es scheint, dass ich ein Upgrade benötigen, um 2.6 zu beheben, dies zu spielen, es sei denn, ich meine Tests ohne die Tcp Klassen zu arbeiten zu bekommen.

Antwort

0

Ich konnte keine Möglichkeit finden, die Tests so zu konfigurieren, dass sie ohne den TcpClient funktionieren, also musste ich in den sauren Apfel beißen und auf Play 2.6 upgraden. Dies hat das Problem behoben.

+0

Die elastische Netty-Version im TCP-Client kollidiert mit einigen Play/Spark-Versionen. Das Testkit verwendet auch TCP, in 7.0.0 wird TCP weg sein. – monkjack