|
1 | 1 | package com.clickhouse.jdbc; |
2 | 2 |
|
| 3 | +import com.clickhouse.client.api.Client; |
| 4 | +import com.clickhouse.client.api.ClientConfigProperties; |
3 | 5 | import com.clickhouse.client.api.query.GenericRecord; |
4 | 6 | import org.testng.Assert; |
5 | 7 | import org.testng.annotations.Test; |
|
16 | 18 | import java.util.Arrays; |
17 | 19 | import java.util.List; |
18 | 20 | import java.util.Properties; |
| 21 | +import java.util.concurrent.TimeUnit; |
19 | 22 |
|
20 | 23 | import static org.testng.Assert.*; |
21 | 24 | import static org.testng.Assert.assertEquals; |
@@ -361,28 +364,30 @@ private void testSettingRole() throws SQLException { |
361 | 364 |
|
362 | 365 | try (ConnectionImpl conn = new ConnectionImpl(getEndpointString(), info)) { |
363 | 366 | GenericRecord record = conn.client.queryAll("SELECT currentRoles()").get(0); |
364 | | - assertEquals(record.getList(1).size(), 2); |
| 367 | + assertEquals(record.getList(1).size(), 0); |
365 | 368 |
|
366 | 369 | try (Statement stmt = conn.createStatement()) { |
367 | 370 | stmt.execute("SET ROLE role1"); |
368 | 371 | } |
369 | 372 |
|
370 | 373 | record = conn.client.queryAll("SELECT currentRoles()").get(0); |
371 | 374 | assertEquals(record.getList(1).size(), 1); |
| 375 | + assertEquals(record.getList(1).get(0), "role1"); |
372 | 376 |
|
373 | 377 | try (Statement stmt = conn.createStatement()) { |
374 | 378 | stmt.execute("SET ROLE role2"); |
375 | 379 | } |
376 | 380 |
|
377 | 381 | record = conn.client.queryAll("SELECT currentRoles()").get(0); |
378 | 382 | assertEquals(record.getList(1).size(), 1); |
| 383 | + assertEquals(record.getList(1).get(0), "role2"); |
379 | 384 |
|
380 | 385 | try (Statement stmt = conn.createStatement()) { |
381 | 386 | stmt.execute("SET ROLE NONE"); |
382 | 387 | } |
383 | 388 |
|
384 | 389 | record = conn.client.queryAll("SELECT currentRoles()").get(0); |
385 | | - assertEquals(record.getList(1).size(), 2); |
| 390 | + assertEquals(record.getList(1).size(), 0); |
386 | 391 | } |
387 | 392 | } |
388 | 393 |
|
@@ -449,4 +454,21 @@ public void testWithIPs() throws Exception { |
449 | 454 | } |
450 | 455 | } |
451 | 456 | } |
| 457 | + |
| 458 | + @Test |
| 459 | + public void testConnectionExhaustion() throws Exception { |
| 460 | + |
| 461 | + int maxNumConnections = 3; |
| 462 | + Properties properties = new Properties(); |
| 463 | + properties.put(ClientConfigProperties.HTTP_MAX_OPEN_CONNECTIONS.getKey(), "" + maxNumConnections); |
| 464 | + properties.put(ClientConfigProperties.CONNECTION_REQUEST_TIMEOUT.getKey(), "" + 1000); // 1 sec connection req timeout |
| 465 | + |
| 466 | + try (Connection conn = getJdbcConnection(properties)) { |
| 467 | + try (Statement stmt = conn.createStatement()) { |
| 468 | + for (int i = 0; i< maxNumConnections * 2; i++) { |
| 469 | + stmt.executeQuery("SELECT number FROM system.numbers LIMIT 100"); |
| 470 | + } |
| 471 | + } |
| 472 | + } |
| 473 | + } |
452 | 474 | } |
0 commit comments