diff --git a/modules/clickhouse/src/main/scala/com/dimafeng/testcontainers/ClickHouseContainer.scala b/modules/clickhouse/src/main/scala/com/dimafeng/testcontainers/ClickHouseContainer.scala index 23435de3..a14b1c83 100644 --- a/modules/clickhouse/src/main/scala/com/dimafeng/testcontainers/ClickHouseContainer.scala +++ b/modules/clickhouse/src/main/scala/com/dimafeng/testcontainers/ClickHouseContainer.scala @@ -1,30 +1,49 @@ package com.dimafeng.testcontainers -import org.testcontainers.containers.{ClickHouseContainer => JavaClickHouseContainer} +import org.testcontainers.clickhouse.{ClickHouseContainer => JavaClickHouseContainer} import org.testcontainers.utility.DockerImageName case class ClickHouseContainer( - dockerImageName: DockerImageName = DockerImageName.parse(ClickHouseContainer.defaultDockerImageName) + dockerImageName: DockerImageName = DockerImageName.parse(ClickHouseContainer.defaultDockerImageName), + clickhouseDatabaseName: Option[String] = None, + clickhouseUsername: Option[String] = None, + clickhousePassword: Option[String] = None ) extends SingleContainer[JavaClickHouseContainer] with JdbcDatabaseContainer { - override val container: JavaClickHouseContainer = new JavaClickHouseContainer(dockerImageName) + override val container: JavaClickHouseContainer = { + val c = new JavaClickHouseContainer(dockerImageName) + clickhouseDatabaseName.map(c.withDatabaseName) + clickhouseUsername.map(c.withUsername) + clickhousePassword.map(c.withPassword) + c + } def testQueryString: String = container.getTestQueryString } object ClickHouseContainer { - val defaultDockerImageName = s"${JavaClickHouseContainer.IMAGE}:${JavaClickHouseContainer.DEFAULT_TAG}" + // Copy String literal because JavaClickHouseContainer.CLICKHOUSE_IMAGE_NAME is private + val defaultDockerImageName = "clickhouse/clickhouse-server" + val defaultDatabaseName = "test" + val defaultUsername = "test" + val defaultPassword = "test" case class Def( - dockerImageName: DockerImageName = DockerImageName.parse(ClickHouseContainer.defaultDockerImageName) + dockerImageName: DockerImageName = DockerImageName.parse(defaultDockerImageName), + databaseName: String = defaultDatabaseName, + username: String = defaultUsername, + password: String = defaultPassword, ) extends ContainerDef { override type Container = ClickHouseContainer override def createContainer(): ClickHouseContainer = { new ClickHouseContainer( - dockerImageName = dockerImageName + dockerImageName = dockerImageName, + clickhouseDatabaseName = Some(databaseName), + clickhouseUsername = Some(username), + clickhousePassword = Some(password) ) } }