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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With