Skip to content

Commit 3c2360d

Browse files
committed
address review comments
1 parent 76aa6f5 commit 3c2360d

File tree

19 files changed

+78
-119
lines changed

19 files changed

+78
-119
lines changed

.github/ISSUE_TEMPLATE/bug_report.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ body:
3939
- MySQL
4040
- Neo4j
4141
- NGINX
42-
- OceanBase CE
42+
- OceanBase
4343
- Oracle Free
4444
- Oracle XE
4545
- OrientDB

.github/ISSUE_TEMPLATE/enhancement.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ body:
3939
- MySQL
4040
- Neo4j
4141
- NGINX
42-
- OceanBase CE
42+
- OceanBase
4343
- Oracle Free
4444
- Oracle XE
4545
- OrientDB

.github/ISSUE_TEMPLATE/feature.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ body:
3939
- MySQL
4040
- Neo4j
4141
- NGINX
42-
- OceanBase CE
42+
- OceanBase
4343
- Oracle Free
4444
- Oracle XE
4545
- OrientDB

.github/dependabot.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ updates:
202202
interval: "weekly"
203203
open-pull-requests-limit: 10
204204
- package-ecosystem: "gradle"
205-
directory: "/modules/oceanbase-ce"
205+
directory: "/modules/oceanbase"
206206
schedule:
207207
interval: "weekly"
208208
open-pull-requests-limit: 10

.github/labeler.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,10 @@
123123
- changed-files:
124124
- any-glob-to-any-file:
125125
- modules/nginx/**/*
126-
"modules/oceanbase-ce":
126+
"modules/oceanbase":
127127
- changed-files:
128128
- any-glob-to-any-file:
129-
- modules/oceanbase-ce/**/*
129+
- modules/oceanbase/**/*
130130
"modules/oracle":
131131
- changed-files:
132132
- any-glob-to-any-file:

docs/modules/databases/jdbc.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ Insert `tc:` after `jdbc:` as follows. Note that the hostname, port and database
5757

5858
#### Using OceanBase
5959

60-
`jdbc:tc:oceanbase:4.2.1_bp3:///databasename`
60+
`jdbc:tc:oceanbasece:4.2.1_bp3:///databasename`
6161

6262
#### Using Oracle
6363

docs/modules/databases/oceanbasece.md renamed to docs/modules/databases/oceanbase.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# OceanBase-CE Module
1+
# OceanBase Module
22

33
See [Database containers](./index.md) for documentation and usage that is common to all relational database container types.
44

@@ -8,14 +8,14 @@ Add the following dependency to your `pom.xml`/`build.gradle` file:
88

99
=== "Gradle"
1010
```groovy
11-
testImplementation "org.testcontainers:oceanbase-ce:{{latest_version}}"
11+
testImplementation "org.testcontainers:oceanbase:{{latest_version}}"
1212
```
1313

