Skip to content

Commit 2e95eaa

Browse files
committed
refactor: apply DRY principle to Elasticsearch configuration
- Move default environment variables to ElasticsearchController.DefaultEnvVars - Remove duplicate environment variable configuration from test code - Use ping() method for connection test which works correctly with Elasticsearch 9.1.3 - Format code with scalafmt
1 parent e5e90b3 commit 2e95eaa

File tree

3 files changed

+16
-17
lines changed

3 files changed

+16
-17
lines changed

build.sbt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,8 @@ val `docker-controller-scala-elasticsearch` = (project in file("docker-controlle
236236
libraryDependencies ++= Seq(
237237
scalatest.scalatest % Test,
238238
logback.classic % Test,
239-
"co.elastic.clients" % "elasticsearch-java" % "9.1.4" % Test,
240-
"org.elasticsearch.client" % "elasticsearch-rest-client" % "9.1.3" % Test,
239+
"co.elastic.clients" % "elasticsearch-java" % "9.1.4" % Test,
240+
"org.elasticsearch.client" % "elasticsearch-rest-client" % "9.1.3" % Test,
241241
"com.fasterxml.jackson.core" % "jackson-databind" % "2.20.0" % Test,
242242
"org.apache.logging.log4j" % "log4j-api" % "2.25.1" % Test,
243243
"org.apache.logging.log4j" % "log4j-core" % "2.25.1" % Test

docker-controller-scala-elasticsearch/src/main/scala/com/github/j5ik2o/dockerController/elasticsearch/ElasticsearchController.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ object ElasticsearchController {
1414
final val DefaultImageTag: Option[String] = Some("9.1.3")
1515
final val DefaultContainerPorts: Seq[Int] = Seq(9200, 9300)
1616

17+
final val DefaultEnvVars: Map[String, String] = Map(
18+
"discovery.type" -> "single-node",
19+
"xpack.security.enabled" -> "false",
20+
"xpack.security.http.ssl.enabled" -> "false",
21+
"ES_JAVA_OPTS" -> "-Xms512m -Xmx512m"
22+
)
23+
1724
def apply(
1825
dockerClient: DockerClient,
1926
isDockerClientAutoClose: Boolean = false,
2027
outputFrameInterval: FiniteDuration = 500.millis,
2128
imageName: String = DefaultImageName,
2229
imageTag: Option[String] = DefaultImageTag,
23-
envVars: Map[String, String] = Map.empty
30+
envVars: Map[String, String] = DefaultEnvVars
2431
)(
2532
hostPort1: Int,
2633
hostPort2: Int

docker-controller-scala-elasticsearch/src/test/scala/com/github/j5ik2o/dockerController/elasticsearch/ElasticsearchControllerSpec.scala

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,9 @@ class ElasticsearchControllerSpec extends AnyFreeSpec with DockerControllerSpecS
1515
val testTimeFactor: Int = sys.env.getOrElse("TEST_TIME_FACTOR", "1").toInt
1616
logger.debug(s"testTimeFactor = $testTimeFactor")
1717

18-
val hostPort1: Int = temporaryServerPort()
19-
val hostPort2: Int = temporaryServerPort()
20-
val controller: ElasticsearchController = ElasticsearchController(
21-
dockerClient,
22-
envVars = Map(
23-
"discovery.type" -> "single-node",
24-
"xpack.security.enabled" -> "false",
25-
"xpack.security.http.ssl.enabled" -> "false",
26-
"ES_JAVA_OPTS" -> "-Xms512m -Xmx512m"
27-
)
28-
)(hostPort1, hostPort2)
18+
val hostPort1: Int = temporaryServerPort()
19+
val hostPort2: Int = temporaryServerPort()
20+
val controller: ElasticsearchController = ElasticsearchController(dockerClient)(hostPort1, hostPort2)
2921

3022
override protected val dockerControllers: Vector[DockerController] = Vector(controller)
3123

@@ -56,9 +48,9 @@ class ElasticsearchControllerSpec extends AnyFreeSpec with DockerControllerSpecS
5648
new JacksonJsonpMapper()
5749
)
5850
val esClient = new ElasticsearchClient(transport)
59-
// Use info() instead of ping() for compatibility
60-
val info = esClient.info()
61-
assert(info.clusterName() != null)
51+
// Test connection with ping
52+
val pingResult = esClient.ping()
53+
assert(pingResult.value())
6254
} finally {
6355
if (transport != null)
6456
transport.close()

0 commit comments

Comments
 (0)