Merge pull request #590 from mtambara/concurrent

Add test to demonstrate concurrency problem
pull/611/head
Brett Wooldridge 9 years ago
commit db989fff2d

@ -0,0 +1,57 @@
package com.zaxxer.hikari.pool;
import com.zaxxer.hikari.HikariConfig;
import org.junit.Test;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
/**
* @author Matthew Tambara (matthew.tambara@liferay.com)
*/
public class ConcurrentCloseConnectionTest
{
@Test
public void testConcurrentClose() throws Exception
{
HikariConfig config = new HikariConfig();
config.setDataSourceClassName("com.zaxxer.hikari.mocks.StubDataSource");
try (HikariDataSource ds = new HikariDataSource(config);
final Connection connection = ds.getConnection()) {
ExecutorService executorService = Executors.newFixedThreadPool(10);
List<Future> futures = new ArrayList<>();
for (int i = 0; i < 500; i++) {
final PreparedStatement preparedStatement =
connection.prepareStatement("");
futures.add(executorService.submit(new Callable<Void>() {
@Override
public Void call() throws Exception {
preparedStatement.close();
return null;
}
}));
}
executorService.shutdown();
for (Future future : futures) {
future.get();
}
}
}
}
Loading…
Cancel
Save