Skip to content

Commit 2ff92a8

Browse files
authored
Merge pull request #417 from pan3793/ch-args
Expose database, username, password args for ClickHouseContainer
2 parents 3aa780c + 04eacd7 commit 2ff92a8

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

Diff for: modules/clickhouse/src/main/scala/com/dimafeng/testcontainers/ClickHouseContainer.scala

+25-6
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,49 @@
11
package com.dimafeng.testcontainers
22

3-
import org.testcontainers.containers.{ClickHouseContainer => JavaClickHouseContainer}
3+
import org.testcontainers.clickhouse.{ClickHouseContainer => JavaClickHouseContainer}
44
import org.testcontainers.utility.DockerImageName
55

66
case class ClickHouseContainer(
7-
dockerImageName: DockerImageName = DockerImageName.parse(ClickHouseContainer.defaultDockerImageName)
7+
dockerImageName: DockerImageName = DockerImageName.parse(ClickHouseContainer.defaultDockerImageName),
8+
clickhouseDatabaseName: Option[String] = None,
9+
clickhouseUsername: Option[String] = None,
10+
clickhousePassword: Option[String] = None
811
) extends SingleContainer[JavaClickHouseContainer] with JdbcDatabaseContainer {
912

10-
override val container: JavaClickHouseContainer = new JavaClickHouseContainer(dockerImageName)
13+
override val container: JavaClickHouseContainer = {
14+
val c = new JavaClickHouseContainer(dockerImageName)
15+
clickhouseDatabaseName.map(c.withDatabaseName)
16+
clickhouseUsername.map(c.withUsername)
17+
clickhousePassword.map(c.withPassword)
18+
c
19+
}
1120

1221
def testQueryString: String = container.getTestQueryString
1322
}
1423

1524
object ClickHouseContainer {
1625

17-
val defaultDockerImageName = s"${JavaClickHouseContainer.IMAGE}:${JavaClickHouseContainer.DEFAULT_TAG}"
26+
// Copy String literal because JavaClickHouseContainer.CLICKHOUSE_IMAGE_NAME is private
27+
val defaultDockerImageName = "clickhouse/clickhouse-server"
28+
val defaultDatabaseName = "test"
29+
val defaultUsername = "test"
30+
val defaultPassword = "test"
1831

1932
case class Def(
20-
dockerImageName: DockerImageName = DockerImageName.parse(ClickHouseContainer.defaultDockerImageName)
33+
dockerImageName: DockerImageName = DockerImageName.parse(defaultDockerImageName),
34+
databaseName: String = defaultDatabaseName,
35+
username: String = defaultUsername,
36+
password: String = defaultPassword,
2137
) extends ContainerDef {
2238

2339
override type Container = ClickHouseContainer
2440

2541
override def createContainer(): ClickHouseContainer = {
2642
new ClickHouseContainer(
27-
dockerImageName = dockerImageName
43+
dockerImageName = dockerImageName,
44+
clickhouseDatabaseName = Some(databaseName),
45+
clickhouseUsername = Some(username),
46+
clickhousePassword = Some(password)
2847
)
2948
}
3049
}

0 commit comments

Comments
 (0)