/*
* Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.jdbc;
import java.io.ByteArrayInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.h2.test.TestBase;
import org.h2.util.Task;
/**
* Test concurrent usage of the same connection.
*/
public class TestConcurrentConnectionUsage extends TestBase {
/**
* Run just this test.
*
* @param a ignored
*/
public static void main(String... a) throws Exception {
TestBase.createCaller().init().test();
}
@Override
public void test() throws SQLException {
testAutoCommit();
}
private void testAutoCommit() throws SQLException {
deleteDb(getTestName());
final Connection conn = getConnection(getTestName());
final PreparedStatement p1 = conn.prepareStatement("select 1 from dual");
Task t = new Task() {
@Override
public void call() throws Exception {
while (!stop) {
p1.executeQuery();
conn.setAutoCommit(true);
conn.setAutoCommit(false);
}
}
}.execute();
PreparedStatement prep = conn.prepareStatement("select ? from dual");
for (int i = 0; i < 10; i++) {
prep.setBinaryStream(1, new ByteArrayInputStream(new byte[1024]));
prep.executeQuery();
}
t.get();
conn.close();
}
}