提交 03fc1e6f authored 作者: Thomas Mueller's avatar Thomas Mueller

Allow to run most tests in parallel (not enabled right now)

上级 f6397d84
......@@ -5,7 +5,9 @@
*/
package org.h2.test;
import java.lang.management.ManagementFactory;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Properties;
import org.h2.Driver;
import org.h2.engine.Constants;
......@@ -168,6 +170,7 @@ import org.h2.test.unit.TestIntArray;
import org.h2.test.unit.TestIntIntHashMap;
import org.h2.test.unit.TestJmx;
import org.h2.test.unit.TestIntPerfectHash;
import org.h2.test.unit.TestLocale;
import org.h2.test.unit.TestMathUtils;
import org.h2.test.unit.TestModifyOnWrite;
import org.h2.test.unit.TestNetUtils;
......@@ -201,8 +204,10 @@ import org.h2.test.utils.SelfDestructor;
import org.h2.tools.DeleteDbFiles;
import org.h2.tools.Server;
import org.h2.util.AbbaLockingDetector;
import org.h2.util.New;
import org.h2.util.Profiler;
import org.h2.util.StringUtils;
import org.h2.util.Task;
import org.h2.util.Utils;
/**
......@@ -340,6 +345,11 @@ java org.h2.test.TestAll timer
*/
boolean endless;
/**
* If only fast tests should be run. If enabled, SSL is not tested.
*/
public boolean fast;
/**
* The THROTTLE value to use.
*/
......@@ -372,7 +382,7 @@ java org.h2.test.TestAll timer
private Server server;
private boolean fast;
ArrayList<TestBase> tests = New.arrayList();
/**
* Run all tests.
......@@ -625,213 +635,262 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
beforeTest();
// db
new TestScriptSimple().runTest(this);
new TestScript().runTest(this);
new TestAlter().runTest(this);
new TestAlterSchemaRename().runTest(this);
new TestAutoRecompile().runTest(this);
new TestBitField().runTest(this);
new TestBackup().runTest(this);
new TestBigDb().runTest(this);
new TestBigResult().runTest(this);
new TestCases().runTest(this);
new TestCheckpoint().runTest(this);
new TestCluster().runTest(this);
new TestCompatibility().runTest(this);
new TestCompatibilityOracle().runTest(this);
new TestCsv().runTest(this);
new TestDateStorage().runTest(this);
new TestDeadlock().runTest(this);
new TestDrop().runTest(this);
new TestDuplicateKeyUpdate().runTest(this);
new TestEncryptedDb().runTest(this);
new TestExclusive().runTest(this);
new TestFullText().runTest(this);
new TestFunctionOverload().runTest(this);
new TestFunctions().runTest(this);
new TestInit().runTest(this);
new TestIndex().runTest(this);
new TestLargeBlob().runTest(this);
new TestLinkedTable().runTest(this);
new TestListener().runTest(this);
new TestLob().runTest(this);
new TestMemoryUsage().runTest(this);
new TestMultiConn().runTest(this);
new TestMultiDimension().runTest(this);
new TestMultiThread().runTest(this);
new TestMultiThreadedKernel().runTest(this);
new TestOpenClose().runTest(this);
new TestOptimizations().runTest(this);
new TestOutOfMemory().runTest(this);
new TestPowerOff().runTest(this);
new TestQueryCache().runTest(this);
new TestReadOnly().runTest(this);
new TestRecursiveQueries().runTest(this);
new TestRights().runTest(this);
new TestRunscript().runTest(this);
new TestSQLInjection().runTest(this);
new TestSessionsLocks().runTest(this);
new TestSelectCountNonNullColumn().runTest(this);
new TestSequence().runTest(this);
new TestShow().runTest(this);
new TestSpaceReuse().runTest(this);
new TestSpatial().runTest(this);
new TestSpeed().runTest(this);
new TestTableEngines().runTest(this);
new TestTempTables().runTest(this);
new TestTransaction().runTest(this);
new TestTriggersConstraints().runTest(this);
new TestTwoPhaseCommit().runTest(this);
new TestView().runTest(this);
new TestViewAlterTable().runTest(this);
new TestViewDropView().runTest(this);
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());
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 TestLargeBlob());
addTest(new TestLinkedTable());
addTest(new TestListener());
addTest(new TestLob());
addTest(new TestMultiConn());
addTest(new TestMultiDimension());
addTest(new TestMultiThreadedKernel());
addTest(new TestOpenClose());
addTest(new TestOptimizations());
addTest(new TestOutOfMemory());
addTest(new TestReadOnly());
addTest(new TestRecursiveQueries());
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 TestTempTables());
addTest(new TestTransaction());
addTest(new TestTriggersConstraints());
addTest(new TestTwoPhaseCommit());
addTest(new TestView());
addTest(new TestViewAlterTable());
addTest(new TestViewDropView());
// jaqu
new AliasMapTest().runTest(this);
new AnnotationsTest().runTest(this);
new ClobTest().runTest(this);
new ModelsTest().runTest(this);
new SamplesTest().runTest(this);
new UpdateTest().runTest(this);
addTest(new AliasMapTest());
addTest(new AnnotationsTest());
addTest(new ClobTest());
addTest(new ModelsTest());
addTest(new SamplesTest());
addTest(new UpdateTest());
// jdbc
new TestBatchUpdates().runTest(this);
new TestCallableStatement().runTest(this);
new TestCancel().runTest(this);
new TestDatabaseEventListener().runTest(this);
new TestDriver().runTest(this);
new TestJavaObject().runTest(this);
new TestJavaObjectSerializer().runTest(this);
new TestUrlJavaObjectSerializer().runTest(this);
new TestLimitUpdates().runTest(this);
new TestLobApi().runTest(this);
new TestManyJdbcObjects().runTest(this);
new TestMetaData().runTest(this);
new TestNativeSQL().runTest(this);
new TestPreparedStatement().runTest(this);
new TestResultSet().runTest(this);
new TestStatement().runTest(this);
new TestTransactionIsolation().runTest(this);
new TestUpdatableResultSet().runTest(this);
new TestZloty().runTest(this);
addTest(new TestBatchUpdates());
addTest(new TestCallableStatement());
addTest(new TestCancel());
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 TestTransactionIsolation());
addTest(new TestUpdatableResultSet());
addTest(new TestZloty());
// jdbcx
new TestConnectionPool().runTest(this);
new TestDataSource().runTest(this);
new TestXA().runTest(this);
new TestXASimple().runTest(this);
addTest(new TestConnectionPool());
addTest(new TestDataSource());
addTest(new TestXA());
addTest(new TestXASimple());
// server
new TestAutoServer().runTest(this);
new TestNestedLoop().runTest(this);
new TestWeb().runTest(this);
addTest(new TestAutoServer());
addTest(new TestNestedLoop());
// mvcc & row level locking
new TestMvcc1().runTest(this);
new TestMvcc2().runTest(this);
new TestMvcc3().runTest(this);
new TestMvccMultiThreaded().runTest(this);
new TestRowLocks().runTest(this);
addTest(new TestMvcc1());
addTest(new TestMvcc2());
addTest(new TestMvcc3());
addTest(new TestMvccMultiThreaded());
addTest(new TestRowLocks());
// synth
new TestBtreeIndex().runTest(this);
new TestConcurrentUpdate().runTest(this);
new TestDiskFull().runTest(this);
new TestCrashAPI().runTest(this);
new TestFuzzOptimizations().runTest(this);
new TestLimit().runTest(this);
new TestRandomSQL().runTest(this);
new TestRandomCompare().runTest(this);
new TestKillRestart().runTest(this);
new TestKillRestartMulti().runTest(this);
new TestMultiThreaded().runTest(this);
new TestOuterJoins().runTest(this);
new TestNestedJoins().runTest(this);
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());
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 TestRandomSQL());
addTest(new TestQueryCache());
addTest(new TestUrlJavaObjectSerializer());
addTest(new TestWeb());
runAddedTests(1);
afterTest();
}
private void testUnit() {
// mv store
new TestCacheConcurrentLIRS().runTest(this);
new TestCacheLIRS().runTest(this);
new TestCacheLongKeyLIRS().runTest(this);
new TestConcurrent().runTest(this);
new TestConcurrentLinkedList().runTest(this);
new TestDataUtils().runTest(this);
new TestFreeSpace().runTest(this);
new TestKillProcessWhileWriting().runTest(this);
new TestMVRTree().runTest(this);
new TestMVStore().runTest(this);
new TestMVStoreBenchmark().runTest(this);
new TestMVStoreTool().runTest(this);
new TestMVTableEngine().runTest(this);
new TestObjectDataType().runTest(this);
new TestRandomMapOps().runTest(this);
new TestSpinLock().runTest(this);
new TestStreamStore().runTest(this);
new TestTransactionStore().runTest(this);
addTest(new TestCacheConcurrentLIRS());
addTest(new TestCacheLIRS());
addTest(new TestCacheLongKeyLIRS());
addTest(new TestConcurrentLinkedList());
addTest(new TestDataUtils());
addTest(new TestFreeSpace());
addTest(new TestKillProcessWhileWriting());
addTest(new TestMVRTree());
addTest(new TestMVStore());
addTest(new TestMVStoreBenchmark());
addTest(new TestMVStoreTool());
addTest(new TestMVTableEngine());
addTest(new TestObjectDataType());
addTest(new TestRandomMapOps());
addTest(new TestSpinLock());
addTest(new TestStreamStore());
addTest(new TestTransactionStore());
// unit
new TestAutoReconnect().runTest(this);
new TestBnf().runTest(this);
new TestCache().runTest(this);
new TestClearReferences().runTest(this);
new TestCollation().runTest(this);
new TestCompress().runTest(this);
new TestConnectionInfo().runTest(this);
new TestDataPage().runTest(this);
new TestDate().runTest(this);
new TestDateIso8601().runTest(this);
new TestExit().runTest(this);
new TestFile().runTest(this);
new TestFileLock().runTest(this);
new TestFileLockProcess().runTest(this);
new TestFileLockSerialized().runTest(this);
new TestFtp().runTest(this);
new TestFileSystem().runTest(this);
new TestIntArray().runTest(this);
new TestIntIntHashMap().runTest(this);
new TestIntPerfectHash().runTest(this);
new TestJmx().runTest(this);
new TestMathUtils().runTest(this);
new TestModifyOnWrite().runTest(this);
new TestOldVersion().runTest(this);
new TestNetUtils().runTest(this);
new TestObjectDeserialization().runTest(this);
new TestMultiThreadedKernel().runTest(this);
new TestOverflow().runTest(this);
new TestPageStore().runTest(this);
new TestPageStoreCoverage().runTest(this);
new TestPattern().runTest(this);
new TestPerfectHash().runTest(this);
new TestPgServer().runTest(this);
new TestReader().runTest(this);
new TestRecovery().runTest(this);
new TestSampleApps().runTest(this);
new TestScriptReader().runTest(this);
runTest("org.h2.test.unit.TestServlet");
new TestSecurity().runTest(this);
new TestShell().runTest(this);
new TestSort().runTest(this);
new TestStreams().runTest(this);
new TestStringCache().runTest(this);
new TestStringUtils().runTest(this);
new TestTools().runTest(this);
new TestTraceSystem().runTest(this);
new TestUpgrade().runTest(this);
new TestUtils().runTest(this);
new TestValue().runTest(this);
new TestValueHashMap().runTest(this);
new TestValueMemory().runTest(this);
new TestWeb().runTest(this);
}
private void runTest(String className) {
addTest(new TestAutoReconnect());
addTest(new TestBitField());
addTest(new TestBnf());
addTest(new TestCache());
addTest(new TestClearReferences());
addTest(new TestCollation());
addTest(new TestCompress());
addTest(new TestConnectionInfo());
addTest(new TestDataPage());
addTest(new TestDateIso8601());
addTest(new TestExit());
addTest(new TestFile());
addTest(new TestFileLock());
addTest(new TestFtp());
addTest(new TestIntArray());
addTest(new TestIntIntHashMap());
addTest(new TestIntPerfectHash());
addTest(new TestJmx());
addTest(new TestMathUtils());
addTest(new TestModifyOnWrite());
addTest(new TestOldVersion());
addTest(new TestObjectDeserialization());
addTest(new TestMultiThreadedKernel());
addTest(new TestOverflow());
addTest(new TestPageStore());
addTest(new TestPageStoreCoverage());
addTest(new TestPerfectHash());
addTest(new TestPgServer());
addTest(new TestReader());
addTest(new TestRecovery());
addTest(new TestScriptReader());
addTest(createTest("org.h2.test.unit.TestServlet"));
addTest(new TestSecurity());
addTest(new TestShell());
addTest(new TestSort());
addTest(new TestStreams());
addTest(new TestStringUtils());
addTest(new TestTraceSystem());
addTest(new TestUpgrade());
addTest(new TestUtils());
addTest(new TestValue());
addTest(new TestValueHashMap());
addTest(new TestWeb());
runAddedTests();
// serial
addTest(new TestDate());
addTest(new TestCluster());
addTest(new TestConcurrent());
addTest(new TestFileLockSerialized());
addTest(new TestFileLockProcess());
addTest(new TestFileSystem());
addTest(new TestNetUtils());
addTest(new TestPattern());
addTest(new TestTools());
addTest(new TestSampleApps());
addTest(new TestStringCache());
addTest(new TestValueMemory());
runAddedTests(1);
}
private void addTest(TestBase test) {
tests.add(test);
}
private void runAddedTests() {
int threadCount = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
threadCount = 1;
runAddedTests(threadCount);
}
private void runAddedTests(int threadCount) {
Task[] tasks = new Task[threadCount];
for (int i=0; i<threadCount;i++) {
Task t = new Task() {
@Override
public void call() throws Exception {
while (true) {
TestBase test;
synchronized (tests) {
if (tests.isEmpty()) {
break;
}
test = tests.remove(0);
}
test.runTest(TestAll.this);
}
}
};
t.execute();
tasks[i] = t;
}
for(Task t : tasks) {
t.get();
}
}
private static TestBase createTest(String className) {
try {
Class<?> clazz = Class.forName(className);
TestBase test = (TestBase) clazz.newInstance();
test.runTest(this);
return (TestBase) clazz.newInstance();
} catch (Exception e) {
// ignore
TestBase.printlnWithTime(0, className + " class not found");
......@@ -839,6 +898,14 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
// ignore
TestBase.printlnWithTime(0, className + " class not found");
}
return new TestBase() {
@Override
public void test() throws Exception {
// ignore
}
};
}
/**
......@@ -868,10 +935,10 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
* Stop the server if it was started.
*/
public void afterTest() {
FileUtils.deleteRecursive("trace.db", true);
if (networked && server != null) {
server.stop();
}
FileUtils.deleteRecursive("trace.db", true);
FileUtils.deleteRecursive(TestBase.BASE_TEST_DIR, true);
}
......
......@@ -18,6 +18,8 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Proxy;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
......@@ -32,8 +34,7 @@ import java.util.LinkedList;
import java.util.SimpleTimeZone;
import org.h2.jdbc.JdbcConnection;
import org.h2.message.DbException;
import org.h2.message.TraceSystem;
import org.h2.store.FileLock;
import org.h2.store.fs.FilePath;
import org.h2.store.fs.FileUtils;
import org.h2.test.utils.ProxyCodeGenerator;
import org.h2.test.utils.ResultVerifier;
......@@ -52,7 +53,7 @@ public abstract class TestBase {
/**
* The temporary directory.
*/
protected static final String TEMP_DIR = "./data/temp";
private static final String TEMP_DIR = "./data/temp";
/**
* An id used to create unique file names.
......@@ -115,6 +116,7 @@ public abstract class TestBase {
*/
public TestBase init(TestAll conf) throws Exception {
baseDir = getTestDir("");
FileUtils.createDirectories(baseDir);
System.setProperty("java.io.tmpdir", TEMP_DIR);
this.config = conf;
return this;
......@@ -154,15 +156,6 @@ public abstract class TestBase {
if (e instanceof OutOfMemoryError) {
throw (OutOfMemoryError) e;
}
} finally {
try {
FileUtils.deleteRecursive("memFS:", false);
FileUtils.deleteRecursive("nioMemFS:", false);
FileUtils.deleteRecursive("memLZF:", false);
FileUtils.deleteRecursive("nioMemLZF:", false);
} catch (RuntimeException e) {
e.printStackTrace();
}
}
}
......@@ -473,19 +466,32 @@ public abstract class TestBase {
System.err.println("ERROR: " + s + " " + e.toString()
+ " ------------------------------");
e.printStackTrace();
// synchronize on this class, because file locks are only visible to
// other JVMs
synchronized (TestBase.class) {
try {
TraceSystem ts = new TraceSystem(null);
FileLock lock = new FileLock(ts, "error.lock", 1000);
lock.lock(FileLock.LOCK_FILE);
// lock
FileChannel fc = FilePath.get("error.lock").open("rw");
FileLock lock;
while (true) {
lock = fc.tryLock();
if (lock != null) {
break;
}
Thread.sleep(10);
}
// append
FileWriter fw = new FileWriter("error.txt", true);
PrintWriter pw = new PrintWriter(fw);
e.printStackTrace(pw);
pw.close();
fw.close();
lock.unlock();
// unlock
lock.release();
} catch (Throwable t) {
t.printStackTrace();
}
}
System.err.flush();
}
......@@ -509,7 +515,7 @@ public abstract class TestBase {
* @param millis the time in milliseconds
* @param s the message
*/
static void printlnWithTime(long millis, String s) {
static synchronized void printlnWithTime(long millis, String s) {
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
s = dateFormat.format(new java.util.Date()) + " " +
formatTime(millis) + " " + s;
......@@ -1578,4 +1584,8 @@ public abstract class TestBase {
throw (E) e;
}
protected String getTestName() {
return getClass().getSimpleName();
}
}
......@@ -33,8 +33,8 @@ public class TestAlter extends TestBase {
@Override
public void test() throws Exception {
deleteDb("alter");
conn = getConnection("alter");
deleteDb(getTestName());
conn = getConnection(getTestName());
stat = conn.createStatement();
testAlterTableAlterColumnAsSelfColumn();
testAlterTableDropColumnWithReferences();
......@@ -49,7 +49,7 @@ public class TestAlter extends TestBase {
testAlterTableAddColumnAfter();
testAlterTableModifyColumn();
conn.close();
deleteDb("alter");
deleteDb(getTestName());
}
private void testAlterTableAlterColumnAsSelfColumn() throws SQLException {
......@@ -121,7 +121,7 @@ public class TestAlter extends TestBase {
stat.execute("alter table test alter id rename to id2");
// disconnect and reconnect
conn.close();
conn = getConnection("alter");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("insert into test values(1)");
assertThrows(ErrorCode.CHECK_CONSTRAINT_VIOLATED_1, stat).
......
......@@ -32,8 +32,8 @@ public class TestAlterSchemaRename extends TestBase {
@Override
public void test() throws Exception {
deleteDb("alter");
conn = getConnection("alter");
deleteDb(getTestName());
conn = getConnection(getTestName());
stat = conn.createStatement();
testTryToRenameSystemSchemas();
testSimpleRename();
......@@ -41,7 +41,7 @@ public class TestAlterSchemaRename extends TestBase {
testCrossSchemaViews();
testAlias();
conn.close();
deleteDb("alter");
deleteDb(getTestName());
}
private void testTryToRenameSystemSchemas() throws SQLException {
......@@ -93,7 +93,7 @@ public class TestAlterSchemaRename extends TestBase {
assertEquals(6, rs.getInt(1));
if (!config.memory) {
conn.close();
conn = getConnection("alter");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.executeQuery("select * from s2_new.v1");
}
......@@ -116,7 +116,7 @@ public class TestAlterSchemaRename extends TestBase {
assertEquals("4321", rs.getString(1));
if (!config.memory) {
conn.close();
conn = getConnection("alter");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.executeQuery("CALL S2.REVERSE('1234')");
}
......
......@@ -21,7 +21,7 @@ import org.h2.tools.Server;
import org.h2.util.JdbcUtils;
/**
* Test for the cluster feature.
* Test the cluster feature.
*/
public class TestCluster extends TestBase {
......
......@@ -6,12 +6,17 @@
package org.h2.test.db;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.SimpleTimeZone;
import java.util.TimeZone;
import org.h2.engine.SysProperties;
......@@ -37,12 +42,116 @@ public class TestDateStorage extends TestBase {
@Override
public void test() throws SQLException {
deleteDb("date");
deleteDb(getTestName());
testDateTimeTimestampWithCalendar();
testMoveDatabaseToAnotherTimezone();
testAllTimeZones();
testCurrentTimeZone();
}
private void testDateTimeTimestampWithCalendar() throws SQLException {
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("create table ts(x timestamp primary key)");
stat.execute("create table t(x time primary key)");
stat.execute("create table d(x date)");
Calendar utcCalendar = new GregorianCalendar(new SimpleTimeZone(0, "Z"));
TimeZone old = TimeZone.getDefault();
DateTimeUtils.resetCalendar();
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
try {
Timestamp ts1 = Timestamp.valueOf("2010-03-13 18:15:00");
Time t1 = new Time(ts1.getTime());
Date d1 = new Date(ts1.getTime());
// when converted to UTC, this is 03:15, which doesn't actually
// exist because of summer time change at that day
Timestamp ts2 = Timestamp.valueOf("2010-03-13 19:15:00");
Time t2 = new Time(ts2.getTime());
Date d2 = new Date(ts2.getTime());
PreparedStatement prep;
ResultSet rs;
prep = conn.prepareStatement("insert into ts values(?)");
prep.setTimestamp(1, ts1, utcCalendar);
prep.execute();
prep.setTimestamp(1, ts2, utcCalendar);
prep.execute();
prep = conn.prepareStatement("insert into t values(?)");
prep.setTime(1, t1, utcCalendar);
prep.execute();
prep.setTime(1, t2, utcCalendar);
prep.execute();
prep = conn.prepareStatement("insert into d values(?)");
prep.setDate(1, d1, utcCalendar);
prep.execute();
prep.setDate(1, d2, utcCalendar);
prep.execute();
rs = stat.executeQuery("select * from ts order by x");
rs.next();
assertEquals("2010-03-14 02:15:00.0",
rs.getString(1));
assertEquals("2010-03-13 18:15:00.0",
rs.getTimestamp(1, utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp(1).toString());
assertEquals("2010-03-14 02:15:00.0",
rs.getString("x"));
assertEquals("2010-03-13 18:15:00.0",
rs.getTimestamp("x", utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp("x").toString());
rs.next();
assertEquals("2010-03-14 03:15:00.0",
rs.getString(1));
assertEquals("2010-03-13 19:15:00.0",
rs.getTimestamp(1, utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp(1).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getString("x"));
assertEquals("2010-03-13 19:15:00.0",
rs.getTimestamp("x", utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp("x").toString());
rs = stat.executeQuery("select * from t order by x");
rs.next();
assertEquals("02:15:00", rs.getString(1));
assertEquals("18:15:00", rs.getTime(1, utcCalendar).toString());
assertEquals("02:15:00", rs.getTime(1).toString());
assertEquals("02:15:00", rs.getString("x"));
assertEquals("18:15:00", rs.getTime("x", utcCalendar).toString());
assertEquals("02:15:00", rs.getTime("x").toString());
rs.next();
assertEquals("03:15:00", rs.getString(1));
assertEquals("19:15:00", rs.getTime(1, utcCalendar).toString());
assertEquals("03:15:00", rs.getTime(1).toString());
assertEquals("03:15:00", rs.getString("x"));
assertEquals("19:15:00", rs.getTime("x", utcCalendar).toString());
assertEquals("03:15:00", rs.getTime("x").toString());
rs = stat.executeQuery("select * from d order by x");
rs.next();
assertEquals("2010-03-14", rs.getString(1));
assertEquals("2010-03-13", rs.getDate(1, utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate(1).toString());
assertEquals("2010-03-14", rs.getString("x"));
assertEquals("2010-03-13", rs.getDate("x", utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate("x").toString());
rs.next();
assertEquals("2010-03-14", rs.getString(1));
assertEquals("2010-03-13", rs.getDate(1, utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate(1).toString());
assertEquals("2010-03-14", rs.getString("x"));
assertEquals("2010-03-13", rs.getDate("x", utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate("x").toString());
} finally {
TimeZone.setDefault(old);
DateTimeUtils.resetCalendar();
}
stat.execute("drop table ts");
stat.execute("drop table t");
stat.execute("drop table d");
conn.close();
}
private void testMoveDatabaseToAnotherTimezone() throws SQLException {
if (config.memory) {
return;
......@@ -50,7 +159,7 @@ public class TestDateStorage extends TestBase {
if (!SysProperties.STORE_LOCAL_TIME) {
return;
}
String db = "date;LOG=0;FILE_LOCK=NO";
String db = getTestName() + ";LOG=0;FILE_LOCK=NO";
Connection conn = getConnection(db);
Statement stat;
stat = conn.createStatement();
......@@ -128,7 +237,7 @@ public class TestDateStorage extends TestBase {
}
private void testAllTimeZones() throws SQLException {
Connection conn = getConnection("date");
Connection conn = getConnection(getTestName());
TimeZone defaultTimeZone = TimeZone.getDefault();
PreparedStatement prep = conn.prepareStatement("CALL CAST(? AS DATE)");
try {
......@@ -146,7 +255,7 @@ public class TestDateStorage extends TestBase {
DateTimeUtils.resetCalendar();
}
conn.close();
deleteDb("date");
deleteDb(getTestName());
}
private void test(PreparedStatement prep, int d) throws SQLException {
......
......@@ -94,11 +94,8 @@ public class TestFunctions extends TestBase implements AggregateFunction {
testToCharFromText();
testTranslate();
testGenerateSeries();
// TODO
// testCachingOfDeterministicFunctionAlias();
deleteDb("functions");
FileUtils.deleteRecursive(TEMP_DIR, true);
}
private void testDataType() throws SQLException {
......
......@@ -22,14 +22,12 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Savepoint;
import java.sql.Statement;
import java.util.List;
import java.util.Random;
import org.h2.api.ErrorCode;
import org.h2.engine.SysProperties;
import org.h2.jdbc.JdbcConnection;
import org.h2.message.DbException;
import org.h2.store.fs.FileUtils;
import org.h2.test.TestBase;
import org.h2.util.IOUtils;
import org.h2.util.JdbcUtils;
......@@ -81,8 +79,6 @@ public class TestLob extends TestBase {
testConvert();
testCreateAsSelect();
testDelete();
testTempFilesDeleted(true);
testTempFilesDeleted(false);
testLobServerMemory();
testUpdatingLobRow();
if (config.memory) {
......@@ -110,7 +106,6 @@ public class TestLob extends TestBase {
testLob(true);
testJavaObject();
deleteDb("lob");
FileUtils.deleteRecursive(TEMP_DIR, true);
}
private void testRemovedAfterTimeout() throws Exception {
......@@ -669,41 +664,6 @@ public class TestLob extends TestBase {
conn.close();
}
private void testTempFilesDeleted(boolean stream) throws Exception {
FileUtils.deleteRecursive(TEMP_DIR, true);
FileUtils.createDirectories(TEMP_DIR);
List<String> list = FileUtils.newDirectoryStream(TEMP_DIR);
assertEquals("Unexpected temp file: " + list, 0, list.size());
deleteDb("lob");
Connection conn = getConnection("lob");
Statement stat;
stat = conn.createStatement();
stat.execute("create table test(id int primary key, name text)");
PreparedStatement prep = conn.prepareStatement(
"insert into test values(2, ?)");
if (stream) {
String large = new String(new char[1024 * 1024 * 2]).replace((char) 0, 'x');
prep.setCharacterStream(1, new StringReader(large), -1);
large = null;
prep.execute();
} else {
stat.execute("insert into test values(1, space(100000))");
}
/*
list = FileUtils.newDirectoryStream(TEMP_DIR);
assertEquals("Unexpected temp file: " + list, 0, list.size());
*/
ResultSet rs;
rs = stat.executeQuery("select * from test");
while (rs.next()) {
rs.getCharacterStream("name").close();
}
prep.close();
conn.close();
list = FileUtils.newDirectoryStream(TEMP_DIR);
assertEquals("Unexpected temp file: " + list, 0, list.size());
}
private void testLobUpdateMany() throws SQLException {
deleteDb("lob");
Connection conn = getConnection("lob");
......
......@@ -64,7 +64,7 @@ public class TestMultiThread extends TestBase implements Runnable {
}
private void testConcurrentSchemaChange() throws Exception {
String db = "testConcurrentSchemaChange";
String db = getTestName();
deleteDb(db);
final String url = getURL(db + ";MULTI_THREADED=1", true);
Connection conn = getConnection(url);
......@@ -98,7 +98,7 @@ public class TestMultiThread extends TestBase implements Runnable {
}
private void testConcurrentLobAdd() throws Exception {
String db = "concurrentLobAdd";
String db = getTestName();
deleteDb(db);
final String url = getURL(db + ";MULTI_THREADED=1", true);
Connection conn = getConnection(url);
......@@ -137,7 +137,7 @@ public class TestMultiThread extends TestBase implements Runnable {
if (config.mvcc) {
return;
}
String db = "concurrentView";
String db = getTestName();
deleteDb(db);
final String url = getURL(db + ";MULTI_THREADED=1", true);
final Random r = new Random();
......@@ -176,8 +176,8 @@ public class TestMultiThread extends TestBase implements Runnable {
}
private void testConcurrentAlter() throws Exception {
deleteDb("concurrentAlter");
final Connection conn = getConnection("concurrentAlter");
deleteDb(getTestName());
final Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
Task t = new Task() {
@Override
......@@ -195,14 +195,13 @@ public class TestMultiThread extends TestBase implements Runnable {
}
t.get();
conn.close();
deleteDb("concurrentAlter");
}
private void testConcurrentAnalyze() throws Exception {
if (config.mvcc) {
return;
}
deleteDb("concurrentAnalyze");
deleteDb(getTestName());
final String url = getURL("concurrentAnalyze;MULTI_THREADED=1", true);
Connection conn = getConnection(url);
Statement stat = conn.createStatement();
......@@ -227,7 +226,6 @@ public class TestMultiThread extends TestBase implements Runnable {
t.get();
stat.execute("drop table test");
conn.close();
deleteDb("concurrentAnalyze");
}
private void testConcurrentInsertUpdateSelect() throws Exception {
......@@ -255,7 +253,7 @@ public class TestMultiThread extends TestBase implements Runnable {
}
private Connection getConnection() throws SQLException {
return getConnection("jdbc:h2:mem:multiThread");
return getConnection("jdbc:h2:mem:" + getTestName());
}
@Override
......
......@@ -31,8 +31,8 @@ public class TestViewAlterTable extends TestBase {
@Override
public void test() throws Exception {
deleteDb("alter");
conn = getConnection("alter");
deleteDb(getTestName());
conn = getConnection(getTestName());
stat = conn.createStatement();
testDropColumnWithoutViews();
......@@ -47,7 +47,7 @@ public class TestViewAlterTable extends TestBase {
testForeignKey();
conn.close();
deleteDb("alter");
deleteDb(getTestName());
}
private void testDropColumnWithoutViews() throws SQLException {
......
......@@ -32,8 +32,8 @@ public class TestViewDropView extends TestBase {
@Override
public void test() throws Exception {
deleteDb("alter");
conn = getConnection("alter");
deleteDb(getTestName());
conn = getConnection(getTestName());
stat = conn.createStatement();
testDropViewDefaultBehaviour();
......@@ -45,7 +45,7 @@ public class TestViewDropView extends TestBase {
testCreateOrReplaceForceViewWithNowInvalidDependentViews();
conn.close();
deleteDb("alter");
deleteDb(getTestName());
}
private void testCreateForceView() throws SQLException {
......
......@@ -5,8 +5,6 @@
*/
package org.h2.test.jdbc;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.sql.BatchUpdateException;
import java.sql.CallableStatement;
import java.sql.Connection;
......@@ -156,16 +154,9 @@ public class TestBatchUpdates extends TestBase {
}
try {
prep.executeBatch();
fail();
} catch (BatchUpdateException e) {
PrintStream temp = System.err;
try {
ByteArrayOutputStream buff = new ByteArrayOutputStream();
PrintStream p = new PrintStream(buff);
System.setErr(p);
e.printStackTrace();
} finally {
System.setErr(temp);
}
// expected
}
conn.close();
}
......
......@@ -45,12 +45,12 @@ public class TestLobApi extends TestBase {
@Override
public void test() throws Exception {
deleteDb("lob");
deleteDb(getTestName());
testUnsupportedOperations();
testLobStaysOpenUntilCommitted();
testInputStreamThrowsException(true);
testInputStreamThrowsException(false);
conn = (JdbcConnection) getConnection("lob");
conn = (JdbcConnection) getConnection(getTestName());
stat = conn.createStatement();
stat.execute("create table test(id int, x blob)");
testBlob(0);
......@@ -68,7 +68,7 @@ public class TestLobApi extends TestBase {
}
private void testUnsupportedOperations() throws Exception {
Connection conn = getConnection("lob");
Connection conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("create table test(id int, c clob, b blob)");
stat.execute("insert into test values(1, 'x', x'00')");
......@@ -118,7 +118,7 @@ public class TestLobApi extends TestBase {
* the result set is closed (see ResultSet.close).
*/
private void testLobStaysOpenUntilCommitted() throws Exception {
Connection conn = getConnection("lob");
Connection conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("create table test(id identity, c clob, b blob)");
PreparedStatement prep = conn.prepareStatement(
......@@ -163,7 +163,7 @@ public class TestLobApi extends TestBase {
private void testInputStreamThrowsException(final boolean ioException)
throws Exception {
Connection conn = getConnection("lob");
Connection conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("create table test(id identity, c clob, b blob)");
PreparedStatement prep = conn.prepareStatement(
......
......@@ -13,7 +13,6 @@ import java.math.BigDecimal;
import java.net.URL;
import java.sql.Array;
import java.sql.Connection;
import java.sql.Date;
import java.sql.ParameterMetaData;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
......@@ -21,19 +20,13 @@ import java.sql.ResultSetMetaData;
import java.sql.RowId;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.SimpleTimeZone;
import java.util.TimeZone;
import java.util.UUID;
import org.h2.api.ErrorCode;
import org.h2.api.Trigger;
import org.h2.test.TestBase;
import org.h2.util.DateTimeUtils;
import org.h2.util.Task;
/**
......@@ -59,7 +52,6 @@ public class TestPreparedStatement extends TestBase {
testUnwrap(conn);
testUnsupportedOperations(conn);
testChangeType(conn);
testDateTimeTimestampWithCalendar(conn);
testCallTablePrepared(conn);
testValues(conn);
testToString(conn);
......@@ -169,108 +161,6 @@ public class TestPreparedStatement extends TestBase {
prep.executeQuery();
}
private void testDateTimeTimestampWithCalendar(Connection conn)
throws SQLException {
Statement stat = conn.createStatement();
stat.execute("create table ts(x timestamp primary key)");
stat.execute("create table t(x time primary key)");
stat.execute("create table d(x date)");
Calendar utcCalendar = new GregorianCalendar(new SimpleTimeZone(0, "Z"));
TimeZone old = TimeZone.getDefault();
DateTimeUtils.resetCalendar();
TimeZone.setDefault(TimeZone.getTimeZone("PST"));
try {
Timestamp ts1 = Timestamp.valueOf("2010-03-13 18:15:00");
Time t1 = new Time(ts1.getTime());
Date d1 = new Date(ts1.getTime());
// when converted to UTC, this is 03:15, which doesn't actually
// exist because of summer time change at that day
Timestamp ts2 = Timestamp.valueOf("2010-03-13 19:15:00");
Time t2 = new Time(ts2.getTime());
Date d2 = new Date(ts2.getTime());
PreparedStatement prep;
ResultSet rs;
prep = conn.prepareStatement("insert into ts values(?)");
prep.setTimestamp(1, ts1, utcCalendar);
prep.execute();
prep.setTimestamp(1, ts2, utcCalendar);
prep.execute();
prep = conn.prepareStatement("insert into t values(?)");
prep.setTime(1, t1, utcCalendar);
prep.execute();
prep.setTime(1, t2, utcCalendar);
prep.execute();
prep = conn.prepareStatement("insert into d values(?)");
prep.setDate(1, d1, utcCalendar);
prep.execute();
prep.setDate(1, d2, utcCalendar);
prep.execute();
rs = stat.executeQuery("select * from ts order by x");
rs.next();
assertEquals("2010-03-14 02:15:00.0",
rs.getString(1));
assertEquals("2010-03-13 18:15:00.0",
rs.getTimestamp(1, utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp(1).toString());
assertEquals("2010-03-14 02:15:00.0",
rs.getString("x"));
assertEquals("2010-03-13 18:15:00.0",
rs.getTimestamp("x", utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp("x").toString());
rs.next();
assertEquals("2010-03-14 03:15:00.0",
rs.getString(1));
assertEquals("2010-03-13 19:15:00.0",
rs.getTimestamp(1, utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp(1).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getString("x"));
assertEquals("2010-03-13 19:15:00.0",
rs.getTimestamp("x", utcCalendar).toString());
assertEquals("2010-03-14 03:15:00.0",
rs.getTimestamp("x").toString());
rs = stat.executeQuery("select * from t order by x");
rs.next();
assertEquals("02:15:00", rs.getString(1));
assertEquals("18:15:00", rs.getTime(1, utcCalendar).toString());
assertEquals("02:15:00", rs.getTime(1).toString());
assertEquals("02:15:00", rs.getString("x"));
assertEquals("18:15:00", rs.getTime("x", utcCalendar).toString());
assertEquals("02:15:00", rs.getTime("x").toString());
rs.next();
assertEquals("03:15:00", rs.getString(1));
assertEquals("19:15:00", rs.getTime(1, utcCalendar).toString());
assertEquals("03:15:00", rs.getTime(1).toString());
assertEquals("03:15:00", rs.getString("x"));
assertEquals("19:15:00", rs.getTime("x", utcCalendar).toString());
assertEquals("03:15:00", rs.getTime("x").toString());
rs = stat.executeQuery("select * from d order by x");
rs.next();
assertEquals("2010-03-14", rs.getString(1));
assertEquals("2010-03-13", rs.getDate(1, utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate(1).toString());
assertEquals("2010-03-14", rs.getString("x"));
assertEquals("2010-03-13", rs.getDate("x", utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate("x").toString());
rs.next();
assertEquals("2010-03-14", rs.getString(1));
assertEquals("2010-03-13", rs.getDate(1, utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate(1).toString());
assertEquals("2010-03-14", rs.getString("x"));
assertEquals("2010-03-13", rs.getDate("x", utcCalendar).toString());
assertEquals("2010-03-14", rs.getDate("x").toString());
} finally {
TimeZone.setDefault(old);
DateTimeUtils.resetCalendar();
}
stat.execute("drop table ts");
stat.execute("drop table t");
stat.execute("drop table d");
}
private static void testCallTablePrepared(Connection conn) throws SQLException {
PreparedStatement prep = conn.prepareStatement("call table(x int = (1))");
prep.executeQuery();
......
......@@ -32,7 +32,6 @@ import java.sql.Timestamp;
import java.sql.Types;
import java.util.Calendar;
import java.util.Collections;
import java.util.Locale;
import java.util.TimeZone;
import org.h2.api.ErrorCode;
......@@ -70,7 +69,6 @@ public class TestResultSet extends TestBase {
testInsertRowWithUpdatableResultSetDefault();
testBeforeFirstAfterLast();
testParseSpecialValues();
testSpecialLocale();
testSubstringPrecision();
testSubstringDataType();
testColumnLabelColumnName();
......@@ -347,26 +345,6 @@ public class TestResultSet extends TestBase {
assertTrue(expected.equals(o));
}
private void testSpecialLocale() throws SQLException {
Locale old = Locale.getDefault();
try {
// when using Turkish as the default locale, "i".toUpperCase() is
// not "I"
Locale.setDefault(new Locale("tr"));
stat.execute("create table test(I1 int, i2 int, b int, c int, d int) " +
"as select 1, 1, 1, 1, 1");
ResultSet rs = stat.executeQuery("select * from test");
rs.next();
rs.getString("I1");
rs.getString("i1");
rs.getString("I2");
rs.getString("i2");
stat.execute("drop table test");
} finally {
Locale.setDefault(old);
}
}
private void testSubstringDataType() throws SQLException {
ResultSet rs = stat.executeQuery("select substr(x, 1, 1) from dual");
rs.next();
......
......@@ -38,8 +38,8 @@ public class TestMvccMultiThreaded extends TestBase {
}
private void testMergeWithUniqueKeyViolation() throws Exception {
deleteDb("mvccMultiThreaded");
Connection conn = getConnection("mvccMultiThreaded");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("create table test(x int primary key, y int unique)");
stat.execute("insert into test values(1, 1)");
......@@ -51,12 +51,12 @@ public class TestMvccMultiThreaded extends TestBase {
}
private void testConcurrentMerge() throws Exception {
deleteDb("mvccMultiThreaded");
deleteDb(getTestName());
int len = 3;
final Connection[] connList = new Connection[len];
for (int i = 0; i < len; i++) {
Connection conn = getConnection(
"mvccMultiThreaded;MVCC=TRUE;LOCK_TIMEOUT=500");
getTestName() + ";MVCC=TRUE;LOCK_TIMEOUT=500");
connList[i] = conn;
}
Connection conn = connList[0];
......@@ -88,16 +88,16 @@ public class TestMvccMultiThreaded extends TestBase {
for (int i = 0; i < len; i++) {
connList[i].close();
}
deleteDb("mvccMultiThreaded");
deleteDb(getTestName());
}
private void testConcurrentUpdate(String suffix) throws Exception {
deleteDb("mvccMultiThreaded");
deleteDb(getTestName());
int len = 2;
final Connection[] connList = new Connection[len];
for (int i = 0; i < len; i++) {
connList[i] = getConnection(
"mvccMultiThreaded;MVCC=TRUE" + suffix);
getTestName() + ";MVCC=TRUE" + suffix);
}
Connection conn = connList[0];
conn.createStatement().execute(
......@@ -133,7 +133,6 @@ public class TestMvccMultiThreaded extends TestBase {
for (int i = 0; i < len; i++) {
connList[i].close();
}
deleteDb("mvccMultiThreaded");
}
}
......@@ -39,12 +39,12 @@ public class TestRowLocks extends TestBase {
public void test() throws Exception {
testSetMode();
testCases();
deleteDb("rowLocks");
deleteDb(getTestName());
}
private void testSetMode() throws SQLException {
deleteDb("rowLocks");
c1 = getConnection("rowLocks");
deleteDb(getTestName());
c1 = getConnection(getTestName());
Statement stat = c1.createStatement();
stat.execute("SET LOCK_MODE 2");
ResultSet rs = stat.executeQuery("call lock_mode()");
......@@ -54,8 +54,8 @@ public class TestRowLocks extends TestBase {
}
private void testCases() throws Exception {
deleteDb("rowLocks");
c1 = getConnection("rowLocks;MVCC=TRUE");
deleteDb(getTestName());
c1 = getConnection(getTestName() + ";MVCC=TRUE");
s1 = c1.createStatement();
s1.execute("SET LOCK_TIMEOUT 10000");
s1.execute("CREATE TABLE TEST AS " +
......@@ -64,7 +64,7 @@ public class TestRowLocks extends TestBase {
c1.setAutoCommit(false);
s1.execute("UPDATE TEST SET NAME='Hallo' WHERE ID=1");
c2 = getConnection("rowLocks");
c2 = getConnection(getTestName());
c2.setAutoCommit(false);
s2 = c2.createStatement();
......
......@@ -43,10 +43,10 @@ public class TestAutoServer extends TestBase {
private void testUnsupportedCombinations() throws SQLException {
String[] urls = {
"jdbc:h2:test;file_lock=no;auto_server=true",
"jdbc:h2:test;file_lock=serialized;auto_server=true",
"jdbc:h2:test;access_mode_data=r;auto_server=true",
"jdbc:h2:mem:test;auto_server=true"
"jdbc:h2:" + getTestName() + ";file_lock=no;auto_server=true",
"jdbc:h2:" + getTestName() + ";file_lock=serialized;auto_server=true",
"jdbc:h2:" + getTestName() + ";access_mode_data=r;auto_server=true",
"jdbc:h2:mem:" + getTestName() + ";auto_server=true"
};
for (String url : urls) {
assertThrows(SQLException.class, this).getConnection(url);
......@@ -63,8 +63,8 @@ public class TestAutoServer extends TestBase {
if (config.memory || config.networked) {
return;
}
deleteDb("autoServer");
String url = getURL("autoServer;AUTO_SERVER=TRUE", true);
deleteDb(getTestName());
String url = getURL(getTestName() + ";AUTO_SERVER=TRUE", true);
if (port) {
url += ";AUTO_SERVER_PORT=11111";
}
......@@ -76,7 +76,7 @@ public class TestAutoServer extends TestBase {
for (; i > 0; i--) {
Thread.sleep(100);
SortedProperties prop = SortedProperties.loadProperties(
getBaseDir() + "/autoServer.lock.db");
getBaseDir() + "/" + getTestName() + ".lock.db");
String key = prop.getProperty("id");
String server = prop.getProperty("server");
if (server != null) {
......@@ -117,10 +117,10 @@ public class TestAutoServer extends TestBase {
if (config.memory || config.networked) {
return;
}
deleteDb("autoServerLinkedTable1");
deleteDb("autoServerLinkedTable2");
String url = getURL("autoServerLinkedTable1;AUTO_SERVER=TRUE", true);
String urlLinked = getURL("autoServerLinkedTable2", true);
deleteDb(getTestName() + "1");
deleteDb(getTestName() + "2");
String url = getURL(getTestName() + "1;AUTO_SERVER=TRUE", true);
String urlLinked = getURL(getTestName() + "2", true);
String user = getUser(), password = getPassword();
Connection connLinked = getConnection(urlLinked, user, password);
......@@ -163,8 +163,8 @@ public class TestAutoServer extends TestBase {
// ignore
}
deleteDb("autoServerLinkedTable1");
deleteDb("autoServerLinkedTable2");
deleteDb(getTestName() + "1");
deleteDb(getTestName() + "2");
}
/**
......
......@@ -6,11 +6,7 @@
package org.h2.test.server;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
......@@ -47,7 +43,6 @@ import org.h2.store.fs.FileUtils;
import org.h2.test.TestBase;
import org.h2.test.utils.AssertThrows;
import org.h2.tools.Server;
import org.h2.util.IOUtils;
import org.h2.util.StringUtils;
import org.h2.util.Task;
......@@ -72,7 +67,6 @@ public class TestWeb extends TestBase {
testServlet();
testWrongParameters();
testTools();
testTransfer();
testAlreadyRunning();
testStartWebServerWithConnection();
testServer();
......@@ -164,8 +158,8 @@ public class TestWeb extends TestBase {
if (config.memory || config.cipher != null) {
return;
}
deleteDb("web");
Connection conn = getConnection("web");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
conn.createStatement().execute(
"create table test(id int) as select 1");
conn.close();
......@@ -183,14 +177,14 @@ public class TestWeb extends TestBase {
result = client.get(url, "tools.jsp");
FileUtils.delete(getBaseDir() + "/backup.zip");
result = client.get(url, "tools.do?tool=Backup&args=-dir," +
getBaseDir() + ",-db,web,-file," +
getBaseDir() + ",-db," + getTestName() + ",-file," +
getBaseDir() + "/backup.zip");
deleteDb("web");
deleteDb(getTestName());
assertTrue(FileUtils.exists(getBaseDir() + "/backup.zip"));
result = client.get(url,
"tools.do?tool=DeleteDbFiles&args=-dir," +
getBaseDir() + ",-db,web");
String fn = getBaseDir() + "/web";
getBaseDir() + ",-db," + getTestName());
String fn = getBaseDir() + "/" + getTestName();
if (config.mvStore) {
fn += Constants.SUFFIX_MV_FILE;
} else {
......@@ -198,53 +192,23 @@ public class TestWeb extends TestBase {
}
assertFalse(FileUtils.exists(fn));
result = client.get(url, "tools.do?tool=Restore&args=-dir," +
getBaseDir() + ",-db,web,-file," + getBaseDir() +
getBaseDir() + ",-db," + getTestName() +",-file," + getBaseDir() +
"/backup.zip");
assertTrue(FileUtils.exists(fn));
FileUtils.delete(getBaseDir() + "/web.h2.sql");
FileUtils.delete(getBaseDir() + "/backup.zip");
result = client.get(url, "tools.do?tool=Recover&args=-dir," +
getBaseDir() + ",-db,web");
assertTrue(FileUtils.exists(getBaseDir() + "/web.h2.sql"));
getBaseDir() + ",-db," + getTestName());
assertTrue(FileUtils.exists(getBaseDir() + "/" + getTestName() + ".h2.sql"));
FileUtils.delete(getBaseDir() + "/web.h2.sql");
result = client.get(url, "tools.do?tool=RunScript&args=-script," +
getBaseDir() + "/web.h2.sql,-url," + getURL("web", true) +
getBaseDir() + "/" + getTestName() + ".h2.sql,-url," + getURL(getTestName(), true) +
",-user," + getUser() + ",-password," + getPassword());
FileUtils.delete(getBaseDir() + "/web.h2.sql");
FileUtils.delete(getBaseDir() + "/" + getTestName() + ".h2.sql");
assertTrue(FileUtils.exists(fn));
deleteDb("web");
} finally {
server.shutdown();
}
}
private void testTransfer() throws Exception {
Server server = new Server();
server.setOut(new PrintStream(new ByteArrayOutputStream()));
server.runTool("-web", "-webPort", "8182", "-properties", "null");
File transfer = new File("transfer");
transfer.mkdirs();
try {
FileOutputStream f = new FileOutputStream("transfer/test.txt");
f.write("Hello World".getBytes());
f.close();
WebClient client = new WebClient();
String url = "http://localhost:8182";
String result = client.get(url);
client.readSessionId(result);
String test = client.get(url, "transfer/test.txt");
assertEquals("Hello World", test);
new File("transfer/testUpload.txt").delete();
client.upload(url + "/transfer/testUpload.txt",
"testUpload.txt", new ByteArrayInputStream(
"Hallo Welt".getBytes()));
byte[] d = IOUtils.readBytesAndClose(
new FileInputStream("transfer/testUpload.txt"), -1);
assertEquals("Hallo Welt", new String(d));
new File("transfer/testUpload.txt").delete();
deleteDb(getTestName());
} finally {
server.shutdown();
FileUtils.deleteRecursive("transfer", true);
}
}
......@@ -289,7 +253,7 @@ public class TestWeb extends TestBase {
}
private void testIfExists() throws Exception {
Connection conn = getConnection("jdbc:h2:mem:webExists",
Connection conn = getConnection("jdbc:h2:mem:" + getTestName(),
getUser(), getPassword());
Server server = new Server();
server.setOut(new PrintStream(new ByteArrayOutputStream()));
......@@ -304,12 +268,12 @@ public class TestWeb extends TestBase {
client.readSessionId(result);
result = client.get(url, "login.jsp");
result = client.get(url, "test.do?driver=org.h2.Driver" +
"&url=jdbc:h2:mem:webExists" +
"&url=jdbc:h2:mem:" + getTestName() +
"&user=" + getUser() + "&password=" +
getPassword() + "&name=_test_");
assertTrue(result.indexOf("Exception") < 0);
result = client.get(url, "test.do?driver=org.h2.Driver" +
"&url=jdbc:h2:mem:web" +
"&url=jdbc:h2:mem:" + getTestName() + "Wrong" +
"&user=" + getUser() + "&password=" +
getPassword() + "&name=_test_");
assertContains(result, "Exception");
......@@ -340,13 +304,16 @@ public class TestWeb extends TestBase {
result = client.get(url, "login.jsp");
assertTrue(result.indexOf("Einstellung") < 0);
result = client.get(url, "test.do?driver=abc" +
"&url=jdbc:abc:mem:web&user=sa&password=sa&name=_test_");
"&url=jdbc:abc:mem: " + getTestName() +
"&user=sa&password=sa&name=_test_");
assertContains(result, "Exception");
result = client.get(url, "test.do?driver=org.h2.Driver" +
"&url=jdbc:h2:mem:web&user=sa&password=sa&name=_test_");
"&url=jdbc:h2:mem:" + getTestName() +
"&user=sa&password=sa&name=_test_");
assertTrue(result.indexOf("Exception") < 0);
result = client.get(url, "login.do?driver=org.h2.Driver" +
"&url=jdbc:h2:mem:web&user=sa&password=sa&name=_test_");
"&url=jdbc:h2:mem:" + getTestName() +
"&user=sa&password=sa&name=_test_");
result = client.get(url, "header.jsp");
result = client.get(url, "query.do?sql=" +
"create table test(id int primary key, name varchar);" +
......@@ -561,7 +528,8 @@ public class TestWeb extends TestBase {
result = client.get(url, "logout.do");
result = client.get(url, "login.do?driver=org.h2.Driver&" +
"url=jdbc:h2:mem:web&user=sa&password=sa&name=_test_");
"url=jdbc:h2:mem:" + getTestName() +
"&user=sa&password=sa&name=_test_");
result = client.get(url, "logout.do");
result = client.get(url, "settingRemove.do?name=_test_");
......@@ -580,7 +548,7 @@ public class TestWeb extends TestBase {
Server.openBrowser("testUrl");
assertEquals("testUrl", lastUrl);
String oldUrl = lastUrl;
final Connection conn = getConnection("testWeb");
final Connection conn = getConnection(getTestName());
Task t = new Task() {
@Override
public void call() throws Exception {
......@@ -611,7 +579,6 @@ public class TestWeb extends TestBase {
} else {
System.clearProperty(SysProperties.H2_BROWSER);
}
deleteDb("testWeb");
}
}
......
......@@ -46,10 +46,7 @@ public class TestConcurrent extends TestMVStore {
@Override
public void test() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
FileUtils.createDirectories(getBaseDir());
FileUtils.deleteRecursive("memFS:", false);
testInterruptReopen();
testConcurrentSaveCompact();
testConcurrentDataType();
......@@ -68,7 +65,7 @@ public class TestConcurrent extends TestMVStore {
}
private void testInterruptReopen() throws Exception {
String fileName = "retry:nio:" + getBaseDir() + "/testInterruptReopen.h3";
String fileName = "retry:nio:" + getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
final MVStore s = new MVStore.Builder().
fileName(fileName).
......@@ -99,7 +96,7 @@ public class TestConcurrent extends TestMVStore {
}
private void testConcurrentSaveCompact() throws Exception {
String fileName = "memFS:testConcurrentSaveCompact";
String fileName = "memFS:" + getTestName();
FileUtils.delete(fileName);
final MVStore s = new MVStore.Builder().
fileName(fileName).
......@@ -188,7 +185,7 @@ public class TestConcurrent extends TestMVStore {
}
private void testConcurrentAutoCommitAndChange() throws InterruptedException {
String fileName = "memFS:testConcurrentChangeAndBackgroundCompact";
String fileName = "memFS:" + getTestName();
FileUtils.delete(fileName);
final MVStore s = new MVStore.Builder().
fileName(fileName).pageSplitSize(1000).
......@@ -268,7 +265,7 @@ public class TestConcurrent extends TestMVStore {
}
private void testConcurrentChangeAndCompact() throws InterruptedException {
String fileName = "memFS:testConcurrentChangeAndBackgroundCompact";
String fileName = "memFS:" + getTestName();
FileUtils.delete(fileName);
final MVStore s = new MVStore.Builder().fileName(
fileName).
......@@ -346,11 +343,10 @@ public class TestConcurrent extends TestMVStore {
s.commit();
s.close();
}
FileUtils.deleteRecursive("memFS:", false);
}
private void testConcurrentFree() throws InterruptedException {
String fileName = "memFS:testConcurrentFree.h3";
String fileName = "memFS:" + getTestName();
for (int test = 0; test < 10; test++) {
FileUtils.delete(fileName);
final MVStore s1 = new MVStore.Builder().
......@@ -425,11 +421,11 @@ public class TestConcurrent extends TestMVStore {
assertTrue("" + chunkCount, chunkCount < 3);
s.close();
}
FileUtils.deleteRecursive("memFS:", false);
}
private void testConcurrentStoreAndRemoveMap() throws InterruptedException {
String fileName = "memFS:testConcurrentStoreAndRemoveMap.h3";
String fileName = "memFS:" + getTestName();
FileUtils.delete(fileName);
final MVStore s = openStore(fileName);
int count = 200;
for (int i = 0; i < count; i++) {
......@@ -458,11 +454,10 @@ public class TestConcurrent extends TestMVStore {
}
task.get();
s.close();
FileUtils.deleteRecursive("memFS:", false);
}
private void testConcurrentStoreAndClose() throws InterruptedException {
String fileName = "memFS:testConcurrentStoreAndClose";
String fileName = "memFS:" + getTestName();
for (int i = 0; i < 10; i++) {
FileUtils.delete(fileName);
final MVStore s = openStore(fileName);
......@@ -500,7 +495,6 @@ public class TestConcurrent extends TestMVStore {
}
s.close();
}
FileUtils.deleteRecursive("memFS:", false);
}
/**
......@@ -557,8 +551,8 @@ public class TestConcurrent extends TestMVStore {
}
private void testConcurrentOnlineBackup() throws Exception {
String fileName = getBaseDir() + "/onlineBackup.h3";
String fileNameRestore = getBaseDir() + "/onlineRestore.h3";
String fileName = getBaseDir() + "/" + getTestName();
String fileNameRestore = getBaseDir() + "/" + getTestName() + "2";
final MVStore s = openStore(fileName);
final MVMap<Integer, byte[]> map = s.openMap("test");
final Random r = new Random();
......
......@@ -44,9 +44,6 @@ public class TestMVRTree extends TestMVStore {
@Override
public void test() {
FileUtils.deleteRecursive(getBaseDir(), true);
FileUtils.createDirectories(getBaseDir());
testRemoveAll();
testRandomInsert();
testSpatialKey();
......@@ -58,7 +55,7 @@ public class TestMVRTree extends TestMVStore {
}
private void testRemoveAll() {
String fileName = getBaseDir() + "/testRemoveAll.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
s = new MVStore.Builder().fileName(fileName).
......@@ -77,7 +74,7 @@ public class TestMVRTree extends TestMVStore {
}
private void testRandomInsert() {
String fileName = getBaseDir() + "/testMany.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
s = new MVStore.Builder().fileName(fileName).
......@@ -143,7 +140,7 @@ public class TestMVRTree extends TestMVStore {
}
private void testMany() {
String fileName = getBaseDir() + "/testMany.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
s = openStore(fileName);
......@@ -209,7 +206,7 @@ public class TestMVRTree extends TestMVStore {
}
private void testSimple() {
String fileName = getBaseDir() + "/testTree.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
s = openStore(fileName);
......@@ -387,7 +384,7 @@ public class TestMVRTree extends TestMVStore {
}
private void testRandom(boolean quadraticSplit) {
String fileName = getBaseDir() + "/testRandom.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
......
......@@ -50,8 +50,6 @@ public class TestMVStore extends TestBase {
@Override
public void test() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
FileUtils.createDirectories(getBaseDir());
testRemoveMapRollback();
testProvidedFileStoreNotOpenedAndClosed();
testVolatileMap();
......@@ -127,7 +125,8 @@ public class TestMVStore extends TestBase {
assertNull(map.get("1"));
store.close();
String fileName = getBaseDir() + "/testRemoveMapRollback.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
store = new MVStore.Builder().
autoCommitDisabled().
fileName(fileName).
......@@ -168,7 +167,8 @@ public class TestMVStore extends TestBase {
}
private void testVolatileMap() {
String fileName = getBaseDir() + "/testVolatile.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore store = new MVStore.Builder().
fileName(fileName).
open();
......@@ -205,7 +205,8 @@ public class TestMVStore extends TestBase {
}
private void testCompressEmptyPage() {
String fileName = getBaseDir() + "/testDeletedMap.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore store = new MVStore.Builder().
cacheSize(100).fileName(fileName).
compress().
......@@ -222,7 +223,8 @@ public class TestMVStore extends TestBase {
}
private void testCompressed() {
String fileName = getBaseDir() + "/testCompressed.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
long lastSize = 0;
for (int level = 0; level <= 2; level++) {
FileUtils.delete(fileName);
......@@ -254,7 +256,8 @@ public class TestMVStore extends TestBase {
}
private void testFileFormatExample() {
String fileName = getBaseDir() + "/testFileFormatExample.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = MVStore.open(fileName);
MVMap<Integer, String> map = s.openMap("data");
for (int i = 0; i < 400; i++) {
......@@ -270,7 +273,8 @@ public class TestMVStore extends TestBase {
}
private void testMaxChunkLength() {
String fileName = getBaseDir() + "/testMaxChunkLength.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().fileName(fileName).open();
MVMap<Integer, byte[]> map = s.openMap("data");
map.put(0, new byte[2 * 1024 * 1024]);
......@@ -285,7 +289,8 @@ public class TestMVStore extends TestBase {
}
private void testCacheInfo() {
String fileName = getBaseDir() + "/testCloseMap.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().fileName(fileName).cacheSize(2).open();
assertEquals(2, s.getCacheSize());
MVMap<Integer, byte[]> map;
......@@ -355,7 +360,7 @@ public class TestMVStore extends TestBase {
}
private void testRemoveMap() throws Exception {
String fileName = getBaseDir() + "/testCloseMap.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().
fileName(fileName).
......@@ -418,7 +423,7 @@ public class TestMVStore extends TestBase {
}
private void testNewerWriteVersion() throws Exception {
String fileName = getBaseDir() + "/testNewerWriteVersion.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().
encryptionKey("007".toCharArray()).
......@@ -475,7 +480,7 @@ public class TestMVStore extends TestBase {
}
private void testCompactFully() throws Exception {
String fileName = getBaseDir() + "/testCompactFully.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().
fileName(fileName).
......@@ -500,7 +505,7 @@ public class TestMVStore extends TestBase {
}
private void testBackgroundExceptionListener() throws Exception {
String fileName = getBaseDir() + "/testBackgroundExceptionListener.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
final AtomicReference<Throwable> exRef =
......@@ -516,28 +521,34 @@ public class TestMVStore extends TestBase {
}).
open();
s.setAutoCommitDelay(50);
s.setAutoCommitDelay(10);
MVMap<Integer, String> m;
m = s.openMap("data");
s.getFileStore().getFile().close();
try {
m.put(1, "Hello");
for (int i = 0; i < 200; i++) {
if (exRef.get() != null) {
break;
}
Thread.sleep(1);
Thread.sleep(10);
}
Throwable e = exRef.get();
assertTrue(e != null);
assertEquals(DataUtils.ERROR_WRITING_FAILED,
DataUtils.getErrorCode(e.getMessage()));
} catch (IllegalStateException e) {
// sometimes it is detected right away
assertEquals(DataUtils.ERROR_CLOSED,
DataUtils.getErrorCode(e.getMessage()));
}
s.closeImmediately();
FileUtils.delete(fileName);
}
private void testAtomicOperations() {
String fileName = getBaseDir() + "/testAtomicOperations.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, byte[]> m;
......@@ -572,7 +583,7 @@ public class TestMVStore extends TestBase {
}
private void testWriteBuffer() {
String fileName = getBaseDir() + "/testWriteBuffer.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, byte[]> m;
......@@ -617,7 +628,8 @@ public class TestMVStore extends TestBase {
}
private void testWriteDelay() throws InterruptedException {
String fileName = getBaseDir() + "/testWriteDelay.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, String> m;
......@@ -640,34 +652,33 @@ public class TestMVStore extends TestBase {
s = new MVStore.Builder().
fileName(fileName).
open();
s.setAutoCommitDelay(1);
m = s.openMap("data");
m.put(1, "Hello");
s.commit();
long v = s.getCurrentVersion();
m.put(2, "World.");
Thread.sleep(5);
// must not store, as nothing has been committed yet
s.closeImmediately();
s.commit();
s.close();
s = new MVStore.Builder().
fileName(fileName).
open();
s.setAutoCommitDelay(1);
s.setAutoCommitDelay(2);
m = s.openMap("data");
assertEquals("World.", m.get(2));
m.put(2, "World");
s.commit();
v = s.getCurrentVersion();
long v = s.getCurrentVersion();
long time = System.currentTimeMillis();
m.put(3, "!");
for (int i = 100; i > 0; i--) {
for (int i = 200; i > 0; i--) {
if (s.getCurrentVersion() > v) {
break;
}
if (i < 10) {
long diff = System.currentTimeMillis() - time;
if (diff > 1000) {
fail();
}
Thread.sleep(1);
Thread.sleep(10);
}
s.closeImmediately();
......@@ -684,7 +695,7 @@ public class TestMVStore extends TestBase {
}
private void testEncryptedFile() {
String fileName = getBaseDir() + "/testEncryptedFile.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, String> m;
......@@ -741,7 +752,7 @@ public class TestMVStore extends TestBase {
}
private void testFileFormatChange() {
String fileName = getBaseDir() + "/testFileFormatChange.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, Integer> m;
......@@ -774,7 +785,7 @@ public class TestMVStore extends TestBase {
}
private void testRecreateMap() {
String fileName = getBaseDir() + "/testRecreateMap.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
MVMap<Integer, Integer> m = s.openMap("test");
......@@ -805,7 +816,7 @@ public class TestMVStore extends TestBase {
}
private void testCustomMapType() {
String fileName = getBaseDir() + "/testMapType.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
SequenceMap seq = s.openMap("data", new SequenceMap.Builder());
......@@ -818,7 +829,8 @@ public class TestMVStore extends TestBase {
}
private void testCacheSize() {
String fileName = getBaseDir() + "/testCacheSize.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, String> map;
s = new MVStore.Builder().
......@@ -857,7 +869,8 @@ public class TestMVStore extends TestBase {
}
private void testConcurrentOpen() {
String fileName = getBaseDir() + "/testConcurrentOpen.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().fileName(fileName).open();
try {
MVStore s1 = new MVStore.Builder().fileName(fileName).open();
......@@ -881,7 +894,8 @@ public class TestMVStore extends TestBase {
}
private void testFileHeader() {
String fileName = getBaseDir() + "/testFileHeader.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
s.setRetentionTime(Integer.MAX_VALUE);
long time = System.currentTimeMillis();
......@@ -910,7 +924,8 @@ public class TestMVStore extends TestBase {
}
private void testFileHeaderCorruption() throws Exception {
String fileName = getBaseDir() + "/testFileHeader.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = new MVStore.Builder().
fileName(fileName).pageSplitSize(1000).autoCommitDisabled().open();
s.setRetentionTime(0);
......@@ -1100,7 +1115,7 @@ public class TestMVStore extends TestBase {
}
private void testStoreVersion() {
String fileName = getBaseDir() + "/testStoreVersion.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = MVStore.open(fileName);
assertEquals(0, s.getCurrentVersion());
......@@ -1144,7 +1159,7 @@ public class TestMVStore extends TestBase {
}
private void testObjects() {
String fileName = getBaseDir() + "/testObjects.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
Map<Object, Object> map;
......@@ -1167,7 +1182,7 @@ public class TestMVStore extends TestBase {
}
private void testExample() {
String fileName = getBaseDir() + "/testExample.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
// open the store (in-memory if fileName is null)
......@@ -1190,7 +1205,7 @@ public class TestMVStore extends TestBase {
}
private void testExampleMvcc() {
String fileName = getBaseDir() + "/testExampleMvcc.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
// open the store (in-memory if fileName is null)
......@@ -1236,7 +1251,7 @@ public class TestMVStore extends TestBase {
}
private void testOpenStoreCloseLoop() {
String fileName = getBaseDir() + "/testOpenClose.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
for (int k = 0; k < 1; k++) {
// long t = System.currentTimeMillis();
......@@ -1282,7 +1297,7 @@ public class TestMVStore extends TestBase {
}
private void testVersion() {
String fileName = getBaseDir() + "/testVersion.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
s = openStore(fileName);
......@@ -1347,7 +1362,7 @@ public class TestMVStore extends TestBase {
}
private void testTruncateFile() {
String fileName = getBaseDir() + "/testTruncate.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, String> m;
......@@ -1377,7 +1392,7 @@ public class TestMVStore extends TestBase {
}
private void testFastDelete() {
String fileName = getBaseDir() + "/testFastDelete.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s;
MVMap<Integer, String> m;
......@@ -1419,7 +1434,7 @@ public class TestMVStore extends TestBase {
}
private void testRollbackStored() {
String fileName = getBaseDir() + "/testRollback.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVMap<String, String> meta;
MVStore s = openStore(fileName);
......@@ -1512,7 +1527,7 @@ public class TestMVStore extends TestBase {
}
private void testRollbackInMemory() {
String fileName = getBaseDir() + "/testRollback.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName, 5);
s.setAutoCommitDelay(0);
......@@ -1553,7 +1568,7 @@ public class TestMVStore extends TestBase {
}
private void testMeta() {
String fileName = getBaseDir() + "/testMeta.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
s.setRetentionTime(Integer.MAX_VALUE);
......@@ -1623,7 +1638,8 @@ public class TestMVStore extends TestBase {
}
private void testLargeImport() {
String fileName = getBaseDir() + "/testImport.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
int len = 1000;
for (int j = 0; j < 5; j++) {
FileUtils.delete(fileName);
......@@ -1659,7 +1675,7 @@ public class TestMVStore extends TestBase {
}
private void testBtreeStore() {
String fileName = getBaseDir() + "/testBtreeStore.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
s.close();
......@@ -1707,7 +1723,7 @@ public class TestMVStore extends TestBase {
}
private void testCompactMapNotOpen() {
String fileName = getBaseDir() + "/testCompactNotOpen.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName, 1000);
MVMap<Integer, String> m = s.openMap("data");
......@@ -1767,7 +1783,7 @@ public class TestMVStore extends TestBase {
}
private void testCompact() {
String fileName = getBaseDir() + "/testCompact.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
long initialLength = 0;
for (int j = 0; j < 20; j++) {
......@@ -1808,7 +1824,7 @@ public class TestMVStore extends TestBase {
}
private void testReuseSpace() {
String fileName = getBaseDir() + "/testReuseSpace.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
long initialLength = 0;
for (int j = 0; j < 20; j++) {
......@@ -1835,7 +1851,7 @@ public class TestMVStore extends TestBase {
}
private void testRandom() {
String fileName = getBaseDir() + "/testRandom.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
MVMap<Integer, Integer> m = s.openMap("data");
......@@ -1898,7 +1914,7 @@ public class TestMVStore extends TestBase {
}
private void testKeyValueClasses() {
String fileName = getBaseDir() + "/testKeyValueClasses.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
MVMap<Integer, String> is = s.openMap("intString");
......@@ -1923,7 +1939,7 @@ public class TestMVStore extends TestBase {
}
private void testIterate() {
String fileName = getBaseDir() + "/testIterate.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
MVMap<Integer, String> m = s.openMap("data");
......@@ -1956,7 +1972,7 @@ public class TestMVStore extends TestBase {
}
private void testCloseTwice() {
String fileName = getBaseDir() + "/testCloseTwice.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
MVMap<Integer, String> m = s.openMap("data");
......@@ -1969,7 +1985,7 @@ public class TestMVStore extends TestBase {
}
private void testSimple() {
String fileName = getBaseDir() + "/testSimple.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore s = openStore(fileName);
MVMap<Integer, String> m = s.openMap("data");
......@@ -1998,7 +2014,7 @@ public class TestMVStore extends TestBase {
if (!config.big) {
return;
}
String fileName = getBaseDir() + "/testLargerThan2G.h3";
String fileName = getBaseDir() + "/" + getTestName();
FileUtils.delete(fileName);
MVStore store = new MVStore.Builder().cacheSize(16).
fileName(fileName).open();
......
......@@ -29,7 +29,6 @@ import org.h2.mvstore.MVStore;
import org.h2.mvstore.db.TransactionStore;
import org.h2.store.fs.FileUtils;
import org.h2.test.TestBase;
import org.h2.tools.DeleteDbFiles;
import org.h2.tools.Recover;
import org.h2.tools.Restore;
import org.h2.util.JdbcUtils;
......@@ -89,14 +88,14 @@ public class TestMVTableEngine extends TestBase {
}
private void testLobReuse() throws Exception {
deleteDb("testLobReuse");
Connection conn = getConnection("testLobReuse");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("create table test(id identity primary key, lob clob)");
conn.close();
byte[] buffer = new byte[8192];
for (int i = 0; i < 20; i++) {
conn = getConnection("testLobReuse");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("insert into test(lob) select space(1025) from system_range(1, 10)");
stat.execute("delete from test where random() > 0.5");
......@@ -113,8 +112,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testShutdownDuringLobCreation() throws Exception {
deleteDb("testShutdownDuringLobCreation");
Connection conn = getConnection("testShutdownDuringLobCreation");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("create table test(data clob) as select space(10000)");
final PreparedStatement prep = conn
......@@ -159,7 +158,7 @@ public class TestMVTableEngine extends TestBase {
} catch (Exception e) {
// ignore
}
conn = getConnection("testShutdownDuringLobCreation");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("shutdown defrag");
try {
......@@ -167,7 +166,7 @@ public class TestMVTableEngine extends TestBase {
} catch (Exception e) {
// ignore
}
conn = getConnection("testShutdownDuringLobCreation");
conn = getConnection(getTestName());
stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select * " +
"from information_schema.settings " +
......@@ -180,8 +179,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testLobCreationThenShutdown() throws Exception {
deleteDb("testLobCreationThenShutdown");
Connection conn = getConnection("testLobCreationThenShutdown");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("create table test(id identity, data clob)");
PreparedStatement prep = conn
......@@ -199,7 +198,7 @@ public class TestMVTableEngine extends TestBase {
} catch (Exception e) {
// ignore
}
conn = getConnection("testLobCreationThenShutdown");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("drop all objects");
stat.execute("shutdown defrag");
......@@ -208,7 +207,7 @@ public class TestMVTableEngine extends TestBase {
} catch (Exception e) {
// ignore
}
conn = getConnection("testLobCreationThenShutdown");
conn = getConnection(getTestName());
stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select * " +
"from information_schema.settings " +
......@@ -221,14 +220,14 @@ public class TestMVTableEngine extends TestBase {
}
private void testManyTransactions() throws Exception {
deleteDb("testManyTransactions");
Connection conn = getConnection("testManyTransactions");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("create table test()");
conn.setAutoCommit(false);
stat.execute("insert into test values()");
Connection conn2 = getConnection("testManyTransactions");
Connection conn2 = getConnection(getTestName());
Statement stat2 = conn2.createStatement();
for (long i = 0; i < 100000; i++) {
stat2.execute("insert into test values()");
......@@ -238,9 +237,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testAppendOnly() throws Exception {
deleteDb("testAppendOnly");
Connection conn = getConnection(
"testAppendOnly");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
stat.execute("set retention_time 0");
for (int i = 0; i < 10; i++) {
......@@ -250,11 +248,11 @@ public class TestMVTableEngine extends TestBase {
}
stat.execute("create table test as select x from system_range(1, 1000)");
conn.close();
String fileName = getBaseDir() + "/testAppendOnly" + Constants.SUFFIX_MV_FILE;
String fileName = getBaseDir() + "/" + getTestName() + Constants.SUFFIX_MV_FILE;
long fileSize = FileUtils.size(fileName);
conn = getConnection(
"testAppendOnly;reuse_space=false");
getTestName() + ";reuse_space=false");
stat = conn.createStatement();
stat.execute("set retention_time 0");
for (int i = 0; i < 10; i++) {
......@@ -270,8 +268,7 @@ public class TestMVTableEngine extends TestBase {
// undo all changes
fc.truncate(fileSize);
conn = getConnection(
"testAppendOnly");
conn = getConnection(getTestName());
stat = conn.createStatement();
stat.execute("select * from dummy0 where 1 = 0");
stat.execute("select * from dummy9 where 1 = 0");
......@@ -280,11 +277,11 @@ public class TestMVTableEngine extends TestBase {
}
private void testLowRetentionTime() throws SQLException {
deleteDb("testLowRetentionTime");
deleteDb(getTestName());
Connection conn = getConnection(
"testLowRetentionTime;RETENTION_TIME=10;WRITE_DELAY=10");
getTestName() + ";RETENTION_TIME=10;WRITE_DELAY=10");
Statement stat = conn.createStatement();
Connection conn2 = getConnection("testLowRetentionTime");
Connection conn2 = getConnection(getTestName());
Statement stat2 = conn2.createStatement();
stat.execute("create alias sleep as " +
"$$void sleep(int ms) throws Exception { Thread.sleep(ms); }$$");
......@@ -309,12 +306,11 @@ public class TestMVTableEngine extends TestBase {
}
private void testOldAndNew() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
String urlOld = getURL("mvstore;MV_STORE=FALSE", true);
String urlNew = getURL("mvstore;MV_STORE=TRUE", true);
String url = getURL("mvstore", true);
deleteDb(getTestName());
String urlOld = getURL(getTestName() + ";MV_STORE=FALSE", true);
String urlNew = getURL(getTestName() + ";MV_STORE=TRUE", true);
String url = getURL(getTestName(), true);
conn = getConnection(urlOld);
conn.createStatement().execute("create table test_old(id int)");
......@@ -337,10 +333,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testTemporaryTables() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -365,10 +361,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testUniqueIndex() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -381,10 +377,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testSecondaryIndex() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -403,10 +399,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testGarbageCollectionForLOB() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -425,7 +421,7 @@ public class TestMVTableEngine extends TestBase {
assertThrows(ErrorCode.IO_EXCEPTION_1, prep).
setBinaryStream(1, createFailingStream(new IllegalStateException()));
conn.close();
MVStore s = MVStore.open(getBaseDir()+ "/mvstore.mv.db");
MVStore s = MVStore.open(getBaseDir()+ "/" + getTestName() + ".mv.db");
assertTrue(s.hasMap("lobData"));
MVMap<Long, byte[]> lobData = s.openMap("lobData");
assertEquals(0, lobData.sizeAsLong());
......@@ -439,10 +435,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testSpatial() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -462,12 +458,12 @@ public class TestMVTableEngine extends TestBase {
return;
}
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Connection conn2;
Statement stat;
Statement stat2;
String url = "mvstore;MV_STORE=TRUE;MVCC=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE;MVCC=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -519,12 +515,12 @@ public class TestMVTableEngine extends TestBase {
}
private void testMinMaxWithNull() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Connection conn2;
Statement stat;
Statement stat2;
String url = "mvstore;MV_STORE=TRUE;MVCC=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE;MVCC=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -549,12 +545,12 @@ public class TestMVTableEngine extends TestBase {
}
private void testTimeout() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Connection conn2;
Statement stat;
Statement stat2;
String url = "mvstore;MV_STORE=TRUE;MVCC=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE;MVCC=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -574,10 +570,10 @@ public class TestMVTableEngine extends TestBase {
if (config.memory) {
return;
}
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -599,10 +595,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testTransactionLogUsuallyNotStored() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -619,7 +615,7 @@ public class TestMVTableEngine extends TestBase {
stat.execute("shutdown immediately");
JdbcUtils.closeSilently(conn);
String file = getBaseDir() + "/mvstore" + Constants.SUFFIX_MV_FILE;
String file = getBaseDir() + "/" + getTestName() + Constants.SUFFIX_MV_FILE;
MVStore store = MVStore.open(file);
TransactionStore t = new TransactionStore(store);
......@@ -629,9 +625,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testShrinkDatabaseFile() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore" +
";MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn;
Statement stat;
long maxSize = 0;
......@@ -672,7 +667,7 @@ public class TestMVTableEngine extends TestBase {
} catch (Exception e) {
// ignore
}
String fileName = getBaseDir() + "/mvstore"
String fileName = getBaseDir() + "/" + getTestName()
+ Constants.SUFFIX_MV_FILE;
long size = FileUtils.size(fileName);
if (i < 10) {
......@@ -681,22 +676,22 @@ public class TestMVTableEngine extends TestBase {
fail(i + " size: " + size + " max: " + maxSize);
}
}
long sizeOld = FileUtils.size(getBaseDir() + "/mvstore"
long sizeOld = FileUtils.size(getBaseDir() + "/" + getTestName()
+ Constants.SUFFIX_MV_FILE);
conn = getConnection(dbName);
stat = conn.createStatement();
stat.execute("shutdown compact");
conn.close();
long sizeNew = FileUtils.size(getBaseDir() + "/mvstore"
long sizeNew = FileUtils.size(getBaseDir() + "/" + getTestName()
+ Constants.SUFFIX_MV_FILE);
assertTrue("new: " + sizeNew + " old: " + sizeOld, sizeNew < sizeOld);
}
private void testTwoPhaseCommit() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -720,10 +715,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testRecover() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
url = getURL(url, true);
conn = getConnection(url);
stat = conn.createStatement();
......@@ -733,11 +728,11 @@ public class TestMVTableEngine extends TestBase {
stat.execute("insert into test2 values('Hello World')");
conn.close();
Recover.execute(getBaseDir(), "mvstore");
DeleteDbFiles.execute(getBaseDir(), "mvstore", true);
Recover.execute(getBaseDir(), getTestName());
deleteDb(getTestName());
conn = getConnection(url);
stat = conn.createStatement();
stat.execute("runscript from '" + getBaseDir() + "/mvstore.h2.sql'");
stat.execute("runscript from '" + getBaseDir() + "/" + getTestName()+ ".h2.sql'");
ResultSet rs;
rs = stat.executeQuery("select * from test");
assertTrue(rs.next());
......@@ -750,10 +745,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testRollback() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
conn = getConnection(url);
stat = conn.createStatement();
stat.execute("create table test(id identity)");
......@@ -765,11 +760,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testSeparateKey() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
conn = getConnection(url);
stat = conn.createStatement();
......@@ -791,12 +785,11 @@ public class TestMVTableEngine extends TestBase {
}
private void testRollbackAfterCrash() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
String url = "mvstore;MV_STORE=TRUE";
String url2 = "mvstore2;MV_STORE=TRUE";
deleteDb(getTestName());
String url = getTestName() + ";MV_STORE=TRUE";
String url2 = getTestName() + "2;MV_STORE=TRUE";
conn = getConnection(url);
stat = conn.createStatement();
......@@ -839,9 +832,10 @@ public class TestMVTableEngine extends TestBase {
"from system_range(1, 10)");
conn.setAutoCommit(false);
stat.execute("delete from test where id > 5");
stat.execute("backup to '" + getBaseDir() + "/backup.zip'");
stat.execute("backup to '" + getBaseDir() + "/" + getTestName() + ".zip'");
conn.rollback();
Restore.execute(getBaseDir() + "/backup.zip", getBaseDir(), "mvstore2");
Restore.execute(getBaseDir() + "/" +getTestName() + ".zip",
getBaseDir(), getTestName() + "2");
Connection conn2;
conn2 = getConnection(url2);
conn.close();
......@@ -850,11 +844,10 @@ public class TestMVTableEngine extends TestBase {
}
private void testReferentialIntegrity() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
conn = getConnection("mvstore;MV_STORE=TRUE");
deleteDb(getTestName());
conn = getConnection(getTestName() + ";MV_STORE=TRUE");
stat = conn.createStatement();
stat.execute("create table test(id int, parent int " +
......@@ -923,11 +916,11 @@ public class TestMVTableEngine extends TestBase {
}
private void testWriteDelay() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
ResultSet rs;
conn = getConnection("mvstore;MV_STORE=TRUE");
deleteDb(getTestName());
conn = getConnection(getTestName() + ";MV_STORE=TRUE");
stat = conn.createStatement();
stat.execute("create table test(id int)");
stat.execute("set write_delay 0");
......@@ -938,7 +931,7 @@ public class TestMVTableEngine extends TestBase {
} catch (Exception e) {
// ignore
}
conn = getConnection("mvstore;MV_STORE=TRUE");
conn = getConnection(getTestName() + ";MV_STORE=TRUE");
stat = conn.createStatement();
rs = stat.executeQuery("select * from test");
assertTrue(rs.next());
......@@ -946,11 +939,11 @@ public class TestMVTableEngine extends TestBase {
}
private void testAutoCommit() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
ResultSet rs;
conn = getConnection("mvstore;MV_STORE=TRUE");
deleteDb(getTestName());
conn = getConnection(getTestName() + ";MV_STORE=TRUE");
for (int i = 0; i < 2; i++) {
stat = conn.createStatement();
stat.execute("create table test(id int primary key, name varchar)");
......@@ -980,22 +973,22 @@ public class TestMVTableEngine extends TestBase {
}
private void testReopen() throws SQLException {
FileUtils.deleteRecursive(getBaseDir(), true);
Connection conn;
Statement stat;
conn = getConnection("mvstore;MV_STORE=TRUE");
deleteDb(getTestName());
conn = getConnection(getTestName() + ";MV_STORE=TRUE");
stat = conn.createStatement();
stat.execute("create table test(id int, name varchar)");
conn.close();
conn = getConnection("mvstore;MV_STORE=TRUE");
conn = getConnection(getTestName() + ";MV_STORE=TRUE");
stat = conn.createStatement();
stat.execute("drop table test");
conn.close();
}
private void testBlob() throws SQLException, IOException {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn;
Statement stat;
conn = getConnection(dbName);
......@@ -1018,12 +1011,11 @@ public class TestMVTableEngine extends TestBase {
assertEquals(129, len);
}
conn.close();
FileUtils.deleteRecursive(getBaseDir(), true);
}
private void testEncryption() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn;
Statement stat;
String url = getURL(dbName + ";CIPHER=AES", true);
......@@ -1038,12 +1030,11 @@ public class TestMVTableEngine extends TestBase {
stat.execute("select * from test");
stat.execute("drop table test");
conn.close();
FileUtils.deleteRecursive(getBaseDir(), true);
}
private void testExclusiveLock() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE;MVCC=FALSE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE;MVCC=FALSE";
Connection conn, conn2;
Statement stat, stat2;
conn = getConnection(dbName);
......@@ -1062,31 +1053,29 @@ public class TestMVTableEngine extends TestBase {
assertEquals("WRITE", rs2.getString("lock_type"));
conn2.close();
conn.close();
FileUtils.deleteRecursive(getBaseDir(), true);
}
private void testReadOnly() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn;
Statement stat;
conn = getConnection(dbName);
stat = conn.createStatement();
stat.execute("create table test(id int)");
conn.close();
FileUtils.setReadOnly(getBaseDir() + "/mvstore" +
FileUtils.setReadOnly(getBaseDir() + "/" + getTestName() +
Constants.SUFFIX_MV_FILE);
conn = getConnection(dbName);
Database db = (Database) ((JdbcConnection) conn).getSession()
.getDataHandler();
assertTrue(db.getMvStore().getStore().getFileStore().isReadOnly());
conn.close();
FileUtils.deleteRecursive(getBaseDir(), true);
}
private void testReuseDiskSpace() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn;
Statement stat;
long maxSize = 0;
......@@ -1101,7 +1090,7 @@ public class TestMVTableEngine extends TestBase {
"from system_range(1, 1000)");
stat.execute("drop table test");
conn.close();
long size = FileUtils.size(getBaseDir() + "/mvstore"
long size = FileUtils.size(getBaseDir() + "/" + getTestName()
+ Constants.SUFFIX_MV_FILE);
if (i < 10) {
maxSize = (int) (Math.max(size, maxSize) * 1.1);
......@@ -1112,8 +1101,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testDataTypes() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn = getConnection(dbName);
Statement stat = conn.createStatement();
......@@ -1272,8 +1261,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testLocking() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE;MVCC=FALSE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE;MVCC=FALSE";
Connection conn = getConnection(dbName);
Statement stat = conn.createStatement();
stat.execute("set lock_timeout 1000");
......@@ -1308,8 +1297,8 @@ public class TestMVTableEngine extends TestBase {
}
private void testSimple() throws Exception {
FileUtils.deleteRecursive(getBaseDir(), true);
String dbName = "mvstore;MV_STORE=TRUE";
deleteDb(getTestName());
String dbName = getTestName() + ";MV_STORE=TRUE";
Connection conn = getConnection(dbName);
Statement stat = conn.createStatement();
stat.execute("create table test(id int primary key, name varchar)");
......
......@@ -41,8 +41,6 @@ public class TestStreamStore extends TestBase {
@Override
public void test() throws IOException {
FileUtils.deleteRecursive(getBaseDir(), true);
FileUtils.createDirectories(getBaseDir());
testIOException();
testSaveCount();
testExceptionDuringStore();
......
......@@ -27,7 +27,7 @@ public class BnfRandom implements BnfVisitor {
private int level;
private String sql;
BnfRandom() throws Exception {
public BnfRandom() throws Exception {
Bnf config = Bnf.getInstance(null);
config.linkStatements();
......
......@@ -43,8 +43,8 @@ public class TestBtreeIndex extends TestBase {
}
private void testAddDelete() throws SQLException {
deleteDb("index");
Connection conn = getConnection("index");
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
try {
Statement stat = conn.createStatement();
stat.execute("CREATE TABLE TEST(ID bigint primary key)");
......@@ -54,7 +54,7 @@ public class TestBtreeIndex extends TestBase {
count + ")");
if (!config.memory) {
conn.close();
conn = getConnection("index");
conn = getConnection(getTestName());
stat = conn.createStatement();
}
for (int i = 1; i < count; i++) {
......@@ -68,7 +68,7 @@ public class TestBtreeIndex extends TestBase {
} finally {
conn.close();
}
deleteDb("index");
deleteDb(getTestName());
}
@Override
......@@ -78,7 +78,7 @@ public class TestBtreeIndex extends TestBase {
private void testOne(int seed) throws SQLException {
org.h2.Driver.load();
deleteDb("index");
deleteDb(getTestName());
printTime("testIndex " + seed);
Random random = new Random(seed);
int distinct, prefixLength;
......@@ -101,8 +101,8 @@ public class TestBtreeIndex extends TestBase {
}
}
String prefix = buff.toString().substring(0, prefixLength);
DeleteDbFiles.execute(getBaseDir() + "/index", null, true);
Connection conn = getConnection("index");
DeleteDbFiles.execute(getBaseDir() + "/" + getTestName(), null, true);
Connection conn = getConnection(getTestName());
try {
Statement stat = conn.createStatement();
stat.execute("CREATE TABLE a(text VARCHAR PRIMARY KEY)");
......@@ -192,7 +192,7 @@ public class TestBtreeIndex extends TestBase {
} finally {
conn.close();
}
deleteDb("index");
deleteDb(getTestName());
}
private void printError(int seed, String message) {
......
......@@ -38,15 +38,15 @@ public class TestFuzzOptimizations extends TestBase {
@Override
public void test() throws Exception {
deleteDb("optimizations");
conn = getConnection("optimizations");
deleteDb(getTestName());
conn = getConnection(getTestName());
if (!config.diskResult) {
testIn();
}
testGroupSorted();
testInSelect();
conn.close();
deleteDb("optimizations");
deleteDb(getTestName());
}
/*
......
......@@ -13,7 +13,6 @@ import org.h2.engine.SysProperties;
import org.h2.store.fs.FileUtils;
import org.h2.test.TestAll;
import org.h2.test.TestBase;
import org.h2.tools.DeleteDbFiles;
import org.h2.util.MathUtils;
/**
......@@ -44,8 +43,8 @@ public class TestRandomSQL extends TestBase {
}
}
private String getDatabaseName() {
return "dataRandomSQL/randomSql" + seed;
protected String getDatabaseName() {
return getTestName() + "/db" + seed;
}
private Connection connect() throws SQLException {
......@@ -53,13 +52,7 @@ public class TestRandomSQL extends TestBase {
}
private void deleteDb() {
String name = getDatabaseName();
if (name.startsWith("memFS:")) {
DeleteDbFiles.execute("memFS:/", name, true);
} else {
DeleteDbFiles.execute(getBaseDir() + "/dataRandomSQL", null, true);
FileUtils.delete(getBaseDir() + "/dataRandomSQL");
}
FileUtils.delete(getDatabaseName());
}
@Override
......@@ -111,7 +104,8 @@ public class TestRandomSQL extends TestBase {
public void testCase(int i) throws Exception {
String old = SysProperties.getScriptDirectory();
try {
System.setProperty(SysProperties.H2_SCRIPT_DIRECTORY, "dataScript/");
System.setProperty(SysProperties.H2_SCRIPT_DIRECTORY,
getBaseDir() + "/" + getTestName());
seed = i;
printTime("seed: " + seed);
deleteDb();
......
......@@ -56,28 +56,28 @@ public class TestAutoReconnect extends TestBase {
testReconnect();
autoServer = false;
testReconnect();
deleteDb("autoReconnect");
deleteDb(getTestName());
}
private void testWrongUrl() throws Exception {
deleteDb("autoReconnect");
deleteDb(getTestName());
Server tcp = Server.createTcpServer().start();
try {
conn = getConnection("jdbc:h2:" + getBaseDir() +
"/autoReconnect;AUTO_SERVER=TRUE");
"/" + getTestName() + ";AUTO_SERVER=TRUE");
assertThrows(ErrorCode.DATABASE_ALREADY_OPEN_1, this).
getConnection("jdbc:h2:" + getBaseDir() +
"/autoReconnect;OPEN_NEW=TRUE");
"/" + getTestName() + ";OPEN_NEW=TRUE");
assertThrows(ErrorCode.DATABASE_ALREADY_OPEN_1, this).
getConnection("jdbc:h2:" + getBaseDir() +
"/autoReconnect;OPEN_NEW=TRUE");
"/" + getTestName() + ";OPEN_NEW=TRUE");
conn.close();
conn = getConnection("jdbc:h2:tcp://localhost/" + getBaseDir() +
"/autoReconnect");
"/" + getTestName());
assertThrows(ErrorCode.DATABASE_ALREADY_OPEN_1, this).
getConnection("jdbc:h2:" + getBaseDir() +
"/autoReconnect;AUTO_SERVER=TRUE;OPEN_NEW=TRUE");
"/" + getTestName() + ";AUTO_SERVER=TRUE;OPEN_NEW=TRUE");
conn.close();
} finally {
tcp.stop();
......@@ -85,15 +85,15 @@ public class TestAutoReconnect extends TestBase {
}
private void testReconnect() throws Exception {
deleteDb("autoReconnect");
deleteDb(getTestName());
if (autoServer) {
url = "jdbc:h2:" + getBaseDir() + "/autoReconnect;" +
url = "jdbc:h2:" + getBaseDir() + "/" + getTestName() + ";" +
"FILE_LOCK=SOCKET;" +
"AUTO_SERVER=TRUE;OPEN_NEW=TRUE";
restart();
} else {
server = Server.createTcpServer("-tcpPort", "8181").start();
url = "jdbc:h2:tcp://localhost:8181/" + getBaseDir() + "/autoReconnect;" +
url = "jdbc:h2:tcp://localhost:8181/" + getBaseDir() + "/" + getTestName() + ";" +
"FILE_LOCK=SOCKET;AUTO_RECONNECT=TRUE";
}
......
......@@ -44,12 +44,12 @@ public class TestConnectionInfo extends TestBase {
return;
}
assertThrows(ErrorCode.URL_RELATIVE_TO_CWD, this).
getConnection("jdbc:h2:test");
getConnection("jdbc:h2:" + getTestName());
assertThrows(ErrorCode.URL_RELATIVE_TO_CWD, this).
getConnection("jdbc:h2:data/test");
getConnection("jdbc:h2:data/" + getTestName());
getConnection("jdbc:h2:./testDatabase").close();
DeleteDbFiles.execute(".", "testDatabase", true);
getConnection("jdbc:h2:./data/" + getTestName()).close();
DeleteDbFiles.execute("data", getTestName(), true);
}
private void testConnectInitError() throws Exception {
......@@ -62,14 +62,14 @@ public class TestConnectionInfo extends TestBase {
private void testConnectionInfo() {
Properties info = new Properties();
ConnectionInfo connectionInfo = new ConnectionInfo(
"jdbc:h2:mem:test" +
"jdbc:h2:mem:" + getTestName() +
";LOG=2" +
";ACCESS_MODE_DATA=rws" +
";INIT=CREATE this...\\;INSERT that..." +
";IFEXISTS=TRUE",
info);
assertEquals("jdbc:h2:mem:test",
assertEquals("jdbc:h2:mem:" + getTestName(),
connectionInfo.getURL());
assertEquals("2",
......
......@@ -17,7 +17,7 @@ import org.h2.util.SmallLRUCache;
import org.h2.util.TempFileDeleter;
/**
* Tests the in-memory file system.
* Tests the in-memory file store.
*/
public class TestFile extends TestBase implements DataHandler {
......
/*
* 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.unit;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Locale;
import org.h2.test.TestBase;
public class TestLocale extends TestBase {
/**
* Run just this test.
*
* @param a ignored
*/
public static void main(String... a) throws Exception {
// System.setProperty("h2.storeLocalTime", "true");
TestBase.createCaller().init().test();
}
@Override
public void test() throws SQLException {
testSpecialLocale();
}
private void testSpecialLocale() throws SQLException {
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
Locale old = Locale.getDefault();
try {
// when using Turkish as the default locale, "i".toUpperCase() is
// not "I"
Locale.setDefault(new Locale("tr"));
stat.execute("create table test(I1 int, i2 int, b int, c int, d int) " +
"as select 1, 1, 1, 1, 1");
ResultSet rs = stat.executeQuery("select * from test");
rs.next();
rs.getString("I1");
rs.getString("i1");
rs.getString("I2");
rs.getString("i2");
stat.execute("drop table test");
} finally {
Locale.setDefault(old);
}
conn.close();
}
}
......@@ -38,18 +38,18 @@ public class TestSampleApps extends TestBase {
if (!getBaseDir().startsWith(TestBase.BASE_TEST_DIR)) {
return;
}
deleteDb("optimizations");
deleteDb(getTestName());
InputStream in = getClass().getClassLoader().getResourceAsStream(
"org/h2/samples/optimizations.sql");
new File(getBaseDir()).mkdirs();
FileOutputStream out = new FileOutputStream(getBaseDir() +
"/optimizations.sql");
IOUtils.copyAndClose(in, out);
String url = "jdbc:h2:" + getBaseDir() + "/optimizations";
String url = "jdbc:h2:" + getBaseDir() + "/" + getTestName();
testApp("", org.h2.tools.RunScript.class, "-url", url, "-user", "sa",
"-password", "sa", "-script", getBaseDir() +
"/optimizations.sql", "-checkResults");
deleteDb("optimizations");
deleteDb(getTestName());
testApp("Compacting...\nDone.", org.h2.samples.Compact.class);
testApp("NAME: Bob Meier\n" +
"EMAIL: bob.meier@abcde.abc\n" +
......
......@@ -517,6 +517,13 @@ public class TestTools extends TestBase {
}
private void testServerMain() throws SQLException {
testNonSSL();
if (!config.fast) {
testSSL();
}
}
private void testNonSSL() throws SQLException {
String result;
Connection conn;
......@@ -538,6 +545,11 @@ public class TestTools extends TestBase {
result = runServer(0, new String[]{"-tcpShutdown",
"tcp://localhost:9001", "-tcpPassword", "abc", "-tcpShutdownForce"});
assertTrue(result.contains("Shutting down"));
}
private void testSSL() throws SQLException {
String result;
Connection conn;
result = runServer(0, new String[]{"-tcp",
"-tcpAllowOthers", "-tcpPort", "9001", "-tcpPassword", "abcdef", "-tcpSSL"});
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论