diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ad5ffa7..3e9adb87 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,6 +40,8 @@ jobs: # cache: 'sbt' - name: Setup sbt launcher uses: sbt/setup-sbt@v1 + - name: Set vm.max_map_count + run: sudo sysctl -w vm.max_map_count=262144 - name: Run tests run: sbt test diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cda10035..821233f2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,6 +39,8 @@ jobs: uses: sbt/setup-sbt@v1 - name: Formatting run: sbt scalafmtSbtCheck scalafmtCheck test:scalafmtCheck + - name: Set vm.max_map_count + run: sudo sysctl -w vm.max_map_count=262144 - name: Run tests & Coverage Report run: sbt coverage test coverageReport coverageAggregate - name: Upload coverage to Codecov diff --git a/build.sbt b/build.sbt index 16f5f1fa..8248f133 100644 --- a/build.sbt +++ b/build.sbt @@ -8,7 +8,7 @@ ThisBuild / organization := "app.softnetwork" name := "elastic" -ThisBuild / version := "7.17.29" +ThisBuild / version := Versions.elasticSearch ThisBuild / scalaVersion := "2.12.18" @@ -75,7 +75,11 @@ lazy val rest = project.in(file("rest")) lazy val testKit = project.in(file("testkit")) .configs(IntegrationTest) - .settings(Defaults.itSettings) + .settings( + Defaults.itSettings, + app.softnetwork.Info.infoSettings + ) + .enablePlugins(BuildInfoPlugin) .dependsOn( rest % "compile->compile;test->test;it->it" ) diff --git a/client/src/main/scala/app/softnetwork/elastic/client/ElasticClientApi.scala b/client/src/main/scala/app/softnetwork/elastic/client/ElasticClientApi.scala index ce5e7672..b99404a7 100644 --- a/client/src/main/scala/app/softnetwork/elastic/client/ElasticClientApi.scala +++ b/client/src/main/scala/app/softnetwork/elastic/client/ElasticClientApi.scala @@ -178,7 +178,11 @@ trait IndexApi { _: RefreshApi => def indexAsync(index: String, id: String, source: String)(implicit ec: ExecutionContext - ): Future[Boolean] + ): Future[Boolean] = { + Future { + this.index(index, id, source) + } + } } trait UpdateApi { _: RefreshApi => @@ -241,7 +245,11 @@ trait UpdateApi { _: RefreshApi => def updateAsync(index: String, id: String, source: String, upsert: Boolean)(implicit ec: ExecutionContext - ): Future[Boolean] + ): Future[Boolean] = { + Future { + this.update(index, id, source, upsert) + } + } } trait DeleteApi { _: RefreshApi => @@ -279,7 +287,11 @@ trait DeleteApi { _: RefreshApi => def deleteAsync(uuid: String, index: String)(implicit ec: ExecutionContext - ): Future[Boolean] + ): Future[Boolean] = { + Future { + this.delete(uuid, index) + } + } } @@ -330,9 +342,9 @@ trait BulkApi { _: RefreshApi with SettingsApi => * | balance | | bulk | * | |------->| | * +----------+ +----------+ - * | | - * | | - * | | + * | | + * | | + * | | * +---------+ | | * | |<-----------' | * | merge | | @@ -502,7 +514,11 @@ trait BulkApi { _: RefreshApi with SettingsApi => } trait CountApi { - def countAsync(query: JSONQuery)(implicit ec: ExecutionContext): Future[Option[Double]] + def countAsync(query: JSONQuery)(implicit ec: ExecutionContext): Future[Option[Double]] = { + Future { + this.count(query) + } + } def count(query: JSONQuery): Option[Double] @@ -527,7 +543,11 @@ trait GetApi { id: String, index: Option[String] = None, maybeType: Option[String] = None - )(implicit m: Manifest[U], ec: ExecutionContext, formats: Formats): Future[Option[U]] + )(implicit m: Manifest[U], ec: ExecutionContext, formats: Formats): Future[Option[U]] = { + Future { + this.get[U](id, index, maybeType) + } + } } trait SearchApi { @@ -538,13 +558,26 @@ trait SearchApi { def searchAsync[U]( sqlQuery: SQLQuery - )(implicit m: Manifest[U], ec: ExecutionContext, formats: Formats): Future[List[U]] + )(implicit m: Manifest[U], ec: ExecutionContext, formats: Formats): Future[List[U]] = Future( + this.search[U](sqlQuery) + ) def searchWithInnerHits[U, I](sqlQuery: SQLQuery, innerField: String)(implicit m1: Manifest[U], m2: Manifest[I], formats: Formats - ): List[(U, List[I])] + ): List[(U, List[I])] = { + sqlQuery.search match { + case Some(searchRequest) => + val indices = collection.immutable.Seq(searchRequest.sources: _*) + val jsonQuery = JSONQuery(searchRequest.query, indices) + searchWithInnerHits(jsonQuery, innerField) + case None => + throw new IllegalArgumentException( + s"SQL query ${sqlQuery.query} does not contain a valid search request" + ) + } + } def searchWithInnerHits[U, I](jsonQuery: JSONQuery, innerField: String)(implicit m1: Manifest[U], @@ -554,7 +587,23 @@ trait SearchApi { def multiSearch[U]( sqlQuery: SQLQuery - )(implicit m: Manifest[U], formats: Formats): List[List[U]] + )(implicit m: Manifest[U], formats: Formats): List[List[U]] = { + sqlQuery.multiSearch match { + case Some(multiSearchRequest) => + val jsonQueries: JSONQueries = JSONQueries( + collection.immutable + .Seq(multiSearchRequest.requests.map { searchRequest => + JSONQuery(searchRequest.query, collection.immutable.Seq(searchRequest.sources: _*)) + }: _*) + .toList + ) + multiSearch[U](jsonQueries) + case None => + throw new IllegalArgumentException( + s"SQL query ${sqlQuery.query} does not contain a valid search request" + ) + } + } def multiSearch[U]( jsonQueries: JSONQueries @@ -564,12 +613,27 @@ trait SearchApi { m1: Manifest[U], m2: Manifest[I], formats: Formats - ): List[List[(U, List[I])]] + ): List[List[(U, List[I])]] = { + sqlQuery.multiSearch match { + case Some(multiSearchRequest) => + val jsonQueries: JSONQueries = JSONQueries( + collection.immutable + .Seq(multiSearchRequest.requests.map { searchRequest => + JSONQuery(searchRequest.query, collection.immutable.Seq(searchRequest.sources: _*)) + }: _*) + .toList + ) + multiSearchWithInnerHits[U, I](jsonQueries, innerField) + case None => + throw new IllegalArgumentException( + s"SQL query ${sqlQuery.query} does not contain a valid search request" + ) + } + } def multiSearchWithInnerHits[U, I](jsonQueries: JSONQueries, innerField: String)(implicit m1: Manifest[U], m2: Manifest[I], formats: Formats ): List[List[(U, List[I])]] - } diff --git a/project/Versions.scala b/project/Versions.scala index 053f4293..52afac83 100644 --- a/project/Versions.scala +++ b/project/Versions.scala @@ -24,8 +24,6 @@ object Versions { val elastic4s = "7.17.4" - val jest = "6.3.1" - val log4j = "2.8.2" val testContainers = "1.18.0" @@ -34,5 +32,4 @@ object Versions { val gson = "2.8.0" - val rest = "7.17.29" // rest high level client } diff --git a/rest/build.sbt b/rest/build.sbt index 834128e5..4f7972b8 100644 --- a/rest/build.sbt +++ b/rest/build.sbt @@ -12,8 +12,8 @@ val jacksonExclusions = Seq( val rest = Seq( "org.elasticsearch" % "elasticsearch" % Versions.elasticSearch exclude ("org.apache.logging.log4j", "log4j-api"), - "org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % Versions.rest exclude ("org.elasticsearch", "elasticsearch"), - "org.elasticsearch.client" % "elasticsearch-rest-client" % Versions.rest + "org.elasticsearch.client" % "elasticsearch-rest-high-level-client" % Versions.elasticSearch exclude ("org.elasticsearch", "elasticsearch"), + "org.elasticsearch.client" % "elasticsearch-rest-client" % Versions.elasticSearch ).map(_.excludeAll(jacksonExclusions: _*)) libraryDependencies ++= rest diff --git a/rest/src/main/scala/app/softnetwork/elastic/client/rest/RestHighLevelClientApi.scala b/rest/src/main/scala/app/softnetwork/elastic/client/rest/RestHighLevelClientApi.scala index 47a2349f..1eed7568 100644 --- a/rest/src/main/scala/app/softnetwork/elastic/client/rest/RestHighLevelClientApi.scala +++ b/rest/src/main/scala/app/softnetwork/elastic/client/rest/RestHighLevelClientApi.scala @@ -46,6 +46,7 @@ import scala.concurrent.{ExecutionContext, Future, Promise} import scala.language.implicitConversions import scala.util.{Failure, Success, Try} +@deprecated("Use app.softnetwork.elastic.client.java.ElasticsearchClientApi instead", "8.x") trait RestHighLevelClientApi extends ElasticClientApi with RestHighLevelClientIndicesApi @@ -620,23 +621,6 @@ trait RestHighLevelClientSearchApi extends SearchApi with RestHighLevelClientCom promise.future } - override def searchWithInnerHits[U, I](sqlQuery: SQLQuery, innerField: String)(implicit - m1: Manifest[U], - m2: Manifest[I], - formats: Formats - ): List[(U, List[I])] = { - sqlQuery.search match { - case Some(searchRequest) => - val indices = collection.immutable.Seq(searchRequest.sources: _*) - val jsonQuery = JSONQuery(searchRequest.query, indices) - searchWithInnerHits(jsonQuery, innerField) - case None => - throw new IllegalArgumentException( - s"SQL query ${sqlQuery.query} does not contain a valid search request" - ) - } - } - override def searchWithInnerHits[U, I](jsonQuery: JSONQuery, innerField: String)(implicit m1: Manifest[U], m2: Manifest[I], @@ -667,26 +651,6 @@ trait RestHighLevelClientSearchApi extends SearchApi with RestHighLevelClientCom } } - override def multiSearch[U]( - sqlQuery: SQLQuery - )(implicit m: Manifest[U], formats: Formats): List[List[U]] = { - sqlQuery.multiSearch match { - case Some(multiSearchRequest) => - val jsonQueries: JSONQueries = JSONQueries( - collection.immutable - .Seq(multiSearchRequest.requests.map { searchRequest => - JSONQuery(searchRequest.query, collection.immutable.Seq(searchRequest.sources: _*)) - }: _*) - .toList - ) - multiSearch[U](jsonQueries) - case None => - throw new IllegalArgumentException( - s"SQL query ${sqlQuery.query} does not contain a valid search request" - ) - } - } - override def multiSearch[U]( jsonQueries: JSONQueries )(implicit m: Manifest[U], formats: Formats): List[List[U]] = { @@ -720,28 +684,6 @@ trait RestHighLevelClientSearchApi extends SearchApi with RestHighLevelClientCom } } - override def multiSearchWithInnerHits[U, I](sqlQuery: SQLQuery, innerField: String)(implicit - m1: Manifest[U], - m2: Manifest[I], - formats: Formats - ): List[List[(U, List[I])]] = { - sqlQuery.multiSearch match { - case Some(multiSearchRequest) => - val jsonQueries: JSONQueries = JSONQueries( - collection.immutable - .Seq(multiSearchRequest.requests.map { searchRequest => - JSONQuery(searchRequest.query, collection.immutable.Seq(searchRequest.sources: _*)) - }: _*) - .toList - ) - multiSearchWithInnerHits[U, I](jsonQueries, innerField) - case None => - throw new IllegalArgumentException( - s"SQL query ${sqlQuery.query} does not contain a valid search request" - ) - } - } - override def multiSearchWithInnerHits[U, I](jsonQueries: JSONQueries, innerField: String)(implicit m1: Manifest[U], m2: Manifest[I], @@ -796,20 +738,13 @@ trait RestHighLevelClientBulkApi import bulkItem._ val request = action match { case BulkAction.UPDATE => - val r = new UpdateRequest(index, if (id.isEmpty) null else id.get) + new UpdateRequest(index, id.orNull) .doc(body, XContentType.JSON) .docAsUpsert(true) -// parent.foreach(r.parent) - r case BulkAction.DELETE => - val r = new DeleteRequest(index).id(id.getOrElse("_all")) -// parent.foreach(r.parent) - r + new DeleteRequest(index).id(id.getOrElse("_all")) case _ => - val r = new IndexRequest(index).source(body, XContentType.JSON) - id.foreach(r.id) -// parent.foreach(r.parent) - r + new IndexRequest(index).source(body, XContentType.JSON).id(id.orNull) } request } diff --git a/testkit/src/main/scala/app/softnetwork/elastic/client/MockElasticClientApi.scala b/testkit/src/main/scala/app/softnetwork/elastic/client/MockElasticClientApi.scala index b51f24b4..156aa550 100644 --- a/testkit/src/main/scala/app/softnetwork/elastic/client/MockElasticClientApi.scala +++ b/testkit/src/main/scala/app/softnetwork/elastic/client/MockElasticClientApi.scala @@ -4,7 +4,6 @@ import akka.NotUsed import akka.actor.ActorSystem import akka.stream.scaladsl.Flow import app.softnetwork.elastic.sql.SQLQuery -import app.softnetwork.persistence.message.CountResponse import org.json4s.Formats import app.softnetwork.persistence.model.Timestamped import org.slf4j.{Logger, LoggerFactory} @@ -39,11 +38,6 @@ trait MockElasticClientApi extends ElasticClientApi { override def openIndex(index: String): Boolean = true - override def countAsync(jsonQuery: JSONQuery)(implicit - ec: ExecutionContext - ): Future[Option[Double]] = - throw new UnsupportedOperationException - override def count(jsonQuery: JSONQuery): Option[Double] = throw new UnsupportedOperationException @@ -54,57 +48,17 @@ trait MockElasticClientApi extends ElasticClientApi { )(implicit m: Manifest[U], formats: Formats): Option[U] = elasticDocuments.get(id).asInstanceOf[Option[U]] - override def getAsync[U <: Timestamped]( - id: String, - index: Option[String] = None, - maybeType: Option[String] = None - )(implicit m: Manifest[U], ec: ExecutionContext, formats: Formats): Future[Option[U]] = - Future.successful(elasticDocuments.get(id).asInstanceOf[Option[U]]) - override def search[U](sqlQuery: SQLQuery)(implicit m: Manifest[U], formats: Formats): List[U] = elasticDocuments.getAll.toList.asInstanceOf[List[U]] - override def searchAsync[U]( - sqlQuery: SQLQuery - )(implicit m: Manifest[U], ec: ExecutionContext, formats: Formats): Future[List[U]] = - Future.successful(search(sqlQuery)) - - override def multiSearch[U]( - sqlQuery: SQLQuery - )(implicit m: Manifest[U], formats: Formats): List[List[U]] = - throw new UnsupportedOperationException - override def multiSearch[U]( jsonQueries: JSONQueries )(implicit m: Manifest[U], formats: Formats): List[List[U]] = throw new UnsupportedOperationException - override def index[U <: Timestamped]( - entity: U, - index: Option[String] = None, - maybeType: Option[String] = None - )(implicit u: ClassTag[U], formats: Formats): Boolean = { - elasticDocuments.createOrUpdate(entity) - true - } - - override def indexAsync[U <: Timestamped]( - entity: U, - index: Option[String] = None, - maybeType: Option[String] = None - )(implicit u: ClassTag[U], ec: ExecutionContext, formats: Formats): Future[Boolean] = { - elasticDocuments.createOrUpdate(entity) - Future.successful(true) - } - override def index(index: String, id: String, source: String): Boolean = throw new UnsupportedOperationException - override def indexAsync(index: String, id: String, source: String)(implicit - ec: ExecutionContext - ): Future[Boolean] = - throw new UnsupportedOperationException - override def update[U <: Timestamped]( entity: U, index: Option[String] = None, @@ -115,16 +69,6 @@ trait MockElasticClientApi extends ElasticClientApi { true } - override def updateAsync[U <: Timestamped]( - entity: U, - index: Option[String] = None, - maybeType: Option[String] = None, - upsert: Boolean = true - )(implicit u: ClassTag[U], ec: ExecutionContext, formats: Formats): Future[Boolean] = { - elasticDocuments.createOrUpdate(entity) - Future.successful(true) - } - override def update( index: String, id: String, @@ -135,13 +79,6 @@ trait MockElasticClientApi extends ElasticClientApi { false } - override def updateAsync( - index: String, - id: String, - source: String, - upsert: Boolean - )(implicit ec: ExecutionContext): Future[Boolean] = Future.successful(false) - override def delete(uuid: String, index: String): Boolean = { if (elasticDocuments.get(uuid).isDefined) { elasticDocuments.delete(uuid) @@ -151,12 +88,6 @@ trait MockElasticClientApi extends ElasticClientApi { } } - override def deleteAsync(uuid: String, index: String)(implicit - ec: ExecutionContext - ): Future[Boolean] = { - Future.successful(delete(uuid, index)) - } - override def refresh(index: String): Boolean = true override def flush(index: String, force: Boolean, wait: Boolean): Boolean = true @@ -189,12 +120,6 @@ trait MockElasticClientApi extends ElasticClientApi { formats: Formats ): List[List[(U, List[I])]] = List.empty - override def multiSearchWithInnerHits[U, I](sqlQuery: SQLQuery, innerField: String)(implicit - m1: Manifest[U], - m2: Manifest[I], - formats: Formats - ): List[List[(U, List[I])]] = List.empty - override def search[U](jsonQuery: JSONQuery)(implicit m: Manifest[U], formats: Formats): List[U] = List.empty @@ -204,12 +129,6 @@ trait MockElasticClientApi extends ElasticClientApi { formats: Formats ): List[(U, List[I])] = List.empty - override def searchWithInnerHits[U, I](sqlQuery: SQLQuery, innerField: String)(implicit - m1: Manifest[U], - m2: Manifest[I], - formats: Formats - ): List[(U, List[I])] = List.empty - override def getMapping(index: String): String = throw new UnsupportedOperationException diff --git a/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticDockerTestKit.scala b/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticDockerTestKit.scala index 9e169c3d..6b2cac9b 100644 --- a/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticDockerTestKit.scala +++ b/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticDockerTestKit.scala @@ -1,20 +1,55 @@ package app.softnetwork.elastic.scalatest import org.scalatest.Suite +import org.testcontainers.containers.BindMode +import org.testcontainers.containers.wait.strategy.Wait import org.testcontainers.elasticsearch.ElasticsearchContainer import org.testcontainers.utility.DockerImageName +import java.nio.file.Files +import java.time.Duration + /** Created by smanciot on 28/06/2018. */ trait ElasticDockerTestKit extends ElasticTestKit { _: Suite => override lazy val elasticURL: String = s"http://${elasticContainer.getHttpHostAddress}" - lazy val elasticContainer = new ElasticsearchContainer( - DockerImageName - .parse(s"elasticsearch:$elasticVersion") - .asCompatibleSubstituteFor("docker.elastic.co/elasticsearch/elasticsearch") - ) + lazy val localExecution: Boolean = sys.props.get("LOCAL_EXECUTION") match { + case Some("true") => true + case _ => false + } + + lazy val elasticContainer: ElasticsearchContainer = { + val tmpDir = + if (localExecution) { + val tmp = Files.createTempDirectory("es-tmp") + tmp.toFile.setWritable(true, false) + tmp.toAbsolutePath.toString + } else { + "/tmp" + } + Console.println(s"Using temporary directory for Elasticsearch: $tmpDir") + val container = new ElasticsearchContainer( + DockerImageName + .parse("docker.elastic.co/elasticsearch/elasticsearch") + .withTag(elasticVersion) + ) + container.addEnv("ES_TMPDIR", "/usr/share/elasticsearch/tmp") + container.addEnv("discovery.type", "single-node") + container.addEnv("xpack.security.enabled", "false") + container.addEnv("xpack.ml.enabled", "false") + container.addEnv("xpack.watcher.enabled", "false") + container.addEnv("xpack.graph.enabled", "false") + container.addFileSystemBind( + tmpDir, + "/usr/share/elasticsearch/tmp", + BindMode.READ_WRITE + ) + container.addEnv("ES_JAVA_OPTS", "-Xms1024m -Xmx1024m") + container.setWaitStrategy(Wait.forHttp("/").forStatusCode(200)) + container.withStartupTimeout(Duration.ofMinutes(2)) + } override def start(): Unit = elasticContainer.start() diff --git a/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticTestKit.scala b/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticTestKit.scala index e3e67334..34a9a9c5 100644 --- a/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticTestKit.scala +++ b/testkit/src/main/scala/app/softnetwork/elastic/scalatest/ElasticTestKit.scala @@ -1,6 +1,7 @@ package app.softnetwork.elastic.scalatest import app.softnetwork.concurrent.scalatest.CompletionTestKit +import app.softnetwork.elastic.ElasticTestkitBuildInfo import com.sksamuel.elastic4s.http.JavaClient import com.sksamuel.elastic4s.requests.indexes.admin.RefreshIndexResponse import com.sksamuel.elastic4s.{ElasticClient, ElasticDsl, Indexes} @@ -13,7 +14,6 @@ import org.scalatest.{BeforeAndAfterAll, Suite} import org.scalatest.matchers.{MatchResult, Matcher} import org.slf4j.Logger -import java.util.UUID import scala.util.{Failure, Success} /** Created by smanciot on 18/05/2021. @@ -22,7 +22,7 @@ trait ElasticTestKit extends ElasticDsl with CompletionTestKit with BeforeAndAft def log: Logger - def elasticVersion: String = "7.17.28" + def elasticVersion: String = ElasticTestkitBuildInfo.version def elasticURL: String @@ -41,8 +41,6 @@ trait ElasticTestKit extends ElasticDsl with CompletionTestKit with BeforeAndAft |} |""".stripMargin - lazy val clusterName: String = s"test-${UUID.randomUUID()}" - lazy val elasticClient: ElasticClient = ElasticClient( new JavaClient( RestClient diff --git a/testkit/src/test/scala/app/softnetwork/elastic/client/ElasticClientSpec.scala b/testkit/src/test/scala/app/softnetwork/elastic/client/ElasticClientSpec.scala index b63e3494..34653c6b 100644 --- a/testkit/src/test/scala/app/softnetwork/elastic/client/ElasticClientSpec.scala +++ b/testkit/src/test/scala/app/softnetwork/elastic/client/ElasticClientSpec.scala @@ -1,8 +1,5 @@ package app.softnetwork.elastic.client -import java.io.ByteArrayInputStream -import java.util.concurrent.TimeUnit -import java.util.UUID import akka.actor.ActorSystem import app.softnetwork.elastic.sql.SQLQuery import com.fasterxml.jackson.core.JsonParseException @@ -19,7 +16,11 @@ import com.typesafe.scalalogging.StrictLogging import org.json4s.Formats import org.slf4j.{Logger, LoggerFactory} -import java.nio.file.{Files, Paths} +import _root_.java.io.ByteArrayInputStream +import _root_.java.nio.file.{Files, Paths} +import _root_.java.util.concurrent.TimeUnit +import _root_.java.util.UUID + import scala.concurrent.{Await, ExecutionContextExecutor} import scala.concurrent.duration.Duration import scala.util.{Failure, Success} @@ -173,19 +174,6 @@ trait ElasticClientSpec _.sourceField("name") ) should contain allOf ("Homer Simpson", "Moe Szyslak", "Barney Gumble") - // FIXME elastic >= v 6.x no more multiple Parent / Child relationship allowed within the same index -// val childIndices = -// pClient.bulk[String](children.iterator, identity, None, None, None, None, None, Some("parentId"))( -// jclient, -// BulkOptions("person2", "child", 1000), -// system) -// pClient.refresh("person2") -// -// childIndices should contain only "person2" -// -// blockUntilCount(2, "person2", "child") -// -// "person2" should haveCount(5) } "Bulk index valid json with an id key and a suffix key" should "work" in { diff --git a/testkit/src/test/scala/app/softnetwork/elastic/client/RestHighLevelProviders.scala b/testkit/src/test/scala/app/softnetwork/elastic/client/RestHighLevelProviders.scala index 442985ca..c72de883 100644 --- a/testkit/src/test/scala/app/softnetwork/elastic/client/RestHighLevelProviders.scala +++ b/testkit/src/test/scala/app/softnetwork/elastic/client/RestHighLevelProviders.scala @@ -16,7 +16,7 @@ object RestHighLevelProviders { override lazy val config: Config = es - implicit lazy val jestClient: RestHighLevelClient = apply() + implicit lazy val restHighLevelClient: RestHighLevelClient = apply() } class SampleProvider(es: Config) @@ -26,7 +26,7 @@ object RestHighLevelProviders { override lazy val config: Config = es - implicit lazy val jestClient: RestHighLevelClient = apply() + implicit lazy val restHighLevelClient: RestHighLevelClient = apply() } class BinaryProvider(es: Config) @@ -36,6 +36,6 @@ object RestHighLevelProviders { override lazy val config: Config = es - implicit lazy val jestClient: RestHighLevelClient = apply() + implicit lazy val restHighLevelClient: RestHighLevelClient = apply() } }