Skip to content

Commit a0757ca

Browse files
committed
Add MSSQLR2DBCDatabaseContainer compatible with org.testcontainers.mssqlserver.MSSQLServerContainer
1 parent 546fa4a commit a0757ca

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package org.testcontainers.mssqlserver;
2+
3+
import io.r2dbc.mssql.MssqlConnectionFactoryProvider;
4+
import io.r2dbc.spi.ConnectionFactoryOptions;
5+
import org.testcontainers.r2dbc.R2DBCDatabaseContainer;
6+
7+
public class MSSQLR2DBCDatabaseContainer implements R2DBCDatabaseContainer {
8+
9+
private final MSSQLServerContainer container;
10+
11+
public MSSQLR2DBCDatabaseContainer(MSSQLServerContainer container) {
12+
this.container = container;
13+
}
14+
15+
public static ConnectionFactoryOptions getOptions(MSSQLServerContainer container) {
16+
ConnectionFactoryOptions options = ConnectionFactoryOptions
17+
.builder()
18+
.option(ConnectionFactoryOptions.DRIVER, MssqlConnectionFactoryProvider.MSSQL_DRIVER)
19+
.build();
20+
21+
return new MSSQLR2DBCDatabaseContainer(container).configure(options);
22+
}
23+
24+
@Override
25+
public ConnectionFactoryOptions configure(ConnectionFactoryOptions options) {
26+
return options
27+
.mutate()
28+
.option(ConnectionFactoryOptions.HOST, container.getHost())
29+
.option(ConnectionFactoryOptions.PORT, container.getMappedPort(MSSQLServerContainer.MS_SQL_SERVER_PORT))
30+
// TODO enable if/when MSSQLServerContainer adds support for customizing the DB name
31+
// .option(ConnectionFactoryOptions.DATABASE, container.getDatabasseName())
32+
.option(ConnectionFactoryOptions.USER, container.getUsername())
33+
.option(ConnectionFactoryOptions.PASSWORD, container.getPassword())
34+
.build();
35+
}
36+
37+
@Override
38+
public void start() {
39+
this.container.start();
40+
}
41+
42+
@Override
43+
public void stop() {
44+
this.container.stop();
45+
}
46+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.testcontainers.mssqlserver;
2+
3+
import io.r2dbc.spi.ConnectionFactoryOptions;
4+
import org.testcontainers.MSSQLServerTestImages;
5+
import org.testcontainers.r2dbc.AbstractR2DBCDatabaseContainerTest;
6+
7+
class MSSQLR2DBCDatabaseContainerTest extends AbstractR2DBCDatabaseContainerTest<MSSQLServerContainer> {
8+
9+
@Override
10+
protected ConnectionFactoryOptions getOptions(MSSQLServerContainer container) {
11+
return MSSQLR2DBCDatabaseContainer.getOptions(container);
12+
}
13+
14+
@Override
15+
protected String createR2DBCUrl() {
16+
return "r2dbc:tc:sqlserver:///?TC_IMAGE_TAG=2022-CU14-ubuntu-22.04";
17+
}
18+
19+
@Override
20+
protected MSSQLServerContainer createContainer() {
21+
return new MSSQLServerContainer(MSSQLServerTestImages.MSSQL_SERVER_IMAGE);
22+
}
23+
}

0 commit comments

Comments
 (0)