Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elasticsearch :found jar hell in test classpath

Tags:

I want to perform unit testing in Elasticsearch for that I am using Java-test-framework
I am using Elasticsearch-1.6.0 and referring to these link for help https://www.elastic.co/guide/en/elasticsearch/reference/1.6/using-elasticsearch-test-classes.html https://github.com/elastic/elasticsearch/blob/master/core/src/test/java/org/elasticsearch/action/search/SearchRequestBuilderTests.java

here is the code

class CampaignESTest extends ESTestCase {    def getCLient():MockTransportClient={      val settings = Settings.builder()                 .put(Environment.PATH_HOME_SETTING.getKey(), Files.createTempDir().toString())                 .build();      val client = new MockTransportClient(settings);        client   }  }  class CampaignTestSearch extends PlaySpec{   val client=new CampaignESTest  val response = client.prepareSearch("dbtest")       .setTypes(CAMPAIGN_COLLECTION_NAME)       .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)       .addFields("uuid","campaignName","artworkID","activationDate","_source")       .setQuery(query)       .execute()       .actionGet()   } 

I am getting these exceptions

    Exception encountered when attempting to run a suite with class name: org.scalatest.DeferredAbortedSuite *** ABORTED *** [info]   java.lang.ExceptionInInitializerError: [info]   at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:138) [info]   at testcontrollers.campaign.CampaignTestSearch.<init>(CampaignTestSearch.scala:40) [info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [info]   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [info]   at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [info]   at java.lang.Class.newInstance(Class.java:442) [info]   at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:468) [info]   at sbt.ForkMain$Run$2.call(ForkMain.java:296) [info]   at sbt.ForkMain$Run$2.call(ForkMain.java:286) [info]   ... [info]   Cause: java.lang.RuntimeException: found jar hell in test classpath [info]   at org.elasticsearch.bootstrap.BootstrapForTesting.<clinit>(BootstrapForTesting.java:90) [info]   at org.elasticsearch.test.ESTestCase.<clinit>(ESTestCase.java:138) [info]   at testcontrollers.campaign.CampaignTestSearch.<init>(CampaignTestSearch.scala:40) [info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [info]   at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [info]   at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [info]   at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [info]   at java.lang.Class.newInstance(Class.java:442) [info]   at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:468) [info]   at sbt.ForkMain$Run$2.call(ForkMain.java:296) [info]   ... [info]   Cause: java.nio.file.NoSuchFileException: /home/testproject/target/web/classes/test [info]   at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86) [info]   at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) [info]   at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) [info]   at sun.nio.fs.UnixFileAttributeViews$Basic.readAttributes(UnixFileAttributeViews.java:55) [info]   at sun.nio.fs.UnixFileSystemProvider.readAttributes(UnixFileSystemProvider.java:144) [info]   at sun.nio.fs.LinuxFileSystemProvider.readAttributes(LinuxFileSystemProvider.java:99) [info]   at java.nio.file.Files.readAttributes(Files.java:1737) [info]   at java.nio.file.FileTreeWalker.getAttributes(FileTreeWalker.java:219) [info]   at java.nio.file.FileTreeWalker.visit(FileTreeWalker.java:276) [info]   at java.nio.file.FileTreeWalker.walk(FileTreeWalker.java:322) 

getting an exception on this line

val client=new CampaignESTest 

in class CampaignTestSearch

here are the dependencies in build.sbt file

libraryDependencies ++= Seq(filters,                  "org.scalatest" %% "scalatest" % "2.2.6" % "test"withSources() withJavadoc(),                 "org.scalatestplus" %% "play" % "1.4.0-M3" % "test",                 "com.esotericsoftware.kryo" % "kryo" % "2.10",                 "org.mongodb" %% "casbah" % "2.8.0",                 "org.slf4j" % "slf4j-api" % "1.6.4",                 "org.elasticsearch" % "elasticsearch" % "1.6.0",                 "org.elasticsearch.test" % "framework" % "5.0.0" % "test",                 "org.apache.lucene" % "lucene-test-framework" % "4.10.4" % "test",                 "com.carrotsearch.randomizedtesting" % "randomizedtesting-runner" % "1.6.0" % "test",                 "org.apache.lucene" % "lucene-codecs" % "4.10.4" % "test",                 "org.apache.logging.log4j" % "log4j-core" % "2.8.2",                 "org.apache.logging.log4j" % "log4j-slf4j-impl" % "2.8.2" ,                 "org.apache.logging.log4j" % "log4j-api" % "2.8.2",                 "com.typesafe.akka" %% "akka-actor" % "2.3.6",                 "com.typesafe.akka" % "akka-testkit_2.11" % "2.3.6",                 "ch.qos.logback" % "logback-core" % "1.0.9",                 "com.github.nscala-time" %% "nscala-time" % "2.0.0",                 "com.hazelcast" % "hazelcast" % "3.5",                 "com.hazelcast" % "hazelcast-client" % "3.5",                 "com.twitter" % "chill-bijection_2.11" % "0.7.0",                 "com.github.slugify" % "slugify" % "2.1.3" ,                 "org.mindrot" % "jbcrypt" % "0.3m",                 "org.codehaus.groovy" % "groovy-all" % "2.4.0",                 "org.apache.lucene" % "lucene-expressions" % "4.10.4",                 "com.restfb" % "restfb" % "1.19.0",                 "org.twitter4j" % "twitter4j-core" % "4.0.0",                 "org.scribe" % "scribe" % "1.3.5",                 "com.google.code.gson" % "gson" % "2.6.2",                 "com.google.oauth-client" % "google-oauth-client" % "1.20.0",                 "com.google.api.client" % "google-api-client-auth-oauth2" % "1.2.0-alpha",                 "com.google.api-client" % "google-api-client" % "1.20.0",                 "com.google.http-client" % "google-http-client-jackson" % "1.20.0",                 "com.google.apis" % "google-api-services-oauth2" % "v2-rev120-1.20.0",                 "com.google.oauth-client" % "google-oauth-client-appengine" % "1.20.0",                 "com.google.oauth-client" % "google-oauth-client-java6" % "1.20.0",                 "com.google.oauth-client" % "google-oauth-client-jetty" % "1.20.0",                 "com.google.oauth-client" % "google-oauth-client-servlet" % "1.20.0",                 "com.google.apis" % "google-api-services-calendar" % "v3-rev120-1.19.1",                 "com.google.inject" % "guice" % "3.0",                 "org.mockito" % "mockito-all" % "1.10.19") 

How can these exception will be resolved ? also I have tried the solution given here Java Jar hell Runtime Exception Bit when i try to create a class JarHell in org/elasticsearch/bootstarp package it won't let me create it saying type already exists I also tried searching the Class but did not found ,please guide

like image 879
swaheed Avatar asked Aug 19 '17 11:08

swaheed


1 Answers

As @Val observes, a test framework for ES v5 won't work with ES v1.

Why not upgrade to a newer version of ES?

As I recall, the old v1 has some serious security flaws. Plus ES 5 has better performance, etc.

The other thing you can do is decouple your tests from the exact ES version, by using an http library like Jest or ESJC.

like image 101
Spoon McGuffin Avatar answered Nov 23 '22 08:11

Spoon McGuffin