1414
=== "Maven"
1515
```xml
1616
<dependency>
1717
<groupId>org.testcontainers</groupId>
18-
<artifactId>oceanbase-ce</artifactId>
18+
<artifactId>oceanbase</artifactId>
1919
<version>{{latest_version}}</version>
2020
<scope>test</scope>
2121
</dependency>

mkdocs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ nav:
6464
- modules/databases/mssqlserver.md
6565
- modules/databases/mysql.md
6666
- modules/databases/neo4j.md
67-
- modules/databases/oceanbasece.md
67+
- modules/databases/oceanbase.md
6868
- modules/databases/oraclefree.md
6969
- modules/databases/oraclexe.md
7070
- modules/databases/orientdb.md

modules/oceanbase-ce/src/main/java/org/testcontainers/containers/OceanBaseContainerProvider.java

-30
This file was deleted.

modules/oceanbase-ce/src/main/resources/META-INF/services/org.testcontainers.containers.JdbcDatabaseContainerProvider

-1
This file was deleted.

modules/oceanbase-ce/src/test/java/org/testcontainers/OceanBaseTestImages.java

-8
This file was deleted.

modules/oceanbase-ce/build.gradle renamed to modules/oceanbase/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
description = "Testcontainers :: JDBC :: OceanBase CE"
1+
description = "Testcontainers :: JDBC :: OceanBase"
22

33
dependencies {
44
api project(':jdbc')

modules/oceanbase-ce/src/main/java/org/testcontainers/containers/OceanBaseContainer.java renamed to modules/oceanbase/src/main/java/org/testcontainers/oceanbase/OceanBaseCEContainer.java

+15-42
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
package org.testcontainers.containers;
1+
package org.testcontainers.oceanbase;
22

33
import org.apache.commons.lang3.StringUtils;
4+
import org.testcontainers.containers.JdbcDatabaseContainer;
45
import org.testcontainers.utility.DockerImageName;
56

67
/**
7-
* Testcontainers implementation for OceanBase.
8+
* Testcontainers implementation for OceanBase Community Edition.
89
* <p>
910
* Supported image: {@code oceanbase/oceanbase-ce}
1011
* <p>
@@ -14,33 +15,37 @@
1415
* <li>RPC: 2882</li>
1516
* </ul>
1617
*/
17-
public class OceanBaseContainer extends JdbcDatabaseContainer<OceanBaseContainer> {
18+
public class OceanBaseCEContainer extends JdbcDatabaseContainer<OceanBaseCEContainer> {
1819

19-
static final String NAME = "oceanbase";
20+
static final String NAME = "oceanbasece";
2021

2122
static final String DOCKER_IMAGE_NAME = "oceanbase/oceanbase-ce";
2223

2324
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(DOCKER_IMAGE_NAME);
2425

2526
private static final Integer SQL_PORT = 2881;
27+
2628
private static final Integer RPC_PORT = 2882;
2729

2830
private static final String SYSTEM_TENANT_NAME = "sys";
31+
2932
private static final String DEFAULT_TEST_TENANT_NAME = "test";
33+
3034
private static final String DEFAULT_USERNAME = "root";
35+
3136
private static final String DEFAULT_PASSWORD = "";
37+
3238
private static final String DEFAULT_DATABASE_NAME = "test";
3339

34-
private boolean enableFastboot;
35-
private String mode;
3640
private String tenantName = DEFAULT_TEST_TENANT_NAME;
41+
3742
private String driverClassName = "com.mysql.cj.jdbc.Driver";
3843

39-
public OceanBaseContainer(String dockerImageName) {
44+
public OceanBaseCEContainer(String dockerImageName) {
4045
this(DockerImageName.parse(dockerImageName));
4146
}
4247

43-
public OceanBaseContainer(DockerImageName dockerImageName) {
48+
public OceanBaseCEContainer(DockerImageName dockerImageName) {
4449
super(dockerImageName);
4550
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
4651

@@ -83,34 +88,13 @@ protected String getTestQueryString() {
8388
return "SELECT 1";
8489
}
8590

86-
/**
87-
* Enable fastboot.
88-
*
89-
* @return this
90-
*/
91-
public OceanBaseContainer enableFastboot() {
92-
this.enableFastboot = true;
93-
return self();
94-
}
95-
96-
/**
97-
* Set the deployment mode, see <a href="https://hub.docker.com/r/oceanbase/oceanbase-ce">Docker Hub</a> for more details.
98-
*
99-
* @param mode the deployment mode
100-
* @return this
101-
*/
102-
public OceanBaseContainer withMode(String mode) {
103-
this.mode = mode;
104-
return self();
105-
}
106-
10791
/**
10892
* Set the non-system tenant to be created for testing.
10993
*
11094
* @param tenantName the name of tenant to be created
11195
* @return this
11296
*/
113-
public OceanBaseContainer withTenant(String tenantName) {
97+
public OceanBaseCEContainer withTenant(String tenantName) {
11498
if (StringUtils.isEmpty(tenantName)) {
11599
throw new IllegalArgumentException("Tenant name cannot be null or empty");
116100
}
@@ -127,30 +111,19 @@ public OceanBaseContainer withTenant(String tenantName) {
127111
* @param driverClassName the driver class name
128112
* @return this
129113
*/
130-
public OceanBaseContainer withDriverClassName(String driverClassName) {
114+
public OceanBaseCEContainer withDriverClassName(String driverClassName) {
131115
if (StringUtils.isEmpty(driverClassName)) {
132116
throw new IllegalArgumentException("Driver class name cannot be null or empty");
133117
}
134118
if (!driverClassName.contains("mysql") && !driverClassName.contains("oceanbase")) {
135119
throw new IllegalArgumentException("Driver class name should contains 'mysql' or 'oceanbase'");
136120
}
137-
try {
138-
Class.forName(driverClassName);
139-
} catch (ClassNotFoundException e) {
140-
throw new IllegalArgumentException("Driver class not found", e);
141-
}
142121
this.driverClassName = driverClassName;
143122
return self();
144123
}
145124

146125
@Override
147126
protected void configure() {
148-
if (StringUtils.isNotBlank(mode)) {
149-
withEnv("MODE", mode);
150-
}
151-
if (enableFastboot) {
152-
withEnv("FASTBOOT", "true");
153-
}
154127
if (!DEFAULT_TEST_TENANT_NAME.equals(tenantName)) {
155128
withEnv("OB_TENANT_NAME", tenantName);
156129
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.testcontainers.oceanbase;
2+
3+
import org.testcontainers.containers.JdbcDatabaseContainer;
4+
import org.testcontainers.containers.JdbcDatabaseContainerProvider;
5+
import org.testcontainers.utility.DockerImageName;
6+
7+
/**
8+
* Factory for OceanBase Community Edition containers.
9+
*/
10+
public class OceanBaseCEContainerProvider extends JdbcDatabaseContainerProvider {
11+
12+
private static final String DEFAULT_TAG = "4.2.1_bp3";
13+
14+
@Override
15+
public boolean supports(String databaseType) {
16+
return databaseType.equals(OceanBaseCEContainer.NAME);
17+
}
18+
19+
@Override
20+
public JdbcDatabaseContainer newInstance() {
21+
return newInstance(DEFAULT_TAG);
22+
}
23+
24+
@Override
25+
public JdbcDatabaseContainer newInstance(String tag) {
26+
if (tag != null) {
27+
return new OceanBaseCEContainer(DockerImageName.parse(OceanBaseCEContainer.DOCKER_IMAGE_NAME).withTag(tag));
28+
} else {
29+
return newInstance();
30+
}
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.testcontainers.oceanbase.OceanBaseCEContainerProvider
+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class OceanBaseJdbcDriverTest extends AbstractJDBCDriverTest {
1313
@Parameterized.Parameters(name = "{index} - {0}")
1414
public static Iterable<Object[]> data() {
1515
return Arrays.asList(
16-
new Object[][] { { "jdbc:tc:oceanbase://hostname/databasename", EnumSet.noneOf(Options.class) } }
16+
new Object[][] { { "jdbc:tc:oceanbasece://hostname/databasename", EnumSet.noneOf(Options.class) } }
1717
);
1818
}
1919
}

modules/oceanbase-ce/src/test/java/org/testcontainers/junit/oceanbase/SimpleOceanBaseTest.java renamed to modules/oceanbase/src/test/java/org/testcontainers/junit/oceanbase/SimpleOceanBaseCETest.java

+17-25
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,32 @@
33
import org.junit.Test;
44
import org.slf4j.Logger;
55
import org.slf4j.LoggerFactory;
6-
import org.testcontainers.OceanBaseTestImages;
7-
import org.testcontainers.containers.OceanBaseContainer;
86
import org.testcontainers.containers.output.Slf4jLogConsumer;
97
import org.testcontainers.db.AbstractContainerDatabaseTest;
8+
import org.testcontainers.oceanbase.OceanBaseCEContainer;
9+
import org.testcontainers.oceanbase.OceanBaseCEContainerProvider;
1010

1111
import java.sql.ResultSet;
1212
import java.sql.SQLException;
1313

1414
import static org.assertj.core.api.Assertions.assertThat;
1515

16-
public class SimpleOceanBaseTest extends AbstractContainerDatabaseTest {
16+
public class SimpleOceanBaseCETest extends AbstractContainerDatabaseTest {
1717

18-
private static final Logger logger = LoggerFactory.getLogger(SimpleOceanBaseTest.class);
18+
private static final Logger logger = LoggerFactory.getLogger(SimpleOceanBaseCETest.class);
19+
20+
private final OceanBaseCEContainerProvider containerProvider = new OceanBaseCEContainerProvider();
21+
22+
@SuppressWarnings("resource")
23+
private OceanBaseCEContainer testContainer() {
24+
return ((OceanBaseCEContainer) containerProvider.newInstance()).withEnv("MODE", "slim")
25+
.withEnv("FASTBOOT", "true")
26+
.withLogConsumer(new Slf4jLogConsumer(logger));
27+
}
1928

2029
@Test
2130
public void testSimple() throws SQLException {
22-
try (
23-
OceanBaseContainer container = new OceanBaseContainer(OceanBaseTestImages.OCEANBASE_CE_IMAGE)
24-
.withMode("slim")
25-
.enableFastboot()
26-
.withLogConsumer(new Slf4jLogConsumer(logger))
27-
) {
31+
try (OceanBaseCEContainer container = testContainer()) {
2832
container.start();
2933

3034
ResultSet resultSet = performQuery(container, "SELECT 1");
@@ -36,13 +40,7 @@ public void testSimple() throws SQLException {
3640

3741
@Test
3842
public void testExplicitInitScript() throws SQLException {
39-
try (
40-
OceanBaseContainer container = new OceanBaseContainer(OceanBaseTestImages.OCEANBASE_CE_IMAGE)
41-
.withMode("slim")
42-
.enableFastboot()
43-
.withInitScript("init.sql")
44-
.withLogConsumer(new Slf4jLogConsumer(logger))
45-
) {
43+
try (OceanBaseCEContainer container = testContainer().withInitScript("init.sql")) {
4644
container.start();
4745

4846
ResultSet resultSet = performQuery(container, "SELECT foo FROM bar");
@@ -53,13 +51,7 @@ public void testExplicitInitScript() throws SQLException {
5351

5452
@Test
5553
public void testWithAdditionalUrlParamInJdbcUrl() {
56-
try (
57-
OceanBaseContainer container = new OceanBaseContainer(OceanBaseTestImages.OCEANBASE_CE_IMAGE)
58-
.withMode("slim")
59-
.enableFastboot()
60-
.withUrlParam("useSSL", "false")
61-
.withLogConsumer(new Slf4jLogConsumer(logger))
62-
) {
54+
try (OceanBaseCEContainer container = testContainer().withUrlParam("useSSL", "false")) {
6355
container.start();
6456

6557
String jdbcUrl = container.getJdbcUrl();
@@ -68,7 +60,7 @@ public void testWithAdditionalUrlParamInJdbcUrl() {
6860
}
6961
}
7062

71-
private void assertHasCorrectExposedAndLivenessCheckPorts(OceanBaseContainer container) {
63+
private void assertHasCorrectExposedAndLivenessCheckPorts(OceanBaseCEContainer container) {
7264
int sqlPort = 2881;
7365
int rpcPort = 2882;
7466

0 commit comments

Comments
 (0)