提交 87792db5 authored 作者: Noel Grandin's avatar Noel Grandin

improve unit test cleanup

上级 7f3e1936
......@@ -245,71 +245,74 @@ public class TestFullText extends TestBase {
trace("Testing multithreaded " + prefix);
deleteDb("fullText");
ArrayList<Connection> connList = new ArrayList<Connection>();
int len = 2;
Task[] task = new Task[len];
for (int i = 0; i < len; i++) {
// final Connection conn =
// getConnection("fullText;MULTI_THREADED=1;LOCK_TIMEOUT=10000");
final Connection conn = getConnection("fullText", connList);
Statement stat = conn.createStatement();
initFullText(stat, lucene);
initFullText(stat, lucene);
final String tableName = "TEST" + i;
stat.execute("CREATE TABLE " + tableName +
"(ID INT PRIMARY KEY, DATA VARCHAR)");
stat.execute("CALL " + prefix +
"_CREATE_INDEX('PUBLIC', '" + tableName + "', NULL)");
task[i] = new Task() {
@Override
public void call() throws SQLException {
trace("starting thread " + Thread.currentThread());
PreparedStatement prep = conn.prepareStatement(
"INSERT INTO " + tableName + " VALUES(?, ?)");
Statement stat = conn.createStatement();
Random random = new Random();
int x = 0;
while (!stop) {
trace("stop = " + stop + " for " + Thread.currentThread());
StringBuilder buff = new StringBuilder();
for (int j = 0; j < 1000; j++) {
buff.append(" ").append(random.nextInt(10000));
buff.append(" x").append(j);
buff.append(" ").append(KNOWN_WORDS[j % KNOWN_WORDS.length]);
try {
int len = 2;
Task[] task = new Task[len];
for (int i = 0; i < len; i++) {
// final Connection conn =
// getConnection("fullText;MULTI_THREADED=1;LOCK_TIMEOUT=10000");
final Connection conn = getConnection("fullText", connList);
Statement stat = conn.createStatement();
initFullText(stat, lucene);
initFullText(stat, lucene);
final String tableName = "TEST" + i;
stat.execute("CREATE TABLE " + tableName +
"(ID INT PRIMARY KEY, DATA VARCHAR)");
stat.execute("CALL " + prefix +
"_CREATE_INDEX('PUBLIC', '" + tableName + "', NULL)");
task[i] = new Task() {
@Override
public void call() throws SQLException {
trace("starting thread " + Thread.currentThread());
PreparedStatement prep = conn.prepareStatement(
"INSERT INTO " + tableName + " VALUES(?, ?)");
Statement stat = conn.createStatement();
Random random = new Random();
int x = 0;
while (!stop) {
trace("stop = " + stop + " for " + Thread.currentThread());
StringBuilder buff = new StringBuilder();
for (int j = 0; j < 1000; j++) {
buff.append(" ").append(random.nextInt(10000));
buff.append(" x").append(j);
buff.append(" ").append(KNOWN_WORDS[j % KNOWN_WORDS.length]);
}
prep.setInt(1, x);
prep.setString(2, buff.toString());
prep.execute();
x++;
for (String knownWord : KNOWN_WORDS) {
trace("searching for " + knownWord + " with " +
Thread.currentThread());
ResultSet rs = stat.executeQuery("SELECT * FROM " +
prefix + "_SEARCH('" + knownWord +
"', 0, 0)");
assertTrue(rs.next());
}
}
prep.setInt(1, x);
prep.setString(2, buff.toString());
prep.execute();
x++;
for (String knownWord : KNOWN_WORDS) {
trace("searching for " + knownWord + " with " +
Thread.currentThread());
ResultSet rs = stat.executeQuery("SELECT * FROM " +
prefix + "_SEARCH('" + knownWord +
"', 0, 0)");
assertTrue(rs.next());
trace("closing connection");
if (!config.memory) {
conn.close();
}
trace("completed thread " + Thread.currentThread());
}
trace("closing connection");
if (!config.memory) {
conn.close();
}
trace("completed thread " + Thread.currentThread());
}
};
}
for (Task t : task) {
t.execute();
}
trace("sleeping");
Thread.sleep(1000);
trace("setting stop to true");
for (Task t : task) {
trace("joining " + t);
t.get();
trace("done joining " + t);
};
}
for (Task t : task) {
t.execute();
}
trace("sleeping");
Thread.sleep(1000);
trace("setting stop to true");
for (Task t : task) {
trace("joining " + t);
t.get();
trace("done joining " + t);
}
} finally {
close(connList);
}
close(connList);
}
private void testStreamLob() throws SQLException {
......
......@@ -64,43 +64,43 @@ public class TestRights extends TestBase {
private void testLinkedTableMeta() throws SQLException {
deleteDb("rights");
Connection conn = getConnection("rights");
stat = conn.createStatement();
stat.execute("create user test password 'test'");
stat.execute("create linked table test" +
"(null, 'jdbc:h2:mem:', 'sa', 'sa', 'DUAL')");
// password is invisible to non-admin
Connection conn2 = getConnection(
"rights", "test", getPassword("test"));
Statement stat2 = conn2.createStatement();
ResultSet rs = stat2.executeQuery(
"select * from information_schema.tables " +
"where table_name = 'TEST'");
assertTrue(rs.next());
ResultSetMetaData meta = rs.getMetaData();
for (int i = 1; i <= meta.getColumnCount(); i++) {
String s = rs.getString(i);
assertFalse(s != null && s.contains("'sa'"));
}
conn2.close();
// password is visible to admin
rs = stat.executeQuery(
"select * from information_schema.tables " +
"where table_name = 'TEST'");
assertTrue(rs.next());
meta = rs.getMetaData();
boolean foundPassword = false;
for (int i = 1; i <= meta.getColumnCount(); i++) {
String s = rs.getString(i);
if (s != null && s.contains("'sa'")) {
foundPassword = true;
try (Connection conn = getConnection("rights")) {
stat = conn.createStatement();
stat.execute("create user test password 'test'");
stat.execute("create linked table test" +
"(null, 'jdbc:h2:mem:', 'sa', 'sa', 'DUAL')");
// password is invisible to non-admin
Connection conn2 = getConnection(
"rights", "test", getPassword("test"));
Statement stat2 = conn2.createStatement();
ResultSet rs = stat2.executeQuery(
"select * from information_schema.tables " +
"where table_name = 'TEST'");
assertTrue(rs.next());
ResultSetMetaData meta = rs.getMetaData();
for (int i = 1; i <= meta.getColumnCount(); i++) {
String s = rs.getString(i);
assertFalse(s != null && s.contains("'sa'"));
}
conn2.close();
// password is visible to admin
rs = stat.executeQuery(
"select * from information_schema.tables " +
"where table_name = 'TEST'");
assertTrue(rs.next());
meta = rs.getMetaData();
boolean foundPassword = false;
for (int i = 1; i <= meta.getColumnCount(); i++) {
String s = rs.getString(i);
if (s != null && s.contains("'sa'")) {
foundPassword = true;
}
}
assertTrue(foundPassword);
conn2.close();
stat.execute("drop table test");
}
assertTrue(foundPassword);
conn2.close();
stat.execute("drop table test");
conn.close();
}
private void testGrantMore() throws SQLException {
......
......@@ -111,17 +111,16 @@ public class TestMVTableEngine extends TestBase {
private void testLobReuse() throws Exception {
deleteDb(getTestName());
Connection conn = getConnection(getTestName());
Statement stat = conn.createStatement();
Connection conn1 = getConnection(getTestName());
Statement stat = conn1.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(getTestName());
stat = conn.createStatement();
Connection conn2 = getConnection(getTestName());
stat = conn2.createStatement();
stat.execute("insert into test(lob) select space(1025) from system_range(1, 10)");
stat.execute("delete from test where random() > 0.5");
ResultSet rs = conn.createStatement().executeQuery(
ResultSet rs = conn2.createStatement().executeQuery(
"select lob from test");
while (rs.next()) {
InputStream is = rs.getBinaryStream(1);
......@@ -129,8 +128,9 @@ public class TestMVTableEngine extends TestBase {
// ignore
}
}
conn.close();
conn2.close();
}
conn1.close();
}
private void testShutdownDuringLobCreation() throws Exception {
......@@ -175,6 +175,7 @@ public class TestMVTableEngine extends TestBase {
stat.execute("shutdown immediately");
Exception ex = t.getException();
assertTrue(ex != null);
ex.printStackTrace();
try {
conn.close();
} catch (Exception e) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论