-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d3b0df2
commit 083dcde
Showing
7 changed files
with
130 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...ckhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainer.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package org.testcontainers.clickhouse; | ||
|
||
import io.r2dbc.spi.ConnectionFactoryOptions; | ||
import org.testcontainers.containers.ClickHouseR2DBCDatabaseContainerProvider; | ||
import org.testcontainers.r2dbc.R2DBCDatabaseContainer; | ||
|
||
/** | ||
* ClickHouse R2DBC support | ||
*/ | ||
public class ClickHouseR2DBCDatabaseContainer implements R2DBCDatabaseContainer { | ||
|
||
private final ClickHouseContainer container; | ||
|
||
public ClickHouseR2DBCDatabaseContainer(ClickHouseContainer container) { | ||
this.container = container; | ||
} | ||
|
||
public static ConnectionFactoryOptions getOptions(ClickHouseContainer container) { | ||
ConnectionFactoryOptions options = ConnectionFactoryOptions.builder() | ||
.option(ConnectionFactoryOptions.DRIVER, ClickHouseR2DBCDatabaseContainerProvider.DRIVER) | ||
.build(); | ||
|
||
return new ClickHouseR2DBCDatabaseContainer(container).configure(options); | ||
} | ||
|
||
@Override | ||
public void start() { | ||
container.start(); | ||
} | ||
|
||
@Override | ||
public void stop() { | ||
container.stop(); | ||
} | ||
|
||
@Override | ||
public ConnectionFactoryOptions configure(ConnectionFactoryOptions options) { | ||
return options.mutate() | ||
.option(ConnectionFactoryOptions.HOST, container.getHost()) | ||
.option(ConnectionFactoryOptions.PORT, container.getMappedPort(ClickHouseContainer.HTTP_PORT)) | ||
.option(ConnectionFactoryOptions.DATABASE, container.getDatabaseName()) | ||
.option(ConnectionFactoryOptions.USER, container.getUsername()) | ||
.option(ConnectionFactoryOptions.PASSWORD, container.getPassword()) | ||
.build(); | ||
} | ||
} |
31 changes: 31 additions & 0 deletions
31
...src/main/java/org/testcontainers/containers/ClickHouseR2DBCDatabaseContainerProvider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
package org.testcontainers.containers; | ||
|
||
import com.clickhouse.r2dbc.connection.ClickHouseConnectionFactoryProvider; | ||
import io.r2dbc.spi.ConnectionFactoryOptions; | ||
import org.testcontainers.clickhouse.ClickHouseContainer; | ||
import org.testcontainers.clickhouse.ClickHouseR2DBCDatabaseContainer; | ||
import org.testcontainers.r2dbc.R2DBCDatabaseContainer; | ||
import org.testcontainers.r2dbc.R2DBCDatabaseContainerProvider; | ||
|
||
public class ClickHouseR2DBCDatabaseContainerProvider implements R2DBCDatabaseContainerProvider { | ||
public static final String DRIVER = ClickHouseConnectionFactoryProvider.CLICKHOUSE_DRIVER; | ||
|
||
private static final String IMAGE_NAME = "clickhouse/clickhouse-server"; | ||
|
||
@Override | ||
public boolean supports(ConnectionFactoryOptions options) { | ||
return DRIVER.equals(options.getRequiredValue(ConnectionFactoryOptions.DRIVER)); | ||
} | ||
|
||
@Override | ||
public R2DBCDatabaseContainer createContainer(ConnectionFactoryOptions options) { | ||
String image = IMAGE_NAME + ":" + options.getRequiredValue(IMAGE_TAG_OPTION); | ||
ClickHouseContainer container = new ClickHouseContainer(image) | ||
.withDatabaseName((String) options.getRequiredValue(ConnectionFactoryOptions.DATABASE)); | ||
|
||
if (Boolean.TRUE.equals(options.getValue(REUSABLE_OPTION))) { | ||
container.withReuse(true); | ||
} | ||
return new ClickHouseR2DBCDatabaseContainer(container); | ||
} | ||
} |
1 change: 1 addition & 0 deletions
1
.../main/resources/META-INF/services/org.testcontainers.r2dbc.R2DBCDatabaseContainerProvider
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
org.testcontainers.containers.ClickHouseR2DBCDatabaseContainerProvider |
33 changes: 33 additions & 0 deletions
33
...use/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package org.testcontainers.clickhouse; | ||
|
||
import io.r2dbc.spi.ConnectionFactoryOptions; | ||
import org.testcontainers.r2dbc.AbstractR2DBCDatabaseContainerTest; | ||
|
||
public class ClickHouseR2DBCDatabaseContainerTest extends AbstractR2DBCDatabaseContainerTest<ClickHouseContainer> { | ||
@Override | ||
protected ConnectionFactoryOptions getOptions(ClickHouseContainer container) { | ||
// spotless:off | ||
// get_options { | ||
ConnectionFactoryOptions options = ClickHouseR2DBCDatabaseContainer.getOptions( | ||
container | ||
); | ||
// } | ||
// spotless:on | ||
|
||
return options; | ||
} | ||
|
||
@Override | ||
protected String createR2DBCUrl() { | ||
return "r2dbc:tc:clickhouse:///db?TC_IMAGE_TAG=21.9.2-alpine"; | ||
} | ||
|
||
@Override | ||
protected ClickHouseContainer createContainer() { | ||
return new ClickHouseContainer("clickhouse/clickhouse-server:21.9.2-alpine") | ||
.withExposedPorts(ClickHouseContainer.HTTP_PORT, ClickHouseContainer.NATIVE_PORT) | ||
.withUsername("test") | ||
.withPassword("test") | ||
.withDatabaseName("db"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters