Search in sources :

Example 1 with TestMultiThreaded

use of org.h2.test.synth.TestMultiThreaded in project h2database by h2database.

the class TestCompress method testMultiThreaded.

private void testMultiThreaded() throws Exception {
    Task[] tasks = new Task[3];
    for (int i = 0; i < tasks.length; i++) {
        Task t = new Task() {

            @Override
            public void call() {
                CompressTool tool = CompressTool.getInstance();
                byte[] b = new byte[1024];
                Random r = new Random();
                while (!stop) {
                    r.nextBytes(b);
                    byte[] test = tool.expand(tool.compress(b, "LZF"));
                    assertEquals(b, test);
                }
            }
        };
        tasks[i] = t;
        t.execute();
    }
    Thread.sleep(1000);
    for (Task t : tasks) {
        t.get();
    }
}
Also used : Task(org.h2.util.Task) Random(java.util.Random) CompressTool(org.h2.tools.CompressTool)

Example 2 with TestMultiThreaded

use of org.h2.test.synth.TestMultiThreaded in project h2database by h2database.

the class TestGetGeneratedKeys method testMultithreaded.

/**
 * Test method for shared connection between several statements in different
 * threads.
 *
 * @param conn
 *            connection
 * @throws Exception
 *             on exception
 */
private void testMultithreaded(final Connection conn) throws Exception {
    Statement stat = conn.createStatement();
    stat.execute("CREATE TABLE TEST (ID BIGINT PRIMARY KEY AUTO_INCREMENT," + "VALUE INT NOT NULL)");
    final int count = 4, iterations = 10_000;
    Thread[] threads = new Thread[count];
    final long[] keys = new long[count * iterations];
    for (int i = 0; i < count; i++) {
        final int num = i;
        threads[num] = new Thread("getGeneratedKeys-" + num) {

            @Override
            public void run() {
                try {
                    PreparedStatement prep = conn.prepareStatement("INSERT INTO TEST(VALUE) VALUES (?)", Statement.RETURN_GENERATED_KEYS);
                    for (int i = 0; i < iterations; i++) {
                        int value = iterations * num + i;
                        prep.setInt(1, value);
                        prep.execute();
                        ResultSet rs = prep.getGeneratedKeys();
                        rs.next();
                        keys[value] = rs.getLong(1);
                        rs.close();
                    }
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        };
    }
    for (int i = 0; i < count; i++) {
        threads[i].start();
    }
    for (int i = 0; i < count; i++) {
        threads[i].join();
    }
    ResultSet rs = stat.executeQuery("SELECT VALUE, ID FROM TEST ORDER BY VALUE");
    for (int i = 0; i < keys.length; i++) {
        assertTrue(rs.next());
        assertEquals(i, rs.getInt(1));
        assertEquals(keys[i], rs.getLong(2));
    }
    assertFalse(rs.next());
    rs.close();
    stat.execute("DROP TABLE TEST");
}
Also used : SQLException(java.sql.SQLException) JdbcStatement(org.h2.jdbc.JdbcStatement) Statement(java.sql.Statement) PreparedStatement(java.sql.PreparedStatement) JdbcPreparedStatement(org.h2.jdbc.JdbcPreparedStatement) ResultSet(java.sql.ResultSet) PreparedStatement(java.sql.PreparedStatement) JdbcPreparedStatement(org.h2.jdbc.JdbcPreparedStatement)

Example 3 with TestMultiThreaded

use of org.h2.test.synth.TestMultiThreaded in project h2database by h2database.

the class TestAll method test.

/**
 * Run all tests with the current settings.
 */
private void test() throws SQLException {
    System.out.println();
    System.out.println("Test " + toString() + " (" + Utils.getMemoryUsed() + " KB used)");
    beforeTest();
    // db
    addTest(new TestScriptSimple());
    addTest(new TestScript());
    addTest(new TestAlter());
    addTest(new TestAlterSchemaRename());
    addTest(new TestAutoRecompile());
    addTest(new TestBackup());
    addTest(new TestBigDb());
    addTest(new TestBigResult());
    addTest(new TestCases());
    addTest(new TestCheckpoint());
    addTest(new TestCompatibility());
    addTest(new TestCompatibilityOracle());
    addTest(new TestCsv());
    addTest(new TestDeadlock());
    if (vmlens) {
        return;
    }
    addTest(new TestDrop());
    addTest(new TestDuplicateKeyUpdate());
    addTest(new TestEncryptedDb());
    addTest(new TestExclusive());
    addTest(new TestFullText());
    addTest(new TestFunctionOverload());
    addTest(new TestFunctions());
    addTest(new TestInit());
    addTest(new TestIndex());
    addTest(new TestIndexHints());
    addTest(new TestLargeBlob());
    addTest(new TestLinkedTable());
    addTest(new TestListener());
    addTest(new TestLob());
    addTest(new TestMergeUsing());
    addTest(new TestMultiConn());
    addTest(new TestMultiDimension());
    addTest(new TestMultiThreadedKernel());
    addTest(new TestOpenClose());
    addTest(new TestOptimizations());
    addTest(new TestOptimizerHints());
    addTest(new TestOutOfMemory());
    addTest(new TestReadOnly());
    addTest(new TestRecursiveQueries());
    addTest(new TestGeneralCommonTableQueries());
    if (!memory) {
        // requires persistent store for reconnection tests
        addTest(new TestPersistentCommonTableExpressions());
    }
    addTest(new TestRights());
    addTest(new TestRunscript());
    addTest(new TestSQLInjection());
    addTest(new TestSessionsLocks());
    addTest(new TestSelectCountNonNullColumn());
    addTest(new TestSequence());
    addTest(new TestShow());
    addTest(new TestSpaceReuse());
    addTest(new TestSpatial());
    addTest(new TestSpeed());
    addTest(new TestTableEngines());
    addTest(new TestRowFactory());
    addTest(new TestTempTables());
    addTest(new TestTransaction());
    addTest(new TestTriggersConstraints());
    addTest(new TestTwoPhaseCommit());
    addTest(new TestView());
    addTest(new TestViewAlterTable());
    addTest(new TestViewDropView());
    addTest(new TestReplace());
    addTest(new TestSynonymForTable());
    addTest(new TestColumnNamer());
    // jaqu
    addTest(new AliasMapTest());
    addTest(new AnnotationsTest());
    addTest(new ClobTest());
    addTest(new ModelsTest());
    addTest(new SamplesTest());
    addTest(new UpdateTest());
    // jdbc
    addTest(new TestBatchUpdates());
    addTest(new TestCallableStatement());
    addTest(new TestCancel());
    addTest(new TestConcurrentConnectionUsage());
    addTest(new TestConnection());
    addTest(new TestDatabaseEventListener());
    addTest(new TestJavaObject());
    addTest(new TestLimitUpdates());
    addTest(new TestLobApi());
    addTest(new TestManyJdbcObjects());
    addTest(new TestMetaData());
    addTest(new TestNativeSQL());
    addTest(new TestPreparedStatement());
    addTest(new TestResultSet());
    addTest(new TestStatement());
    addTest(new TestGetGeneratedKeys());
    addTest(new TestTransactionIsolation());
    addTest(new TestUpdatableResultSet());
    addTest(new TestZloty());
    addTest(new TestCustomDataTypesHandler());
    addTest(new TestSetCollation());
    // jdbcx
    addTest(new TestConnectionPool());
    addTest(new TestDataSource());
    addTest(new TestXA());
    addTest(new TestXASimple());
    // server
    addTest(new TestAutoServer());
    addTest(new TestNestedLoop());
    // mvcc & row level locking
    addTest(new TestMvcc1());
    addTest(new TestMvcc2());
    addTest(new TestMvcc3());
    addTest(new TestMvcc4());
    addTest(new TestMvccMultiThreaded());
    addTest(new TestMvccMultiThreaded2());
    addTest(new TestRowLocks());
    // synth
    addTest(new TestBtreeIndex());
    addTest(new TestConcurrentUpdate());
    addTest(new TestDiskFull());
    addTest(new TestCrashAPI());
    addTest(new TestFuzzOptimizations());
    addTest(new TestLimit());
    addTest(new TestRandomCompare());
    addTest(new TestKillRestart());
    addTest(new TestKillRestartMulti());
    addTest(new TestMultiThreaded());
    addTest(new TestOuterJoins());
    addTest(new TestNestedJoins());
    addTest(new TestStringAggCompatibility());
    runAddedTests();
    // serial
    addTest(new TestDateStorage());
    addTest(new TestDriver());
    addTest(new TestJavaObjectSerializer());
    addTest(new TestLocale());
    addTest(new TestMemoryUsage());
    addTest(new TestMultiThread());
    addTest(new TestPowerOff());
    addTest(new TestReorderWrites());
    addTest(new TestRandomSQL());
    addTest(new TestQueryCache());
    addTest(new TestUrlJavaObjectSerializer());
    addTest(new TestWeb());
    runAddedTests(1);
    afterTest();
}
Also used : TestDuplicateKeyUpdate(org.h2.test.db.TestDuplicateKeyUpdate) TestDeadlock(org.h2.test.db.TestDeadlock) TestPreparedStatement(org.h2.test.jdbc.TestPreparedStatement) TestXA(org.h2.test.jdbcx.TestXA) TestTransactionIsolation(org.h2.test.jdbc.TestTransactionIsolation) TestViewDropView(org.h2.test.db.TestViewDropView) TestRandomCompare(org.h2.test.synth.TestRandomCompare) TestSetCollation(org.h2.test.db.TestSetCollation) TestSelectCountNonNullColumn(org.h2.test.db.TestSelectCountNonNullColumn) TestConcurrentConnectionUsage(org.h2.test.jdbc.TestConcurrentConnectionUsage) TestCompatibility(org.h2.test.db.TestCompatibility) TestUpdatableResultSet(org.h2.test.jdbc.TestUpdatableResultSet) TestMvccMultiThreaded(org.h2.test.mvcc.TestMvccMultiThreaded) TestDatabaseEventListener(org.h2.test.jdbc.TestDatabaseEventListener) TestCheckpoint(org.h2.test.db.TestCheckpoint) TestListener(org.h2.test.db.TestListener) TestCustomDataTypesHandler(org.h2.test.jdbc.TestCustomDataTypesHandler) TestOpenClose(org.h2.test.db.TestOpenClose) TestEncryptedDb(org.h2.test.db.TestEncryptedDb) TestExclusive(org.h2.test.db.TestExclusive) TestViewAlterTable(org.h2.test.db.TestViewAlterTable) TestGetGeneratedKeys(org.h2.test.jdbc.TestGetGeneratedKeys) TestFunctions(org.h2.test.db.TestFunctions) TestManyJdbcObjects(org.h2.test.jdbc.TestManyJdbcObjects) TestLobApi(org.h2.test.jdbc.TestLobApi) TestLocale(org.h2.test.unit.TestLocale) TestLimit(org.h2.test.synth.TestLimit) TestDataSource(org.h2.test.jdbcx.TestDataSource) TestTransaction(org.h2.test.db.TestTransaction) TestJavaObject(org.h2.test.jdbc.TestJavaObject) TestRowLocks(org.h2.test.rowlock.TestRowLocks) TestWeb(org.h2.test.server.TestWeb) TestAutoServer(org.h2.test.server.TestAutoServer) TestNestedLoop(org.h2.test.server.TestNestedLoop) TestMultiDimension(org.h2.test.db.TestMultiDimension) UpdateTest(org.h2.test.jaqu.UpdateTest) TestCases(org.h2.test.db.TestCases) TestJavaObjectSerializer(org.h2.test.jdbc.TestJavaObjectSerializer) TestUrlJavaObjectSerializer(org.h2.test.jdbc.TestUrlJavaObjectSerializer) TestMultiThread(org.h2.test.db.TestMultiThread) TestLob(org.h2.test.db.TestLob) TestFuzzOptimizations(org.h2.test.synth.TestFuzzOptimizations) TestRunscript(org.h2.test.db.TestRunscript) TestTableEngines(org.h2.test.db.TestTableEngines) TestMemoryUsage(org.h2.test.db.TestMemoryUsage) TestConnection(org.h2.test.jdbc.TestConnection) TestRandomSQL(org.h2.test.synth.TestRandomSQL) TestRights(org.h2.test.db.TestRights) TestXASimple(org.h2.test.jdbcx.TestXASimple) TestLargeBlob(org.h2.test.db.TestLargeBlob) TestBatchUpdates(org.h2.test.jdbc.TestBatchUpdates) TestStringAggCompatibility(org.h2.test.synth.TestStringAggCompatibility) TestMvccMultiThreaded2(org.h2.test.mvcc.TestMvccMultiThreaded2) TestSequence(org.h2.test.db.TestSequence) AliasMapTest(org.h2.test.jaqu.AliasMapTest) TestMergeUsing(org.h2.test.db.TestMergeUsing) TestMetaData(org.h2.test.jdbc.TestMetaData) TestMultiThreadedKernel(org.h2.test.db.TestMultiThreadedKernel) TestConcurrentUpdate(org.h2.test.synth.TestConcurrentUpdate) TestResultSet(org.h2.test.jdbc.TestResultSet) ModelsTest(org.h2.test.jaqu.ModelsTest) TestSpaceReuse(org.h2.test.db.TestSpaceReuse) TestDriver(org.h2.test.jdbc.TestDriver) TestGeneralCommonTableQueries(org.h2.test.db.TestGeneralCommonTableQueries) TestBigDb(org.h2.test.db.TestBigDb) TestOutOfMemory(org.h2.test.db.TestOutOfMemory) TestFunctionOverload(org.h2.test.db.TestFunctionOverload) TestPowerOff(org.h2.test.db.TestPowerOff) TestPersistentCommonTableExpressions(org.h2.test.db.TestPersistentCommonTableExpressions) TestKillRestartMulti(org.h2.test.synth.TestKillRestartMulti) TestBtreeIndex(org.h2.test.synth.TestBtreeIndex) TestOptimizations(org.h2.test.db.TestOptimizations) TestMultiThreaded(org.h2.test.synth.TestMultiThreaded) TestLinkedTable(org.h2.test.db.TestLinkedTable) TestTriggersConstraints(org.h2.test.db.TestTriggersConstraints) SamplesTest(org.h2.test.jaqu.SamplesTest) TestSynonymForTable(org.h2.test.db.TestSynonymForTable) TestReadOnly(org.h2.test.db.TestReadOnly) TestCompatibilityOracle(org.h2.test.db.TestCompatibilityOracle) TestInit(org.h2.test.server.TestInit) TestCsv(org.h2.test.db.TestCsv) TestFullText(org.h2.test.db.TestFullText) TestIndexHints(org.h2.test.db.TestIndexHints) AnnotationsTest(org.h2.test.jaqu.AnnotationsTest) TestDiskFull(org.h2.test.synth.TestDiskFull) TestStatement(org.h2.test.jdbc.TestStatement) TestReplace(org.h2.test.db.TestReplace) TestScriptSimple(org.h2.test.scripts.TestScriptSimple) TestTwoPhaseCommit(org.h2.test.db.TestTwoPhaseCommit) TestSessionsLocks(org.h2.test.db.TestSessionsLocks) TestIndex(org.h2.test.db.TestIndex) TestOuterJoins(org.h2.test.synth.TestOuterJoins) TestAlterSchemaRename(org.h2.test.db.TestAlterSchemaRename) TestBackup(org.h2.test.db.TestBackup) TestAutoRecompile(org.h2.test.db.TestAutoRecompile) TestShow(org.h2.test.db.TestShow) TestSQLInjection(org.h2.test.db.TestSQLInjection) TestDrop(org.h2.test.db.TestDrop) TestConnectionPool(org.h2.test.jdbcx.TestConnectionPool) TestCancel(org.h2.test.jdbc.TestCancel) TestScript(org.h2.test.scripts.TestScript) TestCrashAPI(org.h2.test.synth.TestCrashAPI) TestRecursiveQueries(org.h2.test.db.TestRecursiveQueries) TestKillRestart(org.h2.test.synth.TestKillRestart) TestBigResult(org.h2.test.db.TestBigResult) ClobTest(org.h2.test.jaqu.ClobTest) TestNestedJoins(org.h2.test.synth.TestNestedJoins) TestRowFactory(org.h2.test.db.TestRowFactory) TestCallableStatement(org.h2.test.jdbc.TestCallableStatement) TestNativeSQL(org.h2.test.jdbc.TestNativeSQL) TestSpeed(org.h2.test.db.TestSpeed) TestTempTables(org.h2.test.db.TestTempTables) TestZloty(org.h2.test.jdbc.TestZloty) TestMultiConn(org.h2.test.db.TestMultiConn) TestMvcc3(org.h2.test.mvcc.TestMvcc3) TestMvcc4(org.h2.test.mvcc.TestMvcc4) TestMvcc1(org.h2.test.mvcc.TestMvcc1) TestSpatial(org.h2.test.db.TestSpatial) TestMvcc2(org.h2.test.mvcc.TestMvcc2) TestQueryCache(org.h2.test.db.TestQueryCache) TestAlter(org.h2.test.db.TestAlter) TestDateStorage(org.h2.test.db.TestDateStorage) TestColumnNamer(org.h2.test.utils.TestColumnNamer) TestLimitUpdates(org.h2.test.jdbc.TestLimitUpdates) TestReorderWrites(org.h2.test.poweroff.TestReorderWrites) TestView(org.h2.test.db.TestView) TestOptimizerHints(org.h2.test.db.TestOptimizerHints)

Example 4 with TestMultiThreaded

use of org.h2.test.synth.TestMultiThreaded in project h2database by h2database.

the class TestFullText method testMultiThreaded.

private void testMultiThreaded(boolean lucene) throws Exception {
    final String prefix = lucene ? "FTL" : "FT";
    trace("Testing multithreaded " + prefix);
    deleteDb("fullText");
    ArrayList<Connection> connList = new ArrayList<>();
    try {
        int len = 2;
        Task[] task = new Task[len];
        for (int i = 0; i < len; i++) {
            final Connection conn = getConnection("fullText;LOCK_TIMEOUT=60000", connList);
            Statement stat = conn.createStatement();
            initFullText(stat, lucene);
            initFullText(stat, lucene);
            final String tableName = "TEST" + i;
            stat.execute("CREATE TABLE " + tableName + "(ID INT PRIMARY KEY, DATA VARCHAR)");
            stat.execute("CALL " + prefix + "_CREATE_INDEX('PUBLIC', '" + tableName + "', NULL)");
            task[i] = new Task() {

                @Override
                public void call() throws SQLException {
                    trace("starting thread " + Thread.currentThread());
                    PreparedStatement prep = conn.prepareStatement("INSERT INTO " + tableName + " VALUES(?, ?)");
                    Statement stat = conn.createStatement();
                    Random random = new Random();
                    int x = 0;
                    while (!stop) {
                        trace("stop = " + stop + " for " + Thread.currentThread());
                        StringBuilder buff = new StringBuilder();
                        for (int j = 0; j < 1000; j++) {
                            buff.append(" ").append(random.nextInt(10000));
                            buff.append(" x").append(j);
                            buff.append(" ").append(KNOWN_WORDS[j % KNOWN_WORDS.length]);
                        }
                        prep.setInt(1, x);
                        prep.setString(2, buff.toString());
                        prep.execute();
                        x++;
                        for (String knownWord : KNOWN_WORDS) {
                            trace("searching for " + knownWord + " with " + Thread.currentThread());
                            ResultSet rs = stat.executeQuery("SELECT * FROM " + prefix + "_SEARCH('" + knownWord + "', 0, 0)");
                            assertTrue(rs.next());
                        }
                    }
                    trace("closing connection");
                    if (!config.memory) {
                        conn.close();
                    }
                    trace("completed thread " + Thread.currentThread());
                }
            };
        }
        for (Task t : task) {
            t.execute();
        }
        trace("sleeping");
        Thread.sleep(1000);
        trace("setting stop to true");
        for (Task t : task) {
            trace("joining " + t);
            t.get();
            trace("done joining " + t);
        }
    } finally {
        close(connList);
    }
}
Also used : Task(org.h2.util.Task) SQLException(java.sql.SQLException) PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) Connection(java.sql.Connection) ArrayList(java.util.ArrayList) PreparedStatement(java.sql.PreparedStatement) Random(java.util.Random) ResultSet(java.sql.ResultSet)

Aggregations

PreparedStatement (java.sql.PreparedStatement)2 ResultSet (java.sql.ResultSet)2 SQLException (java.sql.SQLException)2 Statement (java.sql.Statement)2 Random (java.util.Random)2 Connection (java.sql.Connection)1 ArrayList (java.util.ArrayList)1 JdbcPreparedStatement (org.h2.jdbc.JdbcPreparedStatement)1 JdbcStatement (org.h2.jdbc.JdbcStatement)1 TestAlter (org.h2.test.db.TestAlter)1 TestAlterSchemaRename (org.h2.test.db.TestAlterSchemaRename)1 TestAutoRecompile (org.h2.test.db.TestAutoRecompile)1 TestBackup (org.h2.test.db.TestBackup)1 TestBigDb (org.h2.test.db.TestBigDb)1 TestBigResult (org.h2.test.db.TestBigResult)1 TestCases (org.h2.test.db.TestCases)1 TestCheckpoint (org.h2.test.db.TestCheckpoint)1 TestCompatibility (org.h2.test.db.TestCompatibility)1 TestCompatibilityOracle (org.h2.test.db.TestCompatibilityOracle)1 TestCsv (org.h2.test.db.TestCsv)1