Skip to content

Commit 4ef126e

Browse files
authored
Refactor use of org.testcontainers.containers.Network (#25)
* Bump the version of the test dependency * Refactor use of `org.testcontainers.containers.Network`
1 parent 429b7b3 commit 4ef126e

File tree

20 files changed

+110
-63
lines changed

20 files changed

+110
-63
lines changed

.github/workflows/test.yml

+3
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,8 @@ jobs:
6060
distribution: 'graalvm-community'
6161
github-token: ${{ secrets.GITHUB_TOKEN }}
6262
cache: 'maven'
63+
native-image-job-reports: 'true'
64+
native-image-pr-reports: 'true'
65+
native-image-pr-reports-update-existing: 'true'
6366
- run: |
6467
./mvnw -T 1.5C -PnativeTestInCustom clean test

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/AcidTableTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.thin;
1818

19+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
1920
import org.junit.jupiter.api.Test;
2021
import org.testcontainers.containers.GenericContainer;
2122
import org.testcontainers.junit.jupiter.Container;
@@ -33,7 +34,7 @@
3334
@Testcontainers
3435
public class AcidTableTest {
3536
@Container
36-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
37+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
3738
.withEnv("SERVICE_NAME", "hiveserver2")
3839
.withExposedPorts(10000);
3940

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/InformationSchemaTest.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.thin;
1818

19-
import org.junit.jupiter.api.AfterAll;
19+
import org.junit.jupiter.api.AutoClose;
2020
import org.junit.jupiter.api.Test;
2121
import org.testcontainers.containers.Container.ExecResult;
2222
import org.testcontainers.containers.GenericContainer;
@@ -40,16 +40,19 @@
4040
@Testcontainers
4141
public class InformationSchemaTest {
4242

43+
@AutoClose
4344
private static final Network NETWORK = Network.newNetwork();
4445

4546
@Container
46-
public static final GenericContainer<?> POSTGRES = new GenericContainer<>("postgres:17.2-bookworm")
47+
@AutoClose
48+
private static final GenericContainer<?> POSTGRES = new GenericContainer<>("postgres:17.2-bookworm")
4749
.withEnv("POSTGRES_PASSWORD", "example")
4850
.withNetwork(NETWORK)
4951
.withNetworkAliases("some-postgres");
5052

5153
@Container
52-
public static final GenericContainer<?> HS2 = new GenericContainer<>(
54+
@AutoClose
55+
private static final GenericContainer<?> HS2 = new GenericContainer<>(
5356
new ImageFromDockerfile().withFileFromPath(
5457
"Dockerfile",
5558
Paths.get("src/test/resources/information-schema/Dockerfile").toAbsolutePath()
@@ -64,12 +67,6 @@ public class InformationSchemaTest {
6467
.dependsOn(POSTGRES)
6568
.withExposedPorts(10000);
6669

67-
68-
@AfterAll
69-
static void afterAll() {
70-
NETWORK.close();
71-
}
72-
7370
@Test
7471
void test() throws SQLException, IOException, InterruptedException {
7572
String jdbcUrlPrefix = "jdbc:hive2://" + HS2.getHost() + ":" + HS2.getMappedPort(10000);

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/StandaloneMetastoreTest.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818

1919
import com.zaxxer.hikari.HikariConfig;
2020
import com.zaxxer.hikari.HikariDataSource;
21-
import org.junit.jupiter.api.AfterAll;
21+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
22+
import org.junit.jupiter.api.AutoClose;
2223
import org.junit.jupiter.api.Test;
2324
import org.testcontainers.containers.GenericContainer;
2425
import org.testcontainers.containers.Network;
@@ -40,28 +41,26 @@
4041
@Testcontainers
4142
public class StandaloneMetastoreTest {
4243

44+
@AutoClose
4345
private static final Network NETWORK = Network.newNetwork();
4446

4547
@Container
46-
public static final GenericContainer<?> HMS_CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
48+
@AutoClose
49+
private static final GenericContainer<?> HMS_CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
4750
.withEnv("SERVICE_NAME", "metastore")
4851
.withNetwork(NETWORK)
4952
.withNetworkAliases("metastore")
5053
.withExposedPorts(9083);
5154

5255
@Container
53-
public static final GenericContainer<?> HS2_CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
56+
@AutoClose
57+
private static final GenericContainer<?> HS2_CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
5458
.withEnv("SERVICE_NAME", "hiveserver2")
5559
.withEnv("SERVICE_OPTS", "-Dhive.metastore.uris=thrift://metastore:9083")
5660
.withNetwork(NETWORK)
5761
.withExposedPorts(10000)
5862
.dependsOn(HMS_CONTAINER);
5963

60-
@AfterAll
61-
static void afterAll() {
62-
NETWORK.close();
63-
}
64-
6564
@Test
6665
void test() throws SQLException {
6766
HikariConfig config = new HikariConfig();

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/ThinTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.zaxxer.hikari.HikariConfig;
2020
import com.zaxxer.hikari.HikariDataSource;
21+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
2122
import org.junit.jupiter.api.Test;
2223
import org.testcontainers.containers.GenericContainer;
2324
import org.testcontainers.junit.jupiter.Container;
@@ -39,7 +40,7 @@
3940
public class ThinTest {
4041

4142
@Container
42-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
43+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
4344
.withEnv("SERVICE_NAME", "hiveserver2")
4445
.withExposedPorts(10000);
4546

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/ZookeeperServiceDiscoveryTest.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818

1919
import com.zaxxer.hikari.HikariConfig;
2020
import com.zaxxer.hikari.HikariDataSource;
21+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
2122
import org.apache.curator.framework.CuratorFramework;
2223
import org.apache.curator.framework.CuratorFrameworkFactory;
2324
import org.apache.curator.retry.ExponentialBackoffRetry;
24-
import org.junit.jupiter.api.AfterAll;
25+
import org.junit.jupiter.api.AutoClose;
2526
import org.junit.jupiter.api.Test;
2627
import org.testcontainers.containers.FixedHostPortGenericContainer;
2728
import org.testcontainers.containers.GenericContainer;
@@ -46,16 +47,19 @@ class ZookeeperServiceDiscoveryTest {
4647

4748
private static final int RANDOM_PORT_FIRST = getRandomPort();
4849

50+
@AutoClose
4951
private static final Network NETWORK = Network.newNetwork();
5052

5153
@Container
54+
@AutoClose
5255
private static final GenericContainer<?> ZOOKEEPER_CONTAINER = new GenericContainer<>("zookeeper:3.9.3-jre-17")
5356
.withNetwork(NETWORK)
5457
.withNetworkAliases("foo")
5558
.withExposedPorts(2181);
5659

5760
@Container
58-
private static final GenericContainer<?> HIVE_SERVER2_1_CONTAINER = new FixedHostPortGenericContainer<>("apache/hive:4.0.1")
61+
@AutoClose
62+
private static final GenericContainer<?> HIVE_SERVER2_1_CONTAINER = new FixedHostPortGenericContainer<>(ImageUtils.HIVE_IMAGE)
5963
.withNetwork(NETWORK)
6064
.withEnv("SERVICE_NAME", "hiveserver2")
6165
.withEnv("SERVICE_OPTS", "-Dhive.server2.support.dynamic.service.discovery=true" + " "
@@ -69,19 +73,14 @@ class ZookeeperServiceDiscoveryTest {
6973

7074
private String jdbcUrlPrefix;
7175

72-
@AfterAll
73-
static void afterAll() {
74-
NETWORK.close();
75-
}
76-
7776
@Test
7877
void assertShardingInLocalTransactions() throws SQLException {
7978
jdbcUrlPrefix = "jdbc:hive2://" + ZOOKEEPER_CONTAINER.getHost() + ":" + ZOOKEEPER_CONTAINER.getMappedPort(2181) + "/";
8079
DataSource dataSource = createDataSource();
8180
extracted(dataSource);
8281
HIVE_SERVER2_1_CONTAINER.stop();
8382
int randomPortSecond = getRandomPort();
84-
try (GenericContainer<?> hiveServer2SecondContainer = new FixedHostPortGenericContainer<>("apache/hive:4.0.1")
83+
try (GenericContainer<?> hiveServer2SecondContainer = new FixedHostPortGenericContainer<>(ImageUtils.HIVE_IMAGE)
8584
.withNetwork(NETWORK)
8685
.withEnv("SERVICE_NAME", "hiveserver2")
8786
.withEnv("SERVICE_OPTS", "-Dhive.server2.support.dynamic.service.discovery=true" + " "

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/iceberg/AvroTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.thin.iceberg;
1818

19+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
1920
import org.junit.jupiter.api.Test;
2021
import org.testcontainers.containers.GenericContainer;
2122
import org.testcontainers.junit.jupiter.Container;
@@ -33,7 +34,7 @@
3334
@Testcontainers
3435
public class AvroTest {
3536
@Container
36-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
37+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
3738
.withEnv("SERVICE_NAME", "hiveserver2")
3839
.withExposedPorts(10000);
3940

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/iceberg/OrcTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.thin.iceberg;
1818

19+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
1920
import org.junit.jupiter.api.Test;
2021
import org.testcontainers.containers.GenericContainer;
2122
import org.testcontainers.junit.jupiter.Container;
@@ -33,7 +34,7 @@
3334
@Testcontainers
3435
public class OrcTest {
3536
@Container
36-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
37+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
3738
.withEnv("SERVICE_NAME", "hiveserver2")
3839
.withExposedPorts(10000);
3940

hive-server2-jdbc-driver-thin/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/thin/iceberg/ParquetTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.thin.iceberg;
1818

19+
import io.github.linghengqian.hive.server2.jdbc.driver.thin.util.ImageUtils;
1920
import org.junit.jupiter.api.Test;
2021
import org.testcontainers.containers.GenericContainer;
2122
import org.testcontainers.junit.jupiter.Container;
@@ -33,7 +34,7 @@
3334
@Testcontainers
3435
public class ParquetTest {
3536
@Container
36-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
37+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
3738
.withEnv("SERVICE_NAME", "hiveserver2")
3839
.withExposedPorts(10000);
3940

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright 2025 Qiheng He
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package io.github.linghengqian.hive.server2.jdbc.driver.thin.util;
18+
19+
public class ImageUtils {
20+
21+
public static final String HIVE_IMAGE = "apache/hive:4.0.1";
22+
}

hive-server2-jdbc-driver-uber/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/uber/AcidTableTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.uber;
1818

19+
import io.github.linghengqian.hive.server2.jdbc.driver.uber.util.ImageUtils;
1920
import org.junit.jupiter.api.Test;
2021
import org.testcontainers.containers.GenericContainer;
2122
import org.testcontainers.junit.jupiter.Container;
@@ -33,7 +34,7 @@
3334
@Testcontainers
3435
public class AcidTableTest {
3536
@Container
36-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
37+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
3738
.withEnv("SERVICE_NAME", "hiveserver2")
3839
.withExposedPorts(10000);
3940

hive-server2-jdbc-driver-uber/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/uber/InformationSchemaTest.java

+6-9
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
package io.github.linghengqian.hive.server2.jdbc.driver.uber;
1818

19-
import org.junit.jupiter.api.AfterAll;
19+
import org.junit.jupiter.api.AutoClose;
2020
import org.junit.jupiter.api.Test;
2121
import org.testcontainers.containers.Container.ExecResult;
2222
import org.testcontainers.containers.GenericContainer;
@@ -40,16 +40,19 @@
4040
@Testcontainers
4141
public class InformationSchemaTest {
4242

43+
@AutoClose
4344
private static final Network NETWORK = Network.newNetwork();
4445

4546
@Container
46-
public static final GenericContainer<?> POSTGRES = new GenericContainer<>("postgres:17.2-bookworm")
47+
@AutoClose
48+
private static final GenericContainer<?> POSTGRES = new GenericContainer<>("postgres:17.2-bookworm")
4749
.withEnv("POSTGRES_PASSWORD", "example")
4850
.withNetwork(NETWORK)
4951
.withNetworkAliases("some-postgres");
5052

5153
@Container
52-
public static final GenericContainer<?> HS2 = new GenericContainer<>(
54+
@AutoClose
55+
private static final GenericContainer<?> HS2 = new GenericContainer<>(
5356
new ImageFromDockerfile().withFileFromPath(
5457
"Dockerfile",
5558
Paths.get("src/test/resources/information-schema/Dockerfile").toAbsolutePath()
@@ -64,12 +67,6 @@ public class InformationSchemaTest {
6467
.dependsOn(POSTGRES)
6568
.withExposedPorts(10000);
6669

67-
68-
@AfterAll
69-
static void afterAll() {
70-
NETWORK.close();
71-
}
72-
7370
@Test
7471
void test() throws SQLException, IOException, InterruptedException {
7572
String jdbcUrlPrefix = "jdbc:hive2://" + HS2.getHost() + ":" + HS2.getMappedPort(10000);

hive-server2-jdbc-driver-uber/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/uber/StandaloneMetastoreTest.java

+7-8
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818

1919
import com.zaxxer.hikari.HikariConfig;
2020
import com.zaxxer.hikari.HikariDataSource;
21-
import org.junit.jupiter.api.AfterAll;
21+
import io.github.linghengqian.hive.server2.jdbc.driver.uber.util.ImageUtils;
22+
import org.junit.jupiter.api.AutoClose;
2223
import org.junit.jupiter.api.Test;
2324
import org.testcontainers.containers.GenericContainer;
2425
import org.testcontainers.containers.Network;
@@ -40,28 +41,26 @@
4041
@Testcontainers
4142
public class StandaloneMetastoreTest {
4243

44+
@AutoClose
4345
private static final Network NETWORK = Network.newNetwork();
4446

4547
@Container
46-
public static final GenericContainer<?> HMS_CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
48+
@AutoClose
49+
private static final GenericContainer<?> HMS_CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
4750
.withEnv("SERVICE_NAME", "metastore")
4851
.withNetwork(NETWORK)
4952
.withNetworkAliases("metastore")
5053
.withExposedPorts(9083);
5154

5255
@Container
53-
public static final GenericContainer<?> HS2_CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
56+
@AutoClose
57+
private static final GenericContainer<?> HS2_CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
5458
.withEnv("SERVICE_NAME", "hiveserver2")
5559
.withEnv("SERVICE_OPTS", "-Dhive.metastore.uris=thrift://metastore:9083")
5660
.withNetwork(NETWORK)
5761
.withExposedPorts(10000)
5862
.dependsOn(HMS_CONTAINER);
5963

60-
@AfterAll
61-
static void afterAll() {
62-
NETWORK.close();
63-
}
64-
6564
@Test
6665
void test() throws SQLException {
6766
HikariConfig config = new HikariConfig();

hive-server2-jdbc-driver-uber/src/test/java/io/github/linghengqian/hive/server2/jdbc/driver/uber/UberTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.zaxxer.hikari.HikariConfig;
2020
import com.zaxxer.hikari.HikariDataSource;
21+
import io.github.linghengqian.hive.server2.jdbc.driver.uber.util.ImageUtils;
2122
import org.junit.jupiter.api.Test;
2223
import org.testcontainers.containers.GenericContainer;
2324
import org.testcontainers.junit.jupiter.Container;
@@ -39,7 +40,7 @@
3940
public class UberTest {
4041

4142
@Container
42-
public static final GenericContainer<?> CONTAINER = new GenericContainer<>("apache/hive:4.0.1")
43+
public static final GenericContainer<?> CONTAINER = new GenericContainer<>(ImageUtils.HIVE_IMAGE)
4344
.withEnv("SERVICE_NAME", "hiveserver2")
4445
.withExposedPorts(10000);
4546

0 commit comments

Comments
 (0)