Skip to content

Commit 5200e31

Browse files
committed
Add jdbc URL helper to tests
1 parent bd3fd1f commit 5200e31

File tree

3 files changed

+60
-40
lines changed

3 files changed

+60
-40
lines changed

src/test/java/tech/ydb/jdbc/YdbDriverIntegrationTest.java

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import tech.ydb.jdbc.connection.YdbConnectionImpl;
1313
import tech.ydb.jdbc.connection.YdbContext;
14+
import tech.ydb.jdbc.impl.helper.JdbcUrlHelper;
1415
import tech.ydb.test.junit5.YdbHelperExtension;
1516

1617
/**
@@ -21,27 +22,11 @@ public class YdbDriverIntegrationTest {
2122
@RegisterExtension
2223
private static final YdbHelperExtension ydb = new YdbHelperExtension();
2324

24-
private static String jdbcURL(String... extras) {
25-
StringBuilder jdbc = new StringBuilder("jdbc:ydb:")
26-
.append(ydb.useTls() ? "grpcs://" : "grpc://")
27-
.append(ydb.endpoint())
28-
.append(ydb.database())
29-
.append("?");
30-
31-
if (ydb.authToken() != null) {
32-
jdbc.append("token=").append(ydb.authToken()).append("&");
33-
}
34-
35-
for (String extra: extras) {
36-
jdbc.append(extra).append("=").append(extra).append("&");
37-
}
38-
39-
return jdbc.toString();
40-
}
25+
private static final JdbcUrlHelper jdbcURL = new JdbcUrlHelper(ydb);
4126

4227
@Test
4328
public void connect() throws SQLException {
44-
try (Connection connection = DriverManager.getConnection(jdbcURL())) {
29+
try (Connection connection = DriverManager.getConnection(jdbcURL.build())) {
4530
Assertions.assertTrue(connection instanceof YdbConnectionImpl);
4631

4732
YdbConnection unwrapped = connection.unwrap(YdbConnection.class);
@@ -54,7 +39,7 @@ public void connect() throws SQLException {
5439
@Test
5540
public void testContextCache() throws SQLException {
5641
YdbContext ctx;
57-
try (Connection conn1 = DriverManager.getConnection(jdbcURL())) {
42+
try (Connection conn1 = DriverManager.getConnection(jdbcURL.build())) {
5843
Assertions.assertTrue(conn1.isValid(5000));
5944

6045
YdbConnection unwrapped = conn1.unwrap(YdbConnection.class);
@@ -63,7 +48,7 @@ public void testContextCache() throws SQLException {
6348
ctx = unwrapped.getCtx();
6449
}
6550

66-
try (Connection conn2 = DriverManager.getConnection(jdbcURL())) {
51+
try (Connection conn2 = DriverManager.getConnection(jdbcURL.build())) {
6752
Assertions.assertTrue(conn2.isValid(5000));
6853

6954
YdbConnection unwrapped = conn2.unwrap(YdbConnection.class);
@@ -72,7 +57,7 @@ public void testContextCache() throws SQLException {
7257
}
7358

7459
Properties props = new Properties();
75-
try (Connection conn3 = DriverManager.getConnection(jdbcURL(), props)) {
60+
try (Connection conn3 = DriverManager.getConnection(jdbcURL.build(), props)) {
7661
Assertions.assertTrue(conn3.isValid(5000));
7762

7863
YdbConnection unwrapped = conn3.unwrap(YdbConnection.class);
@@ -81,15 +66,15 @@ public void testContextCache() throws SQLException {
8166
}
8267

8368
props.setProperty("TEST_KEY", "TEST_VALUE");
84-
try (Connection conn4 = DriverManager.getConnection(jdbcURL(), props)) {
69+
try (Connection conn4 = DriverManager.getConnection(jdbcURL.build(), props)) {
8570
Assertions.assertTrue(conn4.isValid(5000));
8671

8772
YdbConnection unwrapped = conn4.unwrap(YdbConnection.class);
8873
Assertions.assertNotNull(unwrapped.getCtx());
8974
Assertions.assertNotSame(ctx, unwrapped.getCtx());
9075
}
9176

92-
try (Connection conn5 = DriverManager.getConnection(jdbcURL("test"))) {
77+
try (Connection conn5 = DriverManager.getConnection(jdbcURL.withArg("test", "false").build())) {
9378
Assertions.assertTrue(conn5.isValid(5000));
9479

9580
YdbConnection unwrapped = conn5.unwrap(YdbConnection.class);
@@ -102,7 +87,7 @@ public void testContextCache() throws SQLException {
10287
YdbDriver.register();
10388
}
10489

105-
try (Connection conn6 = DriverManager.getConnection(jdbcURL())) {
90+
try (Connection conn6 = DriverManager.getConnection(jdbcURL.build())) {
10691
Assertions.assertTrue(conn6.isValid(5000));
10792

10893
YdbConnection unwrapped = conn6.unwrap(YdbConnection.class);

src/test/java/tech/ydb/jdbc/impl/helper/JdbcConnectionExtention.java

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@ public class JdbcConnectionExtention implements
2424
BeforeEachCallback, BeforeAllCallback, AfterEachCallback, AfterAllCallback {
2525

2626
private final YdbHelperExtension ydb;
27-
private final boolean autoCommit;
27+
private final JdbcUrlHelper jdbcURL;
28+
2829
private final Map<ExtensionContext, Connection> map = new HashMap<>();
2930
private final Stack<Connection> stack = new Stack<>();
3031

3132
public JdbcConnectionExtention(YdbHelperExtension ydb, boolean autoCommit) {
3233
this.ydb = ydb;
33-
this.autoCommit = autoCommit;
34+
this.jdbcURL = new JdbcUrlHelper(ydb)
35+
.withArg("failOnTruncatedResult", "true")
36+
.withArg("autoCommit", String.valueOf(autoCommit));
3437
}
3538

3639
public JdbcConnectionExtention(YdbHelperExtension ydb) {
@@ -54,27 +57,14 @@ private void unregister(ExtensionContext ctx) throws SQLException {
5457
}
5558

5659
public String jdbcURL() {
57-
StringBuilder jdbc = new StringBuilder("jdbc:ydb:")
58-
.append(ydb.useTls() ? "grpcs://" : "grpc://")
59-
.append(ydb.endpoint())
60-
.append(ydb.database())
61-
.append("?autoCommit=")
62-
.append(autoCommit)
63-
.append("&failOnTruncatedResult=true");
64-
65-
if (ydb.authToken() != null) {
66-
jdbc.append("&token=").append(ydb.authToken());
67-
}
68-
69-
return jdbc.toString();
60+
return jdbcURL.build();
7061
}
7162

7263
public Connection connection() {
7364
Assert.assertFalse("Retrive connection before initialization", stack.isEmpty());
7465
return stack.peek();
7566
}
7667

77-
7868
@Override
7969
public void beforeEach(ExtensionContext ctx) throws Exception {
8070
register(ctx);
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package tech.ydb.jdbc.impl.helper;
2+
3+
4+
import tech.ydb.test.junit5.YdbHelperExtension;
5+
6+
/**
7+
*
8+
* @author Aleksandr Gorshenin
9+
*/
10+
public class JdbcUrlHelper {
11+
private final YdbHelperExtension ydb;
12+
private final String extra;
13+
14+
public JdbcUrlHelper(YdbHelperExtension ydb) {
15+
this.ydb = ydb;
16+
this.extra = "";
17+
}
18+
19+
private JdbcUrlHelper(JdbcUrlHelper other, String extra) {
20+
this.ydb = other.ydb;
21+
this.extra = other.extra.isEmpty() ? extra : other.extra + "&" + extra;
22+
}
23+
24+
public JdbcUrlHelper withArg(String arg, String value) {
25+
return new JdbcUrlHelper(this, arg + "=" + value);
26+
}
27+
28+
public String build() {
29+
StringBuilder jdbc = new StringBuilder("jdbc:ydb:")
30+
.append(ydb.useTls() ? "grpcs://" : "grpc://")
31+
.append(ydb.endpoint())
32+
.append(ydb.database());
33+
34+
char splitter = '?';
35+
if (ydb.authToken() != null) {
36+
jdbc.append(splitter).append("token=").append(ydb.authToken());
37+
splitter = '&';
38+
}
39+
if (!extra.isEmpty()) {
40+
jdbc.append(splitter).append(extra);
41+
}
42+
43+
return jdbc.toString();
44+
}
45+
}

0 commit comments

Comments
 (0)