Skip to content

Commit

Permalink
add driverClass option
Browse files Browse the repository at this point in the history
  • Loading branch information
whhe committed Jan 14, 2024
1 parent d08e9b7 commit 7011359
Showing 1 changed file with 26 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public class OceanBaseContainer extends JdbcDatabaseContainer<OceanBaseContainer
private boolean enableFastboot;
private String mode;
private String tenantName = DEFAULT_TEST_TENANT_NAME;
private String driverClassName = "com.mysql.cj.jdbc.Driver";

public OceanBaseContainer(String dockerImageName) {
this(DockerImageName.parse(dockerImageName));
Expand All @@ -53,7 +54,7 @@ public Integer getMappedPort(int originalPort) {

@Override
public String getDriverClassName() {
return "com.mysql.cj.jdbc.Driver";
return driverClassName;
}

@Override
Expand All @@ -63,7 +64,8 @@ public String getJdbcUrl() {

public String getJdbcUrl(String databaseName) {
String additionalUrlParams = constructUrlParameters("?", "&");
return "jdbc:mysql://" + getHost() + ":" + getMappedPort(SQL_PORT) + "/" + databaseName + additionalUrlParams;
String prefix = driverClassName.contains("mysql") ? "jdbc:mysql://" : "jdbc:oceanbase://";
return prefix + getHost() + ":" + getMappedPort(SQL_PORT) + "/" + databaseName + additionalUrlParams;
}

@Override
Expand Down Expand Up @@ -124,6 +126,28 @@ public OceanBaseContainer withTenant(String tenantName) {
return self();
}

/**
* Set the driver class name.
*
* @param driverClassName the driver class name
* @return this
*/
public OceanBaseContainer withDriverClassName(String driverClassName) {
if (StringUtils.isEmpty(driverClassName)) {
throw new IllegalArgumentException("Driver class name cannot be null or empty");
}
if (!driverClassName.contains("mysql") && !driverClassName.contains("oceanbase")) {
throw new IllegalArgumentException("Driver class name should contains 'mysql' or 'oceanbase'");
}
try {
Class.forName(driverClassName);
} catch (ClassNotFoundException e) {
throw new IllegalArgumentException("Driver class not found", e);
}
this.driverClassName = driverClassName;
return self();
}

@Override
protected void configure() {
if (StringUtils.isNotBlank(mode)) {
Expand Down

0 comments on commit 7011359

Please sign in to comment.