|
1 | 1 | package com.dimafeng.testcontainers
|
2 | 2 |
|
3 |
| -import org.testcontainers.containers.{ClickHouseContainer => JavaClickHouseContainer} |
| 3 | +import org.testcontainers.clickhouse.{ClickHouseContainer => JavaClickHouseContainer} |
4 | 4 | import org.testcontainers.utility.DockerImageName
|
5 | 5 |
|
6 | 6 | 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 |
8 | 11 | ) extends SingleContainer[JavaClickHouseContainer] with JdbcDatabaseContainer {
|
9 | 12 |
|
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 | + } |
11 | 20 |
|
12 | 21 | def testQueryString: String = container.getTestQueryString
|
13 | 22 | }
|
14 | 23 |
|
15 | 24 | object ClickHouseContainer {
|
16 | 25 |
|
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" |
18 | 31 |
|
19 | 32 | 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, |
21 | 37 | ) extends ContainerDef {
|
22 | 38 |
|
23 | 39 | override type Container = ClickHouseContainer
|
24 | 40 |
|
25 | 41 | override def createContainer(): ClickHouseContainer = {
|
26 | 42 | new ClickHouseContainer(
|
27 |
| - dockerImageName = dockerImageName |
| 43 | + dockerImageName = dockerImageName, |
| 44 | + clickhouseDatabaseName = Some(databaseName), |
| 45 | + clickhouseUsername = Some(username), |
| 46 | + clickhousePassword = Some(password) |
28 | 47 | )
|
29 | 48 | }
|
30 | 49 | }
|
|
0 commit comments