提交 f447a3e4 authored 作者: Thomas Mueller's avatar Thomas Mueller

code style

上级 aed847e4
#Fri Aug 24 22:06:59 CEST 2007 #Sat Sep 01 17:01:19 CEST 2007
javac=javac
benchmark.drivers.dir=C\:/data/java benchmark.drivers.dir=C\:/data/java
javac=javac
path.servlet.jar=C\:/data/classpath/servlet-api.jar path.servlet.jar=C\:/data/classpath/servlet-api.jar
version.name.maven=1.0.57 version.name.maven=1.0.57
jdk=1.4 jdk=1.4
...@@ -46,7 +46,7 @@ public class FileFunctions { ...@@ -46,7 +46,7 @@ public class FileFunctions {
public static byte[] readFile(String fileName) throws IOException { public static byte[] readFile(String fileName) throws IOException {
RandomAccessFile file = new RandomAccessFile(fileName, "r"); RandomAccessFile file = new RandomAccessFile(fileName, "r");
try { try {
byte[] buff = new byte[(int)file.length()]; byte[] buff = new byte[(int) file.length()];
file.readFully(buff); file.readFully(buff);
return buff; return buff;
} finally { } finally {
......
...@@ -23,9 +23,9 @@ public class Function { ...@@ -23,9 +23,9 @@ public class Function {
stat.execute("CREATE ALIAS IS_PRIME FOR \"org.h2.samples.Function.isPrime\" "); stat.execute("CREATE ALIAS IS_PRIME FOR \"org.h2.samples.Function.isPrime\" ");
ResultSet rs; ResultSet rs;
rs = stat.executeQuery("SELECT IS_PRIME(X), X FROM SYSTEM_RANGE(1, 20) ORDER BY X"); rs = stat.executeQuery("SELECT IS_PRIME(X), X FROM SYSTEM_RANGE(1, 20) ORDER BY X");
while(rs.next()) { while (rs.next()) {
boolean isPrime = rs.getBoolean(1); boolean isPrime = rs.getBoolean(1);
if(isPrime) { if (isPrime) {
int x = rs.getInt(2); int x = rs.getInt(2);
System.out.println(x + " is prime"); System.out.println(x + " is prime");
} }
...@@ -53,11 +53,11 @@ public class Function { ...@@ -53,11 +53,11 @@ public class Function {
SimpleResultSet rs = new SimpleResultSet(); SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("X", Types.INTEGER, 10, 0); rs.addColumn("X", Types.INTEGER, 10, 0);
rs.addColumn("Y", Types.INTEGER, 10, 0); rs.addColumn("Y", Types.INTEGER, 10, 0);
if(id == null) { if (id == null) {
return rs; return rs;
} }
for(int x = 0; x < id.intValue(); x++) { for (int x = 0; x < id.intValue(); x++) {
for(int y = 0; y < id.intValue(); y++) { for (int y = 0; y < id.intValue(); y++) {
rs.addRow(new Object[] { new Integer(x), new Integer(y) }); rs.addRow(new Object[] { new Integer(x), new Integer(y) });
} }
} }
......
...@@ -25,7 +25,7 @@ public class FunctionMultiReturn { ...@@ -25,7 +25,7 @@ public class FunctionMultiReturn {
prep.setDouble(1, 5.0); prep.setDouble(1, 5.0);
prep.setDouble(2, 0.5); prep.setDouble(2, 0.5);
ResultSet rs = prep.executeQuery(); ResultSet rs = prep.executeQuery();
while(rs.next()) { while (rs.next()) {
double x = rs.getDouble(1); double x = rs.getDouble(1);
double y = rs.getDouble(2); double y = rs.getDouble(2);
System.out.println("result: (x=" + x + ", y="+y+")"); System.out.println("result: (x=" + x + ", y="+y+")");
...@@ -35,7 +35,7 @@ public class FunctionMultiReturn { ...@@ -35,7 +35,7 @@ public class FunctionMultiReturn {
stat.execute("INSERT INTO TEST(R, A) VALUES(5.0, 0.5), (10.0, 0.6)"); stat.execute("INSERT INTO TEST(R, A) VALUES(5.0, 0.5), (10.0, 0.6)");
stat.execute("CREATE ALIAS P2C_SET FOR \"org.h2.samples.FunctionMultiReturn.polar2CartesianSet\" "); stat.execute("CREATE ALIAS P2C_SET FOR \"org.h2.samples.FunctionMultiReturn.polar2CartesianSet\" ");
rs = conn.createStatement().executeQuery("SELECT * FROM P2C_SET('SELECT * FROM TEST')"); rs = conn.createStatement().executeQuery("SELECT * FROM P2C_SET('SELECT * FROM TEST')");
while(rs.next()) { while (rs.next()) {
double r = rs.getDouble("R"); double r = rs.getDouble("R");
double a = rs.getDouble("A"); double a = rs.getDouble("A");
double x = rs.getDouble("X"); double x = rs.getDouble("X");
...@@ -45,18 +45,18 @@ public class FunctionMultiReturn { ...@@ -45,18 +45,18 @@ public class FunctionMultiReturn {
stat.execute("CREATE ALIAS P2C_A FOR \"org.h2.samples.FunctionMultiReturn.polar2CartesianArray\" "); stat.execute("CREATE ALIAS P2C_A FOR \"org.h2.samples.FunctionMultiReturn.polar2CartesianArray\" ");
rs = conn.createStatement().executeQuery("SELECT R, A, P2C_A(R, A) FROM TEST"); rs = conn.createStatement().executeQuery("SELECT R, A, P2C_A(R, A) FROM TEST");
while(rs.next()) { while (rs.next()) {
double r = rs.getDouble(1); double r = rs.getDouble(1);
double a = rs.getDouble(2); double a = rs.getDouble(2);
Object o = rs.getObject(3); Object o = rs.getObject(3);
Object[] xy = (Object[]) o; Object[] xy = (Object[]) o;
double x = ((Double)xy[0]).doubleValue(); double x = ((Double) xy[0]).doubleValue();
double y = ((Double)xy[1]).doubleValue(); double y = ((Double) xy[1]).doubleValue();
System.out.println("(r="+r+" a="+a+") : (x=" + x + ", y="+y+")"); System.out.println("(r=" + r + " a=" + a + ") : (x=" + x + ", y=" + y + ")");
} }
rs = conn.createStatement().executeQuery("SELECT R, A, ARRAY_GET(E, 1), ARRAY_GET(E, 2) FROM (SELECT R, A, P2C_A(R, A) E FROM TEST)"); rs = conn.createStatement().executeQuery("SELECT R, A, ARRAY_GET(E, 1), ARRAY_GET(E, 2) FROM (SELECT R, A, P2C_A(R, A) E FROM TEST)");
while(rs.next()) { while (rs.next()) {
double r = rs.getDouble(1); double r = rs.getDouble(1);
double a = rs.getDouble(2); double a = rs.getDouble(2);
double x = rs.getDouble(3); double x = rs.getDouble(3);
...@@ -75,7 +75,7 @@ public class FunctionMultiReturn { ...@@ -75,7 +75,7 @@ public class FunctionMultiReturn {
SimpleResultSet rs = new SimpleResultSet(); SimpleResultSet rs = new SimpleResultSet();
rs.addColumn("X", Types.DOUBLE, 0, 0); rs.addColumn("X", Types.DOUBLE, 0, 0);
rs.addColumn("Y", Types.DOUBLE, 0, 0); rs.addColumn("Y", Types.DOUBLE, 0, 0);
if(r != null && alpha != null) { if (r != null && alpha != null) {
double x = r.doubleValue() * Math.cos(alpha.doubleValue()); double x = r.doubleValue() * Math.cos(alpha.doubleValue());
double y = r.doubleValue() * Math.sin(alpha.doubleValue()); double y = r.doubleValue() * Math.sin(alpha.doubleValue());
rs.addRow(new Object[] { new Double(x), new Double(y) }); rs.addRow(new Object[] { new Double(x), new Double(y) });
...@@ -99,9 +99,9 @@ public class FunctionMultiReturn { ...@@ -99,9 +99,9 @@ public class FunctionMultiReturn {
result.addColumn("A", Types.DOUBLE, 0, 0); result.addColumn("A", Types.DOUBLE, 0, 0);
result.addColumn("X", Types.DOUBLE, 0, 0); result.addColumn("X", Types.DOUBLE, 0, 0);
result.addColumn("Y", Types.DOUBLE, 0, 0); result.addColumn("Y", Types.DOUBLE, 0, 0);
if(query != null) { if (query != null) {
ResultSet rs = conn.createStatement().executeQuery(query); ResultSet rs = conn.createStatement().executeQuery(query);
while(rs.next()) { while (rs.next()) {
double r = rs.getDouble("R"); double r = rs.getDouble("R");
double alpha = rs.getDouble("A"); double alpha = rs.getDouble("A");
double x = r * Math.cos(alpha); double x = r * Math.cos(alpha);
......
...@@ -4,8 +4,13 @@ ...@@ -4,8 +4,13 @@
*/ */
package org.h2.samples; package org.h2.samples;
import java.io.*; import java.io.InputStream;
import java.sql.*; import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.h2.tools.RunScript; import org.h2.tools.RunScript;
public class InitDatabaseFromJar { public class InitDatabaseFromJar {
...@@ -29,12 +34,13 @@ public class InitDatabaseFromJar { ...@@ -29,12 +34,13 @@ public class InitDatabaseFromJar {
Class.forName("org.h2.Driver"); Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:mem:test"); Connection conn = DriverManager.getConnection("jdbc:h2:mem:test");
InputStream in = getClass().getResourceAsStream("script.sql"); InputStream in = getClass().getResourceAsStream("script.sql");
if(in == null) { if (in == null) {
System.out.println("Please add the file script.sql to the classpath, package " + getClass().getPackage().getName()); System.out.println("Please add the file script.sql to the classpath, package "
+ getClass().getPackage().getName());
} else { } else {
RunScript.execute(conn, new InputStreamReader(in)); RunScript.execute(conn, new InputStreamReader(in));
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM TEST"); ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM TEST");
while(rs.next()) { while (rs.next()) {
System.out.println(rs.getString(1)); System.out.println(rs.getString(1));
} }
conn.close(); conn.close();
......
...@@ -30,14 +30,14 @@ public class MixedMode { ...@@ -30,14 +30,14 @@ public class MixedMode {
System.out.println("Execute this a few times: SELECT TIME FROM TIMER"); System.out.println("Execute this a few times: SELECT TIME FROM TIMER");
System.out.println("To stop this application (and the server), run: DROP TABLE TIMER"); System.out.println("To stop this application (and the server), run: DROP TABLE TIMER");
try { try {
while(true) { while (true) {
// runs forever, except if you drop the table remotely // runs forever, except if you drop the table remotely
stat.execute("MERGE INTO TIMER VALUES(1, NOW())"); stat.execute("MERGE INTO TIMER VALUES(1, NOW())");
Thread.sleep(1000); Thread.sleep(1000);
} }
} catch(SQLException e) { } catch (SQLException e) {
System.out.println("Error: " + e.toString()); System.out.println("Error: " + e.toString());
} }
conn.close(); conn.close();
// stop the server // stop the server
......
...@@ -22,10 +22,10 @@ public class Newsfeed { ...@@ -22,10 +22,10 @@ public class Newsfeed {
Connection conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", ""); Connection conn = DriverManager.getConnection("jdbc:h2:mem:", "sa", "");
InputStream in = Newsfeed.class.getResourceAsStream("newsfeed.sql"); InputStream in = Newsfeed.class.getResourceAsStream("newsfeed.sql");
ResultSet rs = RunScript.execute(conn, new InputStreamReader(in, "ISO-8859-1")); ResultSet rs = RunScript.execute(conn, new InputStreamReader(in, "ISO-8859-1"));
while(rs.next()) { while (rs.next()) {
String file = rs.getString("FILE"); String file = rs.getString("FILE");
String content = rs.getString("CONTENT"); String content = rs.getString("CONTENT");
if(file.equals("-newsletter-")) { if (file.equals("-newsletter-")) {
System.out.println(convertHtml2Text(content)); System.out.println(convertHtml2Text(content));
} else { } else {
FileOutputStream out = new FileOutputStream(file); FileOutputStream out = new FileOutputStream(file);
...@@ -52,7 +52,7 @@ public class Newsfeed { ...@@ -52,7 +52,7 @@ public class Newsfeed {
s = StringUtils.replaceAll(s, "<br />", ""); s = StringUtils.replaceAll(s, "<br />", "");
s = StringUtils.replaceAll(s, "<br/>", ""); s = StringUtils.replaceAll(s, "<br/>", "");
s = StringUtils.replaceAll(s, "<br>", ""); s = StringUtils.replaceAll(s, "<br>", "");
if(s.indexOf('<') >= 0 || s.indexOf('>') >= 0) { if (s.indexOf('<') >= 0 || s.indexOf('>') >= 0) {
throw new Error("Unsupported HTML Tag: < or > in " + s); throw new Error("Unsupported HTML Tag: < or > in " + s);
} }
return s; return s;
......
...@@ -4,8 +4,14 @@ ...@@ -4,8 +4,14 @@
*/ */
package org.h2.samples; package org.h2.samples;
import java.io.*; import java.io.BufferedReader;
import java.sql.*; import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SQLInjection { public class SQLInjection {
...@@ -43,14 +49,14 @@ public class SQLInjection { ...@@ -43,14 +49,14 @@ public class SQLInjection {
// loginByNameInsecure(); // loginByNameInsecure();
if(url.startsWith("jdbc:h2:")) { if (url.startsWith("jdbc:h2:")) {
// loginStoredProcedureInsecure(); // loginStoredProcedureInsecure();
limitRowAccess(); limitRowAccess();
} }
// loginByNameSecure(); // loginByNameSecure();
if(url.startsWith("jdbc:h2:")) { if (url.startsWith("jdbc:h2:")) {
stat.execute("SET ALLOW_LITERALS NONE"); stat.execute("SET ALLOW_LITERALS NONE");
stat.execute("SET ALLOW_LITERALS NUMBERS"); stat.execute("SET ALLOW_LITERALS NUMBERS");
stat.execute("SET ALLOW_LITERALS ALL"); stat.execute("SET ALLOW_LITERALS ALL");
...@@ -75,7 +81,7 @@ public class SQLInjection { ...@@ -75,7 +81,7 @@ public class SQLInjection {
listActiveItems(); listActiveItems();
if(url.startsWith("jdbc:h2:")) { if (url.startsWith("jdbc:h2:")) {
stat.execute("DROP CONSTANT IF EXISTS TYPE_INACTIVE"); stat.execute("DROP CONSTANT IF EXISTS TYPE_INACTIVE");
stat.execute("DROP CONSTANT IF EXISTS TYPE_ACTIVE"); stat.execute("DROP CONSTANT IF EXISTS TYPE_ACTIVE");
stat.execute("CREATE CONSTANT TYPE_INACTIVE VALUE 0"); stat.execute("CREATE CONSTANT TYPE_INACTIVE VALUE 0");
...@@ -86,7 +92,7 @@ public class SQLInjection { ...@@ -86,7 +92,7 @@ public class SQLInjection {
// listItemsSortedInsecure(); // listItemsSortedInsecure();
// listItemsSortedSecure(); // listItemsSortedSecure();
if(url.startsWith("jdbc:h2:")) { if (url.startsWith("jdbc:h2:")) {
listItemsSortedSecureParam(); listItemsSortedSecureParam();
// storePasswordHashWithSalt(); // storePasswordHashWithSalt();
} }
...@@ -188,7 +194,7 @@ public class SQLInjection { ...@@ -188,7 +194,7 @@ public class SQLInjection {
} else { } else {
System.out.println("Access denied!"); System.out.println("Access denied!");
} }
} catch(SQLException e) { } catch (SQLException e) {
System.out.println(e); System.out.println(e);
} }
} }
...@@ -209,7 +215,7 @@ public class SQLInjection { ...@@ -209,7 +215,7 @@ public class SQLInjection {
} else { } else {
System.out.println("Access denied!"); System.out.println("Access denied!");
} }
} catch(Exception e) { } catch (Exception e) {
System.out.println(e); System.out.println(e);
} }
} }
...@@ -241,7 +247,7 @@ public class SQLInjection { ...@@ -241,7 +247,7 @@ public class SQLInjection {
while (rs.next()) { while (rs.next()) {
System.out.println(rs.getString(1) + ": " + rs.getString(2)); System.out.println(rs.getString(1) + ": " + rs.getString(2));
} }
} catch(SQLException e) { } catch (SQLException e) {
System.out.println(e); System.out.println(e);
} }
} }
...@@ -258,7 +264,7 @@ public class SQLInjection { ...@@ -258,7 +264,7 @@ public class SQLInjection {
while (rs.next()) { while (rs.next()) {
System.out.println(rs.getString(1) + ": " + rs.getString(2)); System.out.println(rs.getString(1) + ": " + rs.getString(2));
} }
} catch(SQLException e) { } catch (SQLException e) {
System.out.println(e); System.out.println(e);
} }
} }
...@@ -274,7 +280,7 @@ public class SQLInjection { ...@@ -274,7 +280,7 @@ public class SQLInjection {
while (rs.next()) { while (rs.next()) {
System.out.println(rs.getString(1) + ": " + rs.getString(2)); System.out.println(rs.getString(1) + ": " + rs.getString(2));
} }
} catch(Exception e) { } catch (Exception e) {
System.out.println(e); System.out.println(e);
} }
} }
......
...@@ -39,7 +39,7 @@ public class SecurePassword { ...@@ -39,7 +39,7 @@ public class SecurePassword {
stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)"); stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)");
stat.executeUpdate("INSERT INTO TEST VALUES(1, 'Hello')"); stat.executeUpdate("INSERT INTO TEST VALUES(1, 'Hello')");
ResultSet rs = stat.executeQuery("SELECT * FROM TEST"); ResultSet rs = stat.executeQuery("SELECT * FROM TEST");
while(rs.next()) { while (rs.next()) {
System.out.println(rs.getString("NAME")); System.out.println(rs.getString("NAME"));
} }
conn.close(); conn.close();
......
...@@ -35,21 +35,21 @@ public class ShowProgress implements DatabaseEventListener { ...@@ -35,21 +35,21 @@ public class ShowProgress implements DatabaseEventListener {
long time; long time;
time = System.currentTimeMillis(); time = System.currentTimeMillis();
int len = 1000; int len = 1000;
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
long last = System.currentTimeMillis(); long last = System.currentTimeMillis();
if(last > time+1000) { if (last > time + 1000) {
time = last; time = last;
System.out.println("Inserting " + (100L*i/len) + "%"); System.out.println("Inserting " + (100L * i / len) + "%");
} }
prep.setInt(1, i); prep.setInt(1, i);
prep.execute(); prep.execute();
} }
boolean abnormalTermination = true; boolean abnormalTermination = true;
if(abnormalTermination) { if (abnormalTermination) {
((JdbcConnection)conn).setPowerOffCount(1); ((JdbcConnection) conn).setPowerOffCount(1);
try { try {
stat.execute("INSERT INTO TEST VALUES(-1, 'Test' || SPACE(100))"); stat.execute("INSERT INTO TEST VALUES(-1, 'Test' || SPACE(100))");
} catch(SQLException e) { } catch (SQLException e) {
} }
} else { } else {
conn.close(); conn.close();
...@@ -75,12 +75,12 @@ public class ShowProgress implements DatabaseEventListener { ...@@ -75,12 +75,12 @@ public class ShowProgress implements DatabaseEventListener {
public void setProgress(int state, String name, int current, int max) { public void setProgress(int state, String name, int current, int max) {
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
if(time < last+5000) { if (time < last + 5000) {
return; return;
} }
last = time; last = time;
String stateName = "?"; String stateName = "?";
switch(state) { switch (state) {
case STATE_SCAN_FILE: case STATE_SCAN_FILE:
stateName = "Scan " + name; stateName = "Scan " + name;
break; break;
...@@ -95,7 +95,8 @@ public class ShowProgress implements DatabaseEventListener { ...@@ -95,7 +95,8 @@ public class ShowProgress implements DatabaseEventListener {
Thread.sleep(1); Thread.sleep(1);
} catch (InterruptedException e) { } catch (InterruptedException e) {
} }
System.out.println("State: " + stateName + " " + (100*current/max) + "% (" + current+" of " + max + ") " + (time-start)+" ms"); System.out.println("State: " + stateName + " " + (100 * current / max) + "% (" + current + " of " + max + ") "
+ (time - start) + " ms");
} }
public void closingDatabase() { public void closingDatabase() {
......
...@@ -49,11 +49,11 @@ public class TriggerSample { ...@@ -49,11 +49,11 @@ public class TriggerSample {
Object[] oldRow, Object[] newRow) Object[] oldRow, Object[] newRow)
throws SQLException { throws SQLException {
BigDecimal diff = null; BigDecimal diff = null;
if(newRow != null) { if (newRow != null) {
diff = (BigDecimal)newRow[1]; diff = (BigDecimal) newRow[1];
} }
if(oldRow != null) { if (oldRow != null) {
BigDecimal m = (BigDecimal)oldRow[1]; BigDecimal m = (BigDecimal) oldRow[1];
diff = diff == null ? m.negate() : diff.subtract(m); diff = diff == null ? m.negate() : diff.subtract(m);
} }
PreparedStatement prep = conn.prepareStatement( PreparedStatement prep = conn.prepareStatement(
......
...@@ -15,7 +15,7 @@ public class TestAutoRecompile extends TestBase { ...@@ -15,7 +15,7 @@ public class TestAutoRecompile extends TestBase {
public void test() throws Exception { public void test() throws Exception {
deleteDb("autoRecompile"); deleteDb("autoRecompile");
Connection conn=getConnection("autoRecompile"); Connection conn = getConnection("autoRecompile");
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY)"); stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY)");
PreparedStatement prep = conn.prepareStatement("SELECT * FROM TEST"); PreparedStatement prep = conn.prepareStatement("SELECT * FROM TEST");
...@@ -26,19 +26,19 @@ public class TestAutoRecompile extends TestBase { ...@@ -26,19 +26,19 @@ public class TestAutoRecompile extends TestBase {
stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, X INT, Y INT)"); stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, X INT, Y INT)");
check(prep.executeQuery().getMetaData().getColumnCount(), 3); check(prep.executeQuery().getMetaData().getColumnCount(), 3);
// TODO test auto-recompile with insert..select, views and so on // TODO test auto-recompile with insert..select, views and so on
prep = conn.prepareStatement("INSERT INTO TEST VALUES(1, 2, 3)"); prep = conn.prepareStatement("INSERT INTO TEST VALUES(1, 2, 3)");
stat.execute("ALTER TABLE TEST ADD COLUMN Z INT"); stat.execute("ALTER TABLE TEST ADD COLUMN Z INT");
try { try {
prep.execute(); prep.execute();
error("must fail"); error("must fail");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
try { try {
prep.execute(); prep.execute();
error("must fail"); error("must fail");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
conn.close(); conn.close();
......
...@@ -13,18 +13,18 @@ import org.h2.test.TestBase; ...@@ -13,18 +13,18 @@ import org.h2.test.TestBase;
public class TestCompatibility extends TestBase { public class TestCompatibility extends TestBase {
private Connection conn; private Connection conn;
public void test() throws Exception { public void test() throws Exception {
deleteDb("compatibility"); deleteDb("compatibility");
conn = getConnection("compatibility"); conn = getConnection("compatibility");
testHsqlDb(); testHsqlDb();
testMySQL(); testMySQL();
conn.close(); conn.close();
} }
private void testHsqlDb() throws Exception { private void testHsqlDb() throws Exception {
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
stat.execute("DROP TABLE TEST IF EXISTS; CREATE TABLE TEST(ID INT PRIMARY KEY); "); stat.execute("DROP TABLE TEST IF EXISTS; CREATE TABLE TEST(ID INT PRIMARY KEY); ");
...@@ -37,15 +37,13 @@ public class TestCompatibility extends TestBase { ...@@ -37,15 +37,13 @@ public class TestCompatibility extends TestBase {
stat.execute("DROP TABLE TEST IF EXISTS"); stat.execute("DROP TABLE TEST IF EXISTS");
stat.execute("CREATE TABLE TEST(ID INT)"); stat.execute("CREATE TABLE TEST(ID INT)");
stat.execute("INSERT INTO TEST VALUES(1)"); stat.execute("INSERT INTO TEST VALUES(1)");
PreparedStatement prep = conn.prepareStatement( PreparedStatement prep = conn.prepareStatement("SELECT LIMIT ? 1 ID FROM TEST");
"SELECT LIMIT ? 1 ID FROM TEST"
);
prep.setInt(1, 2); prep.setInt(1, 2);
prep.executeQuery(); prep.executeQuery();
stat.execute("DROP TABLE TEST IF EXISTS"); stat.execute("DROP TABLE TEST IF EXISTS");
} }
private void testMySQL() throws Exception { private void testMySQL() throws Exception {
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
stat.execute("SELECT 1"); stat.execute("SELECT 1");
...@@ -53,6 +51,5 @@ public class TestCompatibility extends TestBase { ...@@ -53,6 +51,5 @@ public class TestCompatibility extends TestBase {
stat.execute("CREATE TABLE TEST(ID INT, NAME VARCHAR)"); stat.execute("CREATE TABLE TEST(ID INT, NAME VARCHAR)");
stat.execute("INSERT INTO TEST VALUES(1, 'Hello'), (2, 'World')"); stat.execute("INSERT INTO TEST VALUES(1, 'Hello'), (2, 'World')");
} }
} }
...@@ -9,6 +9,7 @@ import java.io.Serializable; ...@@ -9,6 +9,7 @@ import java.io.Serializable;
class TestLobObject implements Serializable { class TestLobObject implements Serializable {
private static final long serialVersionUID = 904356179316518715L; private static final long serialVersionUID = 904356179316518715L;
String data; String data;
TestLobObject(String data) { TestLobObject(String data) {
this.data = data; this.data = data;
} }
......
...@@ -13,13 +13,13 @@ import java.sql.Statement; ...@@ -13,13 +13,13 @@ import java.sql.Statement;
import org.h2.test.TestBase; import org.h2.test.TestBase;
public class TestSQLInjection extends TestBase { public class TestSQLInjection extends TestBase {
Connection conn; Connection conn;
Statement stat; Statement stat;
public void test() throws Exception { public void test() throws Exception {
deleteDb("sqlInjection"); deleteDb("sqlInjection");
reconnect("sqlInjection"); reconnect("sqlInjection");
stat.execute("DROP TABLE IF EXISTS USERS"); stat.execute("DROP TABLE IF EXISTS USERS");
stat.execute("CREATE TABLE USERS(NAME VARCHAR PRIMARY KEY, PASSWORD VARCHAR, TYPE VARCHAR)"); stat.execute("CREATE TABLE USERS(NAME VARCHAR PRIMARY KEY, PASSWORD VARCHAR, TYPE VARCHAR)");
stat.execute("CREATE SCHEMA CONST"); stat.execute("CREATE SCHEMA CONST");
...@@ -32,56 +32,56 @@ public class TestSQLInjection extends TestBase { ...@@ -32,56 +32,56 @@ public class TestSQLInjection extends TestBase {
checkFalse(checkPasswordSecure("abcdef")); checkFalse(checkPasswordSecure("abcdef"));
checkFalse(checkPasswordSecure("' OR ''='")); checkFalse(checkPasswordSecure("' OR ''='"));
stat.execute("SET ALLOW_LITERALS NONE"); stat.execute("SET ALLOW_LITERALS NONE");
try { try {
check(checkPasswordInsecure("123456")); check(checkPasswordInsecure("123456"));
error("Should fail now"); error("Should fail now");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
check(checkPasswordSecure("123456")); check(checkPasswordSecure("123456"));
checkFalse(checkPasswordSecure("' OR ''='")); checkFalse(checkPasswordSecure("' OR ''='"));
conn.close(); conn.close();
if(config.memory) { if (config.memory) {
return; return;
} }
reconnect("sqlInjection"); reconnect("sqlInjection");
try { try {
check(checkPasswordInsecure("123456")); check(checkPasswordInsecure("123456"));
error("Should fail now"); error("Should fail now");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
check(checkPasswordSecure("123456")); check(checkPasswordSecure("123456"));
checkFalse(checkPasswordSecure("' OR ''='")); checkFalse(checkPasswordSecure("' OR ''='"));
conn.close(); conn.close();
} }
boolean checkPasswordInsecure(String pwd) throws SQLException { boolean checkPasswordInsecure(String pwd) throws SQLException {
String sql = "SELECT * FROM USERS WHERE PASSWORD='"+pwd+"'"; String sql = "SELECT * FROM USERS WHERE PASSWORD='" + pwd + "'";
ResultSet rs = conn.createStatement().executeQuery(sql); ResultSet rs = conn.createStatement().executeQuery(sql);
return(rs.next()); return (rs.next());
} }
boolean checkPasswordSecure(String pwd) throws Exception { boolean checkPasswordSecure(String pwd) throws Exception {
String sql = "SELECT * FROM USERS WHERE PASSWORD=?"; String sql = "SELECT * FROM USERS WHERE PASSWORD=?";
PreparedStatement prep = conn.prepareStatement(sql); PreparedStatement prep = conn.prepareStatement(sql);
prep.setString(1, pwd); prep.setString(1, pwd);
ResultSet rs = prep.executeQuery(); ResultSet rs = prep.executeQuery();
return(rs.next()); return (rs.next());
} }
private void reconnect(String name) throws Exception { private void reconnect(String name) throws Exception {
if(!config.memory) { if (!config.memory) {
if(conn != null) { if (conn != null) {
conn.close(); conn.close();
conn = null; conn = null;
} }
} }
if(conn == null) { if (conn == null) {
conn = getConnection(name); conn = getConnection(name);
stat = conn.createStatement(); stat = conn.createStatement();
} }
......
...@@ -12,7 +12,7 @@ import org.h2.test.TestBase; ...@@ -12,7 +12,7 @@ import org.h2.test.TestBase;
public class TestSpaceReuse extends TestBase { public class TestSpaceReuse extends TestBase {
public void test() throws Exception { public void test() throws Exception {
if(config.memory) { if (config.memory) {
return; return;
} }
deleteDb("spaceReuse"); deleteDb("spaceReuse");
...@@ -27,11 +27,11 @@ public class TestSpaceReuse extends TestBase { ...@@ -27,11 +27,11 @@ public class TestSpaceReuse extends TestBase {
conn.createStatement().execute("delete from t"); conn.createStatement().execute("delete from t");
conn.close(); conn.close();
now = new File(baseDir + "/spaceReuse.data.db").length(); now = new File(baseDir + "/spaceReuse.data.db").length();
if(first == 0) { if (first == 0) {
first = now; first = now;
} }
} }
if(now > first) { if (now > first) {
this.error("first: " + first + " now: " + now); this.error("first: " + first + " now: " + now);
} }
} }
......
...@@ -34,8 +34,9 @@ public class TestTempTables extends TestBase { ...@@ -34,8 +34,9 @@ public class TestTempTables extends TestBase {
s2.execute("DROP TABLE LT"); s2.execute("DROP TABLE LT");
s1.execute("DROP TABLE LT"); s1.execute("DROP TABLE LT");
// temp tables: 'on commit' syntax is currently not documented, because not tested well // temp tables: 'on commit' syntax is currently not documented, because
// and hopefully nobody is using it, as it looks like functional sugar // not tested well
// and hopefully nobody is using it, as it looks like functional sugar
// (this features are here for compatibility only) // (this features are here for compatibility only)
ResultSet rs; ResultSet rs;
c1.setAutoCommit(false); c1.setAutoCommit(false);
...@@ -47,7 +48,7 @@ public class TestTempTables extends TestBase { ...@@ -47,7 +48,7 @@ public class TestTempTables extends TestBase {
rs = s1.executeQuery("select * from test_temp"); rs = s1.executeQuery("select * from test_temp");
checkResultRowCount(rs, 0); checkResultRowCount(rs, 0);
s1.execute("drop table test_temp"); s1.execute("drop table test_temp");
s1.execute("create local temporary table test_temp(id int) on commit drop"); s1.execute("create local temporary table test_temp(id int) on commit drop");
s1.execute("insert into test_temp values(1)"); s1.execute("insert into test_temp values(1)");
rs = s1.executeQuery("select * from test_temp"); rs = s1.executeQuery("select * from test_temp");
...@@ -56,10 +57,10 @@ public class TestTempTables extends TestBase { ...@@ -56,10 +57,10 @@ public class TestTempTables extends TestBase {
try { try {
rs = s1.executeQuery("select * from test_temp"); rs = s1.executeQuery("select * from test_temp");
error("test_temp should have been dropped automatically"); error("test_temp should have been dropped automatically");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
c1.close(); c1.close();
c2.close(); c2.close();
} }
......
...@@ -16,12 +16,12 @@ import java.util.Vector; ...@@ -16,12 +16,12 @@ import java.util.Vector;
import org.h2.test.TestBase; import org.h2.test.TestBase;
public class TestTransaction extends TestBase { public class TestTransaction extends TestBase {
public void test() throws Exception { public void test() throws Exception {
testSavepoint(); testSavepoint();
testIsolation(); testIsolation();
} }
public void testSavepoint() throws Exception { public void testSavepoint() throws Exception {
deleteDb("transaction"); deleteDb("transaction");
Connection conn = getConnection("transaction"); Connection conn = getConnection("transaction");
...@@ -35,40 +35,44 @@ public class TestTransaction extends TestBase { ...@@ -35,40 +35,44 @@ public class TestTransaction extends TestBase {
int len = getSize(2000, 10000); int len = getSize(2000, 10000);
Random random = new Random(10); Random random = new Random(10);
Savepoint sp = null; Savepoint sp = null;
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
int tableId = random.nextInt(2); int tableId = random.nextInt(2);
String table="TEST" + tableId; String table = "TEST" + tableId;
int op = random.nextInt(6); int op = random.nextInt(6);
switch(op) { switch (op) {
case 0: case 0:
stat.execute("INSERT INTO "+table+"(NAME) VALUES('op"+i+"')"); stat.execute("INSERT INTO " + table + "(NAME) VALUES('op" + i + "')");
count[tableId]++; count[tableId]++;
break; break;
case 1: case 1:
if(count[tableId] > 0) { if (count[tableId] > 0) {
stat.execute("DELETE FROM "+table+" WHERE ID=SELECT MIN(ID) FROM "+table); stat.execute("DELETE FROM " + table + " WHERE ID=SELECT MIN(ID) FROM " + table);
count[tableId]--; count[tableId]--;
} }
break; break;
case 2: case 2:
sp = conn.setSavepoint(); sp = conn.setSavepoint();
countSave[0] = count[0]; countSave[1] = count[1]; countSave[0] = count[0];
countSave[1] = count[1];
break; break;
case 3: case 3:
if(sp != null) { if (sp != null) {
conn.rollback(sp); conn.rollback(sp);
count[0] = countSave[0]; count[1] = countSave[1]; count[0] = countSave[0];
count[1] = countSave[1];
} }
break; break;
case 4: case 4:
conn.commit(); conn.commit();
sp = null; sp = null;
countCommitted[0] = count[0]; countCommitted[1] = count[1]; countCommitted[0] = count[0];
countCommitted[1] = count[1];
break; break;
case 5: case 5:
conn.rollback(); conn.rollback();
sp = null; sp = null;
count[0] = countCommitted[0]; count[1] = countCommitted[1]; count[0] = countCommitted[0];
count[1] = countCommitted[1];
break; break;
} }
checkTableCount(stat, "TEST0", count[0]); checkTableCount(stat, "TEST0", count[0]);
...@@ -76,22 +80,22 @@ public class TestTransaction extends TestBase { ...@@ -76,22 +80,22 @@ public class TestTransaction extends TestBase {
} }
conn.close(); conn.close();
} }
private void checkTableCount(Statement stat, String tableName, int count) throws Exception { private void checkTableCount(Statement stat, String tableName, int count) throws Exception {
ResultSet rs; ResultSet rs;
rs = stat.executeQuery("SELECT COUNT(*) FROM " + tableName); rs = stat.executeQuery("SELECT COUNT(*) FROM " + tableName);
rs.next(); rs.next();
check(count, rs.getInt(1)); check(count, rs.getInt(1));
} }
public void testIsolation() throws Exception { public void testIsolation() throws Exception {
Connection conn = getConnection("transaction"); Connection conn = getConnection("transaction");
trace("default TransactionIsolation="+conn.getTransactionIsolation()); trace("default TransactionIsolation=" + conn.getTransactionIsolation());
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
check(conn.getTransactionIsolation()==Connection.TRANSACTION_READ_COMMITTED); check(conn.getTransactionIsolation() == Connection.TRANSACTION_READ_COMMITTED);
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
check(conn.getTransactionIsolation()==Connection.TRANSACTION_SERIALIZABLE); check(conn.getTransactionIsolation() == Connection.TRANSACTION_SERIALIZABLE);
Statement stat=conn.createStatement(); Statement stat = conn.createStatement();
check(conn.getAutoCommit()); check(conn.getAutoCommit());
conn.setAutoCommit(false); conn.setAutoCommit(false);
checkFalse(conn.getAutoCommit()); checkFalse(conn.getAutoCommit());
...@@ -101,10 +105,10 @@ public class TestTransaction extends TestBase { ...@@ -101,10 +105,10 @@ public class TestTransaction extends TestBase {
conn.commit(); conn.commit();
test(stat, "INSERT INTO TEST VALUES(0)"); test(stat, "INSERT INTO TEST VALUES(0)");
conn.rollback(); conn.rollback();
testValue(stat, "SELECT COUNT(*) FROM TEST","1"); testValue(stat, "SELECT COUNT(*) FROM TEST", "1");
conn.setAutoCommit(false); conn.setAutoCommit(false);
test(stat, "DELETE FROM TEST"); test(stat, "DELETE FROM TEST");
//testValue("SELECT COUNT(*) FROM TEST", "0"); // testValue("SELECT COUNT(*) FROM TEST", "0");
conn.rollback(); conn.rollback();
testValue(stat, "SELECT COUNT(*) FROM TEST", "1"); testValue(stat, "SELECT COUNT(*) FROM TEST", "1");
conn.commit(); conn.commit();
...@@ -114,78 +118,78 @@ public class TestTransaction extends TestBase { ...@@ -114,78 +118,78 @@ public class TestTransaction extends TestBase {
testNestedResultSets(conn); testNestedResultSets(conn);
conn.close(); conn.close();
} }
void testNestedResultSets(Connection conn) throws Exception { void testNestedResultSets(Connection conn) throws Exception {
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
test(stat, "CREATE TABLE NEST1(ID INT PRIMARY KEY,VALUE VARCHAR(255))"); test(stat, "CREATE TABLE NEST1(ID INT PRIMARY KEY,VALUE VARCHAR(255))");
test(stat, "CREATE TABLE NEST2(ID INT PRIMARY KEY,VALUE VARCHAR(255))"); test(stat, "CREATE TABLE NEST2(ID INT PRIMARY KEY,VALUE VARCHAR(255))");
DatabaseMetaData meta=conn.getMetaData(); DatabaseMetaData meta = conn.getMetaData();
Vector result; Vector result;
ResultSet rs1,rs2; ResultSet rs1, rs2;
result=new Vector(); result = new Vector();
rs1=meta.getTables(null,null,"NEST%",null); rs1 = meta.getTables(null, null, "NEST%", null);
while(rs1.next()) { while (rs1.next()) {
String table=rs1.getString("TABLE_NAME"); String table = rs1.getString("TABLE_NAME");
rs2=meta.getColumns(null,null,table,null); rs2 = meta.getColumns(null, null, table, null);
while(rs2.next()) { while (rs2.next()) {
String column=rs2.getString("COLUMN_NAME"); String column = rs2.getString("COLUMN_NAME");
trace("Table: "+table+" Column: "+column); trace("Table: " + table + " Column: " + column);
result.add(table+"."+column); result.add(table + "." + column);
} }
} }
if(result.size()!=4) { if (result.size() != 4) {
error("Wrong result, should be NEST1.ID, NEST1.NAME, NEST2.ID, NEST2.NAME but is "+result); error("Wrong result, should be NEST1.ID, NEST1.NAME, NEST2.ID, NEST2.NAME but is " + result);
} }
result=new Vector(); result = new Vector();
test(stat, "INSERT INTO NEST1 VALUES(1,'A')"); test(stat, "INSERT INTO NEST1 VALUES(1,'A')");
test(stat, "INSERT INTO NEST1 VALUES(2,'B')"); test(stat, "INSERT INTO NEST1 VALUES(2,'B')");
test(stat, "INSERT INTO NEST2 VALUES(1,'1')"); test(stat, "INSERT INTO NEST2 VALUES(1,'1')");
test(stat, "INSERT INTO NEST2 VALUES(2,'2')"); test(stat, "INSERT INTO NEST2 VALUES(2,'2')");
Statement s1=conn.createStatement(); Statement s1 = conn.createStatement();
Statement s2=conn.createStatement(); Statement s2 = conn.createStatement();
rs1=s1.executeQuery("SELECT * FROM NEST1 ORDER BY ID"); rs1 = s1.executeQuery("SELECT * FROM NEST1 ORDER BY ID");
while(rs1.next()) { while (rs1.next()) {
rs2=s2.executeQuery("SELECT * FROM NEST2 ORDER BY ID"); rs2 = s2.executeQuery("SELECT * FROM NEST2 ORDER BY ID");
while(rs2.next()) { while (rs2.next()) {
String v1=rs1.getString("VALUE"); String v1 = rs1.getString("VALUE");
String v2=rs2.getString("VALUE"); String v2 = rs2.getString("VALUE");
result.add(v1+"/"+v2); result.add(v1 + "/" + v2);
} }
} }
if(result.size()!=4) { if (result.size() != 4) {
error("Wrong result, should be A/1, A/2, B/1, B/2 but is "+result); error("Wrong result, should be A/1, A/2, B/1, B/2 but is " + result);
} }
result=new Vector(); result = new Vector();
rs1=s1.executeQuery("SELECT * FROM NEST1 ORDER BY ID"); rs1 = s1.executeQuery("SELECT * FROM NEST1 ORDER BY ID");
rs2=s1.executeQuery("SELECT * FROM NEST2 ORDER BY ID"); rs2 = s1.executeQuery("SELECT * FROM NEST2 ORDER BY ID");
try { try {
rs1.next(); rs1.next();
error("next worked on a closed result set"); error("next worked on a closed result set");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
// this is already closed, so but closing again should no do any harm // this is already closed, so but closing again should no do any harm
rs1.close(); rs1.close();
while(rs2.next()) { while (rs2.next()) {
String v1=rs2.getString("VALUE"); String v1 = rs2.getString("VALUE");
result.add(v1); result.add(v1);
} }
if(result.size()!=2) { if (result.size() != 2) {
error("Wrong result, should be A, B but is "+result); error("Wrong result, should be A, B but is " + result);
} }
test(stat, "DROP TABLE NEST1"); test(stat, "DROP TABLE NEST1");
test(stat, "DROP TABLE NEST2"); test(stat, "DROP TABLE NEST2");
} }
void testValue(Statement stat, String sql, String data) throws Exception { void testValue(Statement stat, String sql, String data) throws Exception {
ResultSet rs=stat.executeQuery(sql); ResultSet rs = stat.executeQuery(sql);
rs.next(); rs.next();
String s=rs.getString(1); String s = rs.getString(1);
if(s==null ? (data!=null) : (!s.equals(data))) { if (s == null ? (data != null) : (!s.equals(data))) {
error("s= "+s+" should be: "+data); error("s= " + s + " should be: " + data);
} }
} }
void test(Statement stat, String sql) throws Exception { void test(Statement stat, String sql) throws Exception {
trace(sql); trace(sql);
stat.execute(sql); stat.execute(sql);
......
...@@ -13,21 +13,21 @@ import org.h2.test.TestBase; ...@@ -13,21 +13,21 @@ import org.h2.test.TestBase;
public class TestTwoPhaseCommit extends TestBase { public class TestTwoPhaseCommit extends TestBase {
public void test() throws Exception { public void test() throws Exception {
if(config.memory || config.networked || config.logMode==0) { if (config.memory || config.networked || config.logMode == 0) {
return; return;
} }
deleteDb("twoPhaseCommit"); deleteDb("twoPhaseCommit");
prepare(); prepare();
openWith(true); openWith(true);
test(true); test(true);
prepare(); prepare();
openWith(false); openWith(false);
test(false); test(false);
} }
void test(boolean rolledBack) throws Exception { void test(boolean rolledBack) throws Exception {
Connection conn = getConnection("twoPhaseCommit"); Connection conn = getConnection("twoPhaseCommit");
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
...@@ -36,7 +36,7 @@ public class TestTwoPhaseCommit extends TestBase { ...@@ -36,7 +36,7 @@ public class TestTwoPhaseCommit extends TestBase {
rs.next(); rs.next();
check(rs.getInt(1), 1); check(rs.getInt(1), 1);
check(rs.getString(2), "Hello"); check(rs.getString(2), "Hello");
if(rolledBack) { if (rolledBack) {
} else { } else {
rs.next(); rs.next();
check(rs.getInt(1), 2); check(rs.getInt(1), 2);
...@@ -45,18 +45,18 @@ public class TestTwoPhaseCommit extends TestBase { ...@@ -45,18 +45,18 @@ public class TestTwoPhaseCommit extends TestBase {
checkFalse(rs.next()); checkFalse(rs.next());
conn.close(); conn.close();
} }
void openWith(boolean rollback) throws Exception { void openWith(boolean rollback) throws Exception {
Connection conn = getConnection("twoPhaseCommit"); Connection conn = getConnection("twoPhaseCommit");
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
ArrayList list = new ArrayList(); ArrayList list = new ArrayList();
ResultSet rs = stat.executeQuery("SELECT * FROM INFORMATION_SCHEMA.IN_DOUBT"); ResultSet rs = stat.executeQuery("SELECT * FROM INFORMATION_SCHEMA.IN_DOUBT");
while(rs.next()) { while (rs.next()) {
list.add(rs.getString("TRANSACTION")); list.add(rs.getString("TRANSACTION"));
} }
for(int i=0; i<list.size(); i++) { for (int i = 0; i < list.size(); i++) {
String s = (String)list.get(i); String s = (String) list.get(i);
if(rollback) { if (rollback) {
stat.execute("ROLLBACK TRANSACTION " + s); stat.execute("ROLLBACK TRANSACTION " + s);
} else { } else {
stat.execute("COMMIT TRANSACTION " + s); stat.execute("COMMIT TRANSACTION " + s);
...@@ -64,7 +64,7 @@ public class TestTwoPhaseCommit extends TestBase { ...@@ -64,7 +64,7 @@ public class TestTwoPhaseCommit extends TestBase {
} }
conn.close(); conn.close();
} }
void prepare() throws Exception { void prepare() throws Exception {
deleteDb("twoPhaseCommit"); deleteDb("twoPhaseCommit");
Connection conn = getConnection("twoPhaseCommit"); Connection conn = getConnection("twoPhaseCommit");
......
...@@ -17,10 +17,10 @@ public class TestView extends TestBase { ...@@ -17,10 +17,10 @@ public class TestView extends TestBase {
Statement s = conn.createStatement(); Statement s = conn.createStatement();
s.execute("create table t0(id int primary key)"); s.execute("create table t0(id int primary key)");
s.execute("insert into t0 values(1), (2), (3)"); s.execute("insert into t0 values(1), (2), (3)");
for(int i=0; i<30; i++) { for (int i = 0; i < 30; i++) {
s.execute("create view t" + (i+1) + " as select * from t" + i); s.execute("create view t" + (i + 1) + " as select * from t" + i);
s.execute("select * from t" + (i+1)); s.execute("select * from t" + (i + 1));
ResultSet rs = s.executeQuery("select count(*) from t" + (i+1) + " where id=2"); ResultSet rs = s.executeQuery("select count(*) from t" + (i + 1) + " where id=2");
check(rs.next()); check(rs.next());
check(rs.getInt(1), 1); check(rs.getInt(1), 1);
} }
......
...@@ -15,22 +15,22 @@ import org.h2.util.BitField; ...@@ -15,22 +15,22 @@ import org.h2.util.BitField;
*/ */
public class TestBitField extends TestBase { public class TestBitField extends TestBase {
public void test() throws Exception { public void test() throws Exception {
testRandom(); testRandom();
testGetSet(); testGetSet();
} }
void testRandom() throws Exception { void testRandom() throws Exception {
BitField bits = new BitField(); BitField bits = new BitField();
BitSet set = new BitSet(); BitSet set = new BitSet();
int max = 300; int max = 300;
int count = 100000; int count = 100000;
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<count; i++) { for (int i = 0; i < count; i++) {
int idx = random.nextInt(max); int idx = random.nextInt(max);
if(random.nextBoolean()) { if (random.nextBoolean()) {
if(random.nextBoolean()) { if (random.nextBoolean()) {
bits.set(idx); bits.set(idx);
set.set(idx); set.set(idx);
} else { } else {
...@@ -44,26 +44,26 @@ public class TestBitField extends TestBase { ...@@ -44,26 +44,26 @@ public class TestBitField extends TestBase {
} }
} }
} }
void testGetSet() throws Exception { void testGetSet() throws Exception {
BitField bits = new BitField(); BitField bits = new BitField();
for(int i=0; i<10000; i++) { for (int i = 0; i < 10000; i++) {
bits.set(i); bits.set(i);
if(!bits.get(i)) { if (!bits.get(i)) {
throw new Exception("not set: "+i); throw new Exception("not set: " + i);
} }
if(bits.get(i+1)) { if (bits.get(i + 1)) {
throw new Exception("set: "+i); throw new Exception("set: " + i);
} }
} }
for(int i=0; i<10000; i++) { for (int i = 0; i < 10000; i++) {
if(!bits.get(i)) { if (!bits.get(i)) {
throw new Exception("not set: "+i); throw new Exception("not set: " + i);
} }
} }
for(int i=0; i<1000; i++) { for (int i = 0; i < 1000; i++) {
int k = bits.nextClearBit(0); int k = bits.nextClearBit(0);
if(k != 10000) { if (k != 10000) {
throw new Exception("" + k); throw new Exception("" + k);
} }
} }
......
...@@ -12,9 +12,9 @@ import java.util.Random; ...@@ -12,9 +12,9 @@ import java.util.Random;
import org.h2.test.TestBase; import org.h2.test.TestBase;
public class TestCache extends TestBase { public class TestCache extends TestBase {
public void test() throws Exception { public void test() throws Exception {
if(config.memory) { if (config.memory) {
return; return;
} }
deleteDb("cache"); deleteDb("cache");
...@@ -26,7 +26,7 @@ public class TestCache extends TestBase { ...@@ -26,7 +26,7 @@ public class TestCache extends TestBase {
PreparedStatement prep = conn.prepareStatement("INSERT INTO TEST VALUES(?, ?)"); PreparedStatement prep = conn.prepareStatement("INSERT INTO TEST VALUES(?, ?)");
PreparedStatement prep2 = conn.prepareStatement("INSERT INTO MAIN VALUES(?, ?)"); PreparedStatement prep2 = conn.prepareStatement("INSERT INTO MAIN VALUES(?, ?)");
int max = 10000; int max = 10000;
for(int i=0; i<max; i++) { for (int i = 0; i < max; i++) {
prep.setInt(1, i); prep.setInt(1, i);
prep.setString(2, "Hello " + i); prep.setString(2, "Hello " + i);
prep.execute(); prep.execute();
...@@ -39,10 +39,10 @@ public class TestCache extends TestBase { ...@@ -39,10 +39,10 @@ public class TestCache extends TestBase {
stat = conn.createStatement(); stat = conn.createStatement();
stat.execute("SET CACHE_SIZE 1024"); stat.execute("SET CACHE_SIZE 1024");
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<100; i++) { for (int i = 0; i < 100; i++) {
stat.executeQuery("SELECT * FROM MAIN WHERE ID BETWEEN 40 AND 50"); stat.executeQuery("SELECT * FROM MAIN WHERE ID BETWEEN 40 AND 50");
stat.executeQuery("SELECT * FROM MAIN WHERE ID = " + random.nextInt(max)); stat.executeQuery("SELECT * FROM MAIN WHERE ID = " + random.nextInt(max));
if((i%10) == 0) { if ((i % 10) == 0) {
stat.executeQuery("SELECT * FROM TEST"); stat.executeQuery("SELECT * FROM TEST");
} }
} }
......
...@@ -10,15 +10,15 @@ import org.h2.test.TestBase; ...@@ -10,15 +10,15 @@ import org.h2.test.TestBase;
import org.h2.tools.CompressTool; import org.h2.tools.CompressTool;
public class TestCompress extends TestBase { public class TestCompress extends TestBase {
public void test() throws Exception { public void test() throws Exception {
if(config.big) { if (config.big) {
for(int i=0; i<100; i++) { for (int i = 0; i < 100; i++) {
test(i); test(i);
} }
for(int i=100; i<10000; i += (i+i+1)) { for (int i = 100; i < 10000; i += (i + i + 1)) {
test(i); test(i);
} }
} else { } else {
test(0); test(0);
test(1); test(1);
...@@ -27,17 +27,17 @@ public class TestCompress extends TestBase { ...@@ -27,17 +27,17 @@ public class TestCompress extends TestBase {
test(200); test(200);
} }
} }
void test(int len) throws Exception { void test(int len) throws Exception {
for(int pattern = 0; pattern < 3; pattern++) { for (int pattern = 0; pattern < 3; pattern++) {
byte[] buff = new byte[len]; byte[] buff = new byte[len];
switch(pattern) { switch (pattern) {
case 0: case 0:
// leave empty // leave empty
break; break;
case 1: { case 1: {
for(int x=0; x<len; x++) { for (int x = 0; x < len; x++) {
buff[x] = (byte)(x & 10); buff[x] = (byte) (x & 10);
} }
break; break;
} }
...@@ -47,11 +47,9 @@ public class TestCompress extends TestBase { ...@@ -47,11 +47,9 @@ public class TestCompress extends TestBase {
break; break;
} }
} }
String[] algorithm= new String[]{ String[] algorithm = new String[] { "LZF", "Deflate", "No" };
"LZF", "Deflate", "No"
};
CompressTool utils = CompressTool.getInstance(); CompressTool utils = CompressTool.getInstance();
for(int i=0; i<algorithm.length; i++) { for (int i = 0; i < algorithm.length; i++) {
byte[] out = utils.compress(buff, algorithm[i]); byte[] out = utils.compress(buff, algorithm[i]);
byte[] test = utils.expand(out); byte[] test = utils.expand(out);
check(test.length, buff.length); check(test.length, buff.length);
......
...@@ -22,21 +22,21 @@ import org.h2.value.ValueString; ...@@ -22,21 +22,21 @@ import org.h2.value.ValueString;
*/ */
public class TestDataPage extends TestBase implements DataHandler { public class TestDataPage extends TestBase implements DataHandler {
boolean text; boolean text;
public void test() throws Exception { public void test() throws Exception {
testAll(); testAll();
text = true; text = true;
testAll(); testAll();
} }
private void testAll() throws Exception { private void testAll() throws Exception {
DataPage page = DataPage.create(this, 128); DataPage page = DataPage.create(this, 128);
char[] data = new char[0x10000]; char[] data = new char[0x10000];
for(int i=0; i<data.length; i++) { for (int i = 0; i < data.length; i++) {
data[i] = (char)i; data[i] = (char) i;
} }
String s = new String(data); String s = new String(data);
page.writeString(s); page.writeString(s);
...@@ -45,7 +45,7 @@ public class TestDataPage extends TestBase implements DataHandler { ...@@ -45,7 +45,7 @@ public class TestDataPage extends TestBase implements DataHandler {
page.reset(); page.reset();
check(s, page.readString()); check(s, page.readString());
page.reset(); page.reset();
page.writeString("H\u1111!"); page.writeString("H\u1111!");
page.writeString("John\tBrack's \"how are you\" M\u1111ller"); page.writeString("John\tBrack's \"how are you\" M\u1111ller");
page.writeValue(ValueInt.get(10)); page.writeValue(ValueInt.get(10));
...@@ -60,8 +60,8 @@ public class TestDataPage extends TestBase implements DataHandler { ...@@ -60,8 +60,8 @@ public class TestDataPage extends TestBase implements DataHandler {
trace(page.readString()); trace(page.readString());
trace(page.readValue().getInt()); trace(page.readValue().getInt());
trace(page.readValue().getString()); trace(page.readValue().getString());
trace(""+page.readValue().getFloat()); trace("" + page.readValue().getFloat());
trace(""+page.readValue().getDouble()); trace("" + page.readValue().getDouble());
trace(page.readValue().toString()); trace(page.readValue().toString());
page.reset(); page.reset();
...@@ -98,7 +98,7 @@ public class TestDataPage extends TestBase implements DataHandler { ...@@ -98,7 +98,7 @@ public class TestDataPage extends TestBase implements DataHandler {
} }
public int getChecksum(byte[] data, int start, int end) { public int getChecksum(byte[] data, int start, int end) {
return end-start; return end - start;
} }
public void checkPowerOff() throws SQLException { public void checkPowerOff() throws SQLException {
......
...@@ -16,18 +16,14 @@ import org.h2.test.TestBase; ...@@ -16,18 +16,14 @@ import org.h2.test.TestBase;
public class TestExit extends TestBase implements DatabaseEventListener { public class TestExit extends TestBase implements DatabaseEventListener {
public void test() throws Exception { public void test() throws Exception {
if(config.codeCoverage) { if (config.codeCoverage) {
return; return;
} }
String classPath = "bin"+File.pathSeparator+"."; String classPath = "bin" + File.pathSeparator + ".";
deleteDb("exit"); deleteDb("exit");
String[] procDef; String[] procDef;
procDef = new String[]{ procDef = new String[] { "java", "-cp", classPath, getClass().getName(), "" + OPEN_WITH_CLOSE_ON_EXIT };
"java", "-cp", classPath,
getClass().getName(),
"" + OPEN_WITH_CLOSE_ON_EXIT
};
Process proc = Runtime.getRuntime().exec(procDef); Process proc = Runtime.getRuntime().exec(procDef);
while (true) { while (true) {
int ch = proc.getErrorStream().read(); int ch = proc.getErrorStream().read();
...@@ -44,50 +40,48 @@ public class TestExit extends TestBase implements DatabaseEventListener { ...@@ -44,50 +40,48 @@ public class TestExit extends TestBase implements DatabaseEventListener {
System.out.print((char) ch); System.out.print((char) ch);
} }
proc.waitFor(); proc.waitFor();
if(!getClosedFile().exists()) { if (!getClosedFile().exists()) {
error("did not close database"); error("did not close database");
} }
procDef = new String[]{ procDef = new String[] { "java", "-cp", classPath, getClass().getName(), "" + OPEN_WITHOUT_CLOSE_ON_EXIT };
"java", "-cp", classPath,
getClass().getName(),
"" + OPEN_WITHOUT_CLOSE_ON_EXIT
};
proc = Runtime.getRuntime().exec(procDef); proc = Runtime.getRuntime().exec(procDef);
proc.waitFor(); proc.waitFor();
if(getClosedFile().exists()) { if (getClosedFile().exists()) {
error("closed database"); error("closed database");
} }
} }
static final int OPEN_WITH_CLOSE_ON_EXIT = 1, OPEN_WITHOUT_CLOSE_ON_EXIT = 2; static final int OPEN_WITH_CLOSE_ON_EXIT = 1, OPEN_WITHOUT_CLOSE_ON_EXIT = 2;
public static Connection conn; public static Connection conn;
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
if(args.length==0) { if (args.length == 0) {
System.exit(1); System.exit(1);
} }
int action = Integer.parseInt(args[0]); int action = Integer.parseInt(args[0]);
TestExit app = new TestExit(); TestExit app = new TestExit();
app.execute(action); app.execute(action);
} }
void execute(int action) throws Exception { void execute(int action) throws Exception {
Class.forName("org.h2.Driver"); Class.forName("org.h2.Driver");
String url = ""; String url = "";
switch(action) { switch (action) {
case OPEN_WITH_CLOSE_ON_EXIT: case OPEN_WITH_CLOSE_ON_EXIT:
url = "jdbc:h2:"+baseDir+"/exit;database_event_listener='" + getClass().getName() + "';db_close_on_exit=true"; url = "jdbc:h2:" + baseDir + "/exit;database_event_listener='" + getClass().getName()
+ "';db_close_on_exit=true";
break; break;
case OPEN_WITHOUT_CLOSE_ON_EXIT: case OPEN_WITHOUT_CLOSE_ON_EXIT:
url = "jdbc:h2:"+baseDir+"/exit;database_event_listener='" + getClass().getName() + "';db_close_on_exit=false"; url = "jdbc:h2:" + baseDir + "/exit;database_event_listener='" + getClass().getName()
+ "';db_close_on_exit=false";
break; break;
} }
conn = open(url); conn = open(url);
Connection conn2 = open(url); Connection conn2 = open(url);
conn2.close(); conn2.close();
} }
private static Connection open(String url) throws Exception { private static Connection open(String url) throws Exception {
getClosedFile().delete(); getClosedFile().delete();
return DriverManager.getConnection(url, "sa", ""); return DriverManager.getConnection(url, "sa", "");
...@@ -102,16 +96,16 @@ public class TestExit extends TestBase implements DatabaseEventListener { ...@@ -102,16 +96,16 @@ public class TestExit extends TestBase implements DatabaseEventListener {
public void closingDatabase() { public void closingDatabase() {
try { try {
getClosedFile().createNewFile(); getClosedFile().createNewFile();
} catch(IOException e) { } catch (IOException e) {
TestBase.logError("error", e); TestBase.logError("error", e);
} }
} }
private static File getClosedFile() { private static File getClosedFile() {
return new File(baseDir + "/closed.txt"); return new File(baseDir + "/closed.txt");
} }
public void setProgress(int state, String name, int x, int max) { public void setProgress(int state, String name, int x, int max) {
} }
public void init(String url) { public void init(String url) {
......
...@@ -23,13 +23,14 @@ public class TestFileLock extends TestBase implements Runnable { ...@@ -23,13 +23,14 @@ public class TestFileLock extends TestBase implements Runnable {
private static volatile int locks; private static volatile int locks;
private static volatile boolean stop; private static volatile boolean stop;
public TestFileLock() {} public TestFileLock() {
}
public void test() throws Exception { public void test() throws Exception {
test(false); test(false);
test(true); test(true);
} }
void test(boolean allowSockets) throws Exception { void test(boolean allowSockets) throws Exception {
int threadCount = getSize(3, 5); int threadCount = getSize(3, 5);
wait = getSize(20, 200); wait = getSize(20, 200);
......
...@@ -10,7 +10,7 @@ import org.h2.test.TestBase; ...@@ -10,7 +10,7 @@ import org.h2.test.TestBase;
import org.h2.util.IntArray; import org.h2.util.IntArray;
public class TestIntArray extends TestBase { public class TestIntArray extends TestBase {
public void test() throws Exception { public void test() throws Exception {
testRandom(); testRandom();
} }
...@@ -19,11 +19,11 @@ public class TestIntArray extends TestBase { ...@@ -19,11 +19,11 @@ public class TestIntArray extends TestBase {
IntArray array = new IntArray(); IntArray array = new IntArray();
int[] test = new int[0]; int[] test = new int[0];
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<10000; i++) { for (int i = 0; i < 10000; i++) {
int idx = test.length == 0 ? 0 : random.nextInt(test.length); int idx = test.length == 0 ? 0 : random.nextInt(test.length);
int v = random.nextInt(100); int v = random.nextInt(100);
int op = random.nextInt(9); int op = random.nextInt(9);
switch(op) { switch (op) {
case 0: case 0:
array.add(idx, v); array.add(idx, v);
test = add(test, idx, v); test = add(test, idx, v);
...@@ -46,7 +46,7 @@ public class TestIntArray extends TestBase { ...@@ -46,7 +46,7 @@ public class TestIntArray extends TestBase {
check(a, b); check(a, b);
break; break;
case 4: case 4:
if(test.length > idx) { if (test.length > idx) {
check(array.get(idx), get(test, idx)); check(array.get(idx), get(test, idx));
} }
break; break;
...@@ -55,7 +55,7 @@ public class TestIntArray extends TestBase { ...@@ -55,7 +55,7 @@ public class TestIntArray extends TestBase {
test = remove(test, idx); test = remove(test, idx);
break; break;
case 6: case 6:
if(test.length > idx) { if (test.length > idx) {
v = test[idx]; v = test[idx];
array.removeValue(v); array.removeValue(v);
test = removeValue(test, v); test = removeValue(test, v);
...@@ -70,34 +70,34 @@ public class TestIntArray extends TestBase { ...@@ -70,34 +70,34 @@ public class TestIntArray extends TestBase {
break; break;
} }
check(array.size(), test.length); check(array.size(), test.length);
for(int j=0; j<test.length; j++) { for (int j = 0; j < test.length; j++) {
check(test[j], array.get(j)); check(test[j], array.get(j));
} }
} }
} }
int[] add(int[] array, int i, int value) { int[] add(int[] array, int i, int value) {
int[] a2 = new int[array.length+1]; int[] a2 = new int[array.length + 1];
System.arraycopy(array, 0, a2, 0, array.length); System.arraycopy(array, 0, a2, 0, array.length);
if(i < array.length) { if (i < array.length) {
System.arraycopy(a2, i, a2, i+1, a2.length - i - 1); System.arraycopy(a2, i, a2, i + 1, a2.length - i - 1);
} }
array = a2; array = a2;
array[i] = value; array[i] = value;
return array; return array;
} }
int[] add(int[] array, int value) { int[] add(int[] array, int value) {
return add(array, array.length, value); return add(array, array.length, value);
} }
int[] addValueSorted(int[] array, int value) { int[] addValueSorted(int[] array, int value) {
for(int i=0; i<array.length; i++) { for (int i = 0; i < array.length; i++) {
if(array[i] < value) { if (array[i] < value) {
continue; continue;
} }
if(array[i] == value) { if (array[i] == value) {
return array; return array;
} else { } else {
return add(array, i, value); return add(array, i, value);
...@@ -105,32 +105,32 @@ public class TestIntArray extends TestBase { ...@@ -105,32 +105,32 @@ public class TestIntArray extends TestBase {
} }
return add(array, value); return add(array, value);
} }
int findNextValueIndex(int[] array, int value) { int findNextValueIndex(int[] array, int value) {
for(int i=0; i<array.length; i++) { for (int i = 0; i < array.length; i++) {
if(array[i] >= value) { if (array[i] >= value) {
return i; return i;
} }
} }
return array.length; return array.length;
} }
int get(int[] array, int i) { int get(int[] array, int i) {
return array[i]; return array[i];
} }
int[] remove(int[] array, int i) { int[] remove(int[] array, int i) {
int[] a2 = new int[array.length-1]; int[] a2 = new int[array.length - 1];
System.arraycopy(array, 0, a2, 0, i); System.arraycopy(array, 0, a2, 0, i);
if(i < a2.length) { if (i < a2.length) {
System.arraycopy(array, i+1, a2, i, array.length - i - 1); System.arraycopy(array, i + 1, a2, i, array.length - i - 1);
} }
return a2; return a2;
} }
int[] removeValue(int[] array, int value) { int[] removeValue(int[] array, int value) {
for(int i=0; i<array.length; i++) { for (int i = 0; i < array.length; i++) {
if(array[i] == value) { if (array[i] == value) {
return remove(array, i); return remove(array, i);
} }
} }
...@@ -141,14 +141,14 @@ public class TestIntArray extends TestBase { ...@@ -141,14 +141,14 @@ public class TestIntArray extends TestBase {
array[i] = value; array[i] = value;
return array; return array;
} }
int size(int[] array) { int size(int[] array) {
return array.length; return array.length;
} }
int[] sort(int[] array) { int[] sort(int[] array) {
Arrays.sort(array); Arrays.sort(array);
return array; return array;
} }
} }
...@@ -30,11 +30,11 @@ public class TestIntIntHashMap extends TestBase { ...@@ -30,11 +30,11 @@ public class TestIntIntHashMap extends TestBase {
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
map.put(x[i], i); map.put(x[i], i);
} }
for (int i = 0; i < len; i ++) { for (int i = 0; i < len; i++) {
if (map.get(x[i]) != i) { if (map.get(x[i]) != i) {
throw new Error("get " + x[i] + " = " + map.get(i) + " should be " + i); throw new Error("get " + x[i] + " = " + map.get(i) + " should be " + i);
} }
} }
for (int i = 1; i < len; i += 2) { for (int i = 1; i < len; i += 2) {
map.remove(x[i]); map.remove(x[i]);
} }
...@@ -46,7 +46,7 @@ public class TestIntIntHashMap extends TestBase { ...@@ -46,7 +46,7 @@ public class TestIntIntHashMap extends TestBase {
for (int i = 1; i < len; i += 2) { for (int i = 1; i < len; i += 2) {
map.put(x[i], i); map.put(x[i], i);
} }
for (int i = 0; i < len; i ++) { for (int i = 0; i < len; i++) {
if (map.get(x[i]) != i) { if (map.get(x[i]) != i) {
throw new Error("get " + x[i] + " = " + map.get(i) + " should be " + i); throw new Error("get " + x[i] + " = " + map.get(i) + " should be " + i);
} }
......
...@@ -31,50 +31,50 @@ public class TestOverflow extends TestBase { ...@@ -31,50 +31,50 @@ public class TestOverflow extends TestBase {
private void test(int type, long min, long max) throws Exception { private void test(int type, long min, long max) throws Exception {
values = new ArrayList(); values = new ArrayList();
this.type = type; this.type = type;
this.min = new BigInteger(""+min); this.min = new BigInteger("" + min);
this.max = new BigInteger(""+max); this.max = new BigInteger("" + max);
add(0); add(0);
add(min); add(min);
add(max); add(max);
add(max-1); add(max - 1);
add(min+1); add(min + 1);
add(1); add(1);
add(-1); add(-1);
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<40; i++) { for (int i = 0; i < 40; i++) {
if(max > Integer.MAX_VALUE) { if (max > Integer.MAX_VALUE) {
add(random.nextLong()); add(random.nextLong());
} else { } else {
add((random.nextBoolean() ? 1 : -1) * random.nextInt((int)max)); add((random.nextBoolean() ? 1 : -1) * random.nextInt((int) max));
} }
} }
for(int a=0; a<values.size(); a++) { for (int a = 0; a < values.size(); a++) {
for(int b=0; b<values.size(); b++) { for (int b = 0; b < values.size(); b++) {
Value va = (Value) values.get(a); Value va = (Value) values.get(a);
Value vb = (Value) values.get(b); Value vb = (Value) values.get(b);
testValues(va, vb); testValues(va, vb);
} }
} }
} }
void checkIfExpected(String a, String b) throws Exception { void checkIfExpected(String a, String b) throws Exception {
if(successExpected) { if (successExpected) {
check(a, b); check(a, b);
} }
} }
void onSuccess() throws Exception { void onSuccess() throws Exception {
if(!successExpected && SysProperties.OVERFLOW_EXCEPTIONS) { if (!successExpected && SysProperties.OVERFLOW_EXCEPTIONS) {
error("unexpected success"); error("unexpected success");
} }
} }
void onError() throws Exception { void onError() throws Exception {
if(successExpected) { if (successExpected) {
error("unexpected error"); error("unexpected error");
} }
} }
private void testValues(Value va, Value vb) throws Exception { private void testValues(Value va, Value vb) throws Exception {
BigInteger a = new BigInteger(va.getString()); BigInteger a = new BigInteger(va.getString());
BigInteger b = new BigInteger(vb.getString()); BigInteger b = new BigInteger(vb.getString());
...@@ -82,32 +82,32 @@ public class TestOverflow extends TestBase { ...@@ -82,32 +82,32 @@ public class TestOverflow extends TestBase {
try { try {
checkIfExpected(va.negate().getString(), a.negate().toString()); checkIfExpected(va.negate().getString(), a.negate().toString());
onSuccess(); onSuccess();
} catch(SQLException e) { } catch (SQLException e) {
onError(); onError();
} }
successExpected = inRange(a.add(b)); successExpected = inRange(a.add(b));
try { try {
checkIfExpected(va.add(vb).getString(), a.add(b).toString()); checkIfExpected(va.add(vb).getString(), a.add(b).toString());
onSuccess(); onSuccess();
} catch(SQLException e) { } catch (SQLException e) {
onError(); onError();
} }
successExpected = inRange(a.subtract(b)); successExpected = inRange(a.subtract(b));
try { try {
checkIfExpected(va.subtract(vb).getString(), a.subtract(b).toString()); checkIfExpected(va.subtract(vb).getString(), a.subtract(b).toString());
onSuccess(); onSuccess();
} catch(SQLException e) { } catch (SQLException e) {
onError(); onError();
} }
successExpected = inRange(a.multiply(b)); successExpected = inRange(a.multiply(b));
try { try {
checkIfExpected(va.multiply(vb).getString(), a.multiply(b).toString()); checkIfExpected(va.multiply(vb).getString(), a.multiply(b).toString());
onSuccess(); onSuccess();
} catch(SQLException e) { } catch (SQLException e) {
onError(); onError();
} }
} }
private boolean inRange(BigInteger v) { private boolean inRange(BigInteger v) {
return v.compareTo(min) >= 0 && v.compareTo(max) <= 0; return v.compareTo(min) >= 0 && v.compareTo(max) <= 0;
} }
...@@ -115,5 +115,5 @@ public class TestOverflow extends TestBase { ...@@ -115,5 +115,5 @@ public class TestOverflow extends TestBase {
private void add(long l) throws SQLException { private void add(long l) throws SQLException {
values.add(ValueString.get("" + l).convertTo(type)); values.add(ValueString.get("" + l).convertTo(type));
} }
} }
...@@ -12,7 +12,7 @@ import org.h2.value.CompareMode; ...@@ -12,7 +12,7 @@ import org.h2.value.CompareMode;
* @author Thomas * @author Thomas
*/ */
public class TestPattern extends TestBase { public class TestPattern extends TestBase {
public void test() throws Exception { public void test() throws Exception {
CompareMode mode = new CompareMode(null, null); CompareMode mode = new CompareMode(null, null);
CompareLike comp = new CompareLike(mode, null, null, null, false); CompareLike comp = new CompareLike(mode, null, null, null, false);
...@@ -21,41 +21,41 @@ public class TestPattern extends TestBase { ...@@ -21,41 +21,41 @@ public class TestPattern extends TestBase {
test(comp, "A", "A%%"); test(comp, "A", "A%%");
test(comp, "A_A", "%\\_%"); test(comp, "A_A", "%\\_%");
for(int i=0; i<10000; i++) { for (int i = 0; i < 10000; i++) {
String pattern=getRandomPattern(); String pattern = getRandomPattern();
String value=getRandomValue(); String value = getRandomValue();
test(comp, value, pattern); test(comp, value, pattern);
} }
} }
void test(CompareLike comp, String value, String pattern) throws Exception { void test(CompareLike comp, String value, String pattern) throws Exception {
String regexp = initPatternRegexp(pattern, '\\'); String regexp = initPatternRegexp(pattern, '\\');
boolean resultRegexp = value.matches(regexp); boolean resultRegexp = value.matches(regexp);
boolean result = comp.test(pattern, value, '\\'); boolean result = comp.test(pattern, value, '\\');
if(result != resultRegexp) { if (result != resultRegexp) {
error("Error: >"+value+"< LIKE >"+pattern+"< result="+result+" resultReg="+resultRegexp); error("Error: >" + value + "< LIKE >" + pattern + "< result=" + result + " resultReg=" + resultRegexp);
} }
} }
static String getRandomValue() { static String getRandomValue() {
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
int len = (int)(Math.random() * 10); int len = (int) (Math.random() * 10);
String s = "AB_%\\"; String s = "AB_%\\";
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
buff.append(s.charAt((int)(Math.random()*s.length()))); buff.append(s.charAt((int) (Math.random() * s.length())));
} }
return buff.toString(); return buff.toString();
} }
static String getRandomPattern() { static String getRandomPattern() {
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
int len = (int)(Math.random() * 4); int len = (int) (Math.random() * 4);
String s = "A%_\\"; String s = "A%_\\";
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
char c = s.charAt((int)(Math.random()*s.length())); char c = s.charAt((int) (Math.random() * s.length()));
if((c == '_' || c == '%') && Math.random() > 0.5) { if ((c == '_' || c == '%') && Math.random() > 0.5) {
buff.append('\\'); buff.append('\\');
} else if(c=='\\') { } else if (c == '\\') {
buff.append(c); buff.append(c);
} }
buff.append(c); buff.append(c);
...@@ -79,7 +79,7 @@ public class TestPattern extends TestBase { ...@@ -79,7 +79,7 @@ public class TestPattern extends TestBase {
buff.append(".*"); buff.append(".*");
} else if (c == '_') { } else if (c == '_') {
buff.append('.'); buff.append('.');
} else if(c=='\\'){ } else if (c == '\\') {
buff.append("\\\\"); buff.append("\\\\");
} else { } else {
buff.append(c); buff.append(c);
...@@ -87,8 +87,8 @@ public class TestPattern extends TestBase { ...@@ -87,8 +87,8 @@ public class TestPattern extends TestBase {
// TODO regexp: there are other chars that need escaping // TODO regexp: there are other chars that need escaping
} }
String regexp = buff.toString(); String regexp = buff.toString();
// System.out.println("regexp = " + regexp); // System.out.println("regexp = " + regexp);
return regexp; return regexp;
} }
} }
...@@ -16,39 +16,38 @@ public class TestSampleApps extends TestBase { ...@@ -16,39 +16,38 @@ public class TestSampleApps extends TestBase {
public void test() throws Exception { public void test() throws Exception {
testApp(org.h2.samples.Compact.class, null, "Compacting...\nDone."); testApp(org.h2.samples.Compact.class, null, "Compacting...\nDone.");
testApp(org.h2.samples.CsvSample.class, null, testApp(org.h2.samples.CsvSample.class, null, "NAME: Bob Meier\n" + "EMAIL: bob.meier@abcde.abc\n"
"NAME: Bob Meier\n" + "PHONE: +41123456789\n\n" + "NAME: John Jones\n" + "EMAIL: john.jones@abcde.abc\n"
+ "EMAIL: bob.meier@abcde.abc\n" + "PHONE: +41976543210\n");
+"PHONE: +41123456789\n\n" testApp(org.h2.samples.Function.class, null,
+"NAME: John Jones\n"
+"EMAIL: john.jones@abcde.abc\n"
+"PHONE: +41976543210\n");
testApp(org.h2.samples.Function.class, null,
"2 is prime\n3 is prime\n5 is prime\n7 is prime\n11 is prime\n13 is prime\n17 is prime\n19 is prime"); "2 is prime\n3 is prime\n5 is prime\n7 is prime\n11 is prime\n13 is prime\n17 is prime\n19 is prime");
testApp(org.h2.samples.SecurePassword.class, null, "Hello"); testApp(org.h2.samples.SecurePassword.class, null, "Hello");
// TODO test ShowProgress (percent numbers are hardware specific) // TODO test ShowProgress (percent numbers are hardware specific)
// TODO test ShutdownServer (server needs to be started in a separate process) // TODO test ShutdownServer (server needs to be started in a separate
// process)
testApp(org.h2.samples.TriggerSample.class, null, "The sum is 20.00"); testApp(org.h2.samples.TriggerSample.class, null, "The sum is 20.00");
// tools // tools
testApp(org.h2.tools.ChangePassword.class, new String[]{"-?"}, "java org.h2.tools.ChangePassword [-dir <dir>] " testApp(org.h2.tools.ChangePassword.class, new String[] { "-?" },
+ "[-db <database>] [-cipher <cipher>] [-decrypt <pwd>] [-encrypt <pwd>] [-quiet]"); "java org.h2.tools.ChangePassword [-dir <dir>] "
+ "[-db <database>] [-cipher <cipher>] [-decrypt <pwd>] [-encrypt <pwd>] [-quiet]");
testApp(org.h2.tools.ChangePassword.class, null, "java org.h2.tools.ChangePassword [-dir <dir>] " testApp(org.h2.tools.ChangePassword.class, null, "java org.h2.tools.ChangePassword [-dir <dir>] "
+ "[-db <database>] [-cipher <cipher>] [-decrypt <pwd>] [-encrypt <pwd>] [-quiet]"); + "[-db <database>] [-cipher <cipher>] [-decrypt <pwd>] [-encrypt <pwd>] [-quiet]");
testApp(org.h2.tools.DeleteDbFiles.class, new String[]{"-?"}, "java org.h2.tools.DeleteDbFiles [-dir <dir>] [-db <database>] [-quiet]"); testApp(org.h2.tools.DeleteDbFiles.class, new String[] { "-?" },
"java org.h2.tools.DeleteDbFiles [-dir <dir>] [-db <database>] [-quiet]");
} }
private void testApp(Class clazz, String[] args, String expected) throws Exception { private void testApp(Class clazz, String[] args, String expected) throws Exception {
DeleteDbFiles.execute("data", "test", true); DeleteDbFiles.execute("data", "test", true);
Method m = clazz.getMethod("main", new Class[]{String[].class}); Method m = clazz.getMethod("main", new Class[] { String[].class });
PrintStream oldOut = System.out, oldErr = System.err; PrintStream oldOut = System.out, oldErr = System.err;
ByteArrayOutputStream buff = new ByteArrayOutputStream(); ByteArrayOutputStream buff = new ByteArrayOutputStream();
PrintStream out = new PrintStream(buff, false, "UTF-8"); PrintStream out = new PrintStream(buff, false, "UTF-8");
System.setOut(out); System.setOut(out);
System.setErr(out); System.setErr(out);
try { try {
m.invoke(null, new Object[]{args}); m.invoke(null, new Object[] { args });
} catch(Throwable e) { } catch (Throwable e) {
TestBase.logError("error", e); TestBase.logError("error", e);
} }
out.flush(); out.flush();
......
...@@ -20,24 +20,24 @@ public class TestScriptReader extends TestBase { ...@@ -20,24 +20,24 @@ public class TestScriptReader extends TestBase {
private void testRandom() throws Exception { private void testRandom() throws Exception {
int len = getSize(1000, 10000); int len = getSize(1000, 10000);
Random random = new Random(10); Random random = new Random(10);
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
int l = random.nextInt(10); int l = random.nextInt(10);
String[] sql = new String[l]; String[] sql = new String[l];
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
sql[j] = randomStatement(random); sql[j] = randomStatement(random);
buff.append(sql[j]); buff.append(sql[j]);
if(j<l - 1) { if (j < l - 1) {
buff.append(";"); buff.append(";");
} }
} }
String s = buff.toString(); String s = buff.toString();
StringReader reader = new StringReader(s); StringReader reader = new StringReader(s);
ScriptReader source = new ScriptReader(reader); ScriptReader source = new ScriptReader(reader);
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
String e = source.readStatement(); String e = source.readStatement();
String c = sql[j]; String c = sql[j];
if(c.length() == 0 && j == l-1) { if (c.length() == 0 && j == l - 1) {
c = null; c = null;
} }
check(e, c); check(e, c);
...@@ -45,25 +45,25 @@ public class TestScriptReader extends TestBase { ...@@ -45,25 +45,25 @@ public class TestScriptReader extends TestBase {
check(source.readStatement(), null); check(source.readStatement(), null);
} }
} }
private String randomStatement(Random random) { private String randomStatement(Random random) {
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
int len = random.nextInt(5); int len = random.nextInt(5);
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
switch(random.nextInt(10)) { switch (random.nextInt(10)) {
case 0: { case 0: {
int l= random.nextInt(4); int l = random.nextInt(4);
String[] ch=new String[]{"\n", "\r", " ", "*", "a", "0"}; String[] ch = new String[] { "\n", "\r", " ", "*", "a", "0" };
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
break; break;
} }
case 1: { case 1: {
buff.append('\''); buff.append('\'');
int l= random.nextInt(4); int l = random.nextInt(4);
String[] ch=new String[]{";", "\n", "\r", "--", "//", "/", "-", "*", "/*", "*/", "\""}; String[] ch = new String[] { ";", "\n", "\r", "--", "//", "/", "-", "*", "/*", "*/", "\"" };
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
buff.append('\''); buff.append('\'');
...@@ -71,9 +71,9 @@ public class TestScriptReader extends TestBase { ...@@ -71,9 +71,9 @@ public class TestScriptReader extends TestBase {
} }
case 2: { case 2: {
buff.append('"'); buff.append('"');
int l= random.nextInt(4); int l = random.nextInt(4);
String[] ch=new String[]{";", "\n", "\r", "--", "//", "/", "-", "*", "/*", "*/", "\'"}; String[] ch = new String[] { ";", "\n", "\r", "--", "//", "/", "-", "*", "/*", "*/", "\'" };
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
buff.append('"'); buff.append('"');
...@@ -81,17 +81,17 @@ public class TestScriptReader extends TestBase { ...@@ -81,17 +81,17 @@ public class TestScriptReader extends TestBase {
} }
case 3: { case 3: {
buff.append('-'); buff.append('-');
if(random.nextBoolean()) { if (random.nextBoolean()) {
String[] ch=new String[]{"\n", "\r", "*", "a", " "}; String[] ch = new String[] { "\n", "\r", "*", "a", " " };
int l= 1 + random.nextInt(4); int l = 1 + random.nextInt(4);
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
} else { } else {
buff.append('-'); buff.append('-');
String[] ch=new String[]{";", "-", "//", "/*", "*/", "a"}; String[] ch = new String[] { ";", "-", "//", "/*", "*/", "a" };
int l= random.nextInt(4); int l = random.nextInt(4);
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
buff.append('\n'); buff.append('\n');
...@@ -100,17 +100,17 @@ public class TestScriptReader extends TestBase { ...@@ -100,17 +100,17 @@ public class TestScriptReader extends TestBase {
} }
case 4: { case 4: {
buff.append('/'); buff.append('/');
if(random.nextBoolean()) { if (random.nextBoolean()) {
String[] ch=new String[]{"\n", "\r", "a", " ", "- "}; String[] ch = new String[] { "\n", "\r", "a", " ", "- " };
int l= 1 + random.nextInt(4); int l = 1 + random.nextInt(4);
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
} else { } else {
buff.append('*'); buff.append('*');
String[] ch=new String[]{";", "-", "//", "/* ", "--", "\n", "\r", "a"}; String[] ch = new String[] { ";", "-", "//", "/* ", "--", "\n", "\r", "a" };
int l= random.nextInt(4); int l = random.nextInt(4);
for(int j=0; j<l; j++) { for (int j = 0; j < l; j++) {
buff.append(ch[random.nextInt(ch.length)]); buff.append(ch[random.nextInt(ch.length)]);
} }
buff.append("*/"); buff.append("*/");
...@@ -123,16 +123,15 @@ public class TestScriptReader extends TestBase { ...@@ -123,16 +123,15 @@ public class TestScriptReader extends TestBase {
} }
private void testCommon() throws Exception { private void testCommon() throws Exception {
String s = String s = "a;';';\";\";--;\n;/*;\n*/;//;\na;";
"a;';';\";\";--;\n;/*;\n*/;//;\na;";
StringReader reader = new StringReader(s); StringReader reader = new StringReader(s);
ScriptReader source = new ScriptReader(reader); ScriptReader source = new ScriptReader(reader);
check(source.readStatement(),"a"); check(source.readStatement(), "a");
check(source.readStatement(),"';'"); check(source.readStatement(), "';'");
check(source.readStatement(),"\";\""); check(source.readStatement(), "\";\"");
check(source.readStatement(),"--;\n"); check(source.readStatement(), "--;\n");
check(source.readStatement(),"/*;\n*/"); check(source.readStatement(), "/*;\n*/");
check(source.readStatement(),"//;\na"); check(source.readStatement(), "//;\na");
check(source.readStatement(), null); check(source.readStatement(), null);
source.close(); source.close();
} }
......
...@@ -10,19 +10,18 @@ import org.h2.security.XTEA; ...@@ -10,19 +10,18 @@ import org.h2.security.XTEA;
import org.h2.test.TestBase; import org.h2.test.TestBase;
import org.h2.util.ByteUtils; import org.h2.util.ByteUtils;
/** /**
* @author Thomas * @author Thomas
*/ */
public class TestSecurity extends TestBase { public class TestSecurity extends TestBase {
public void test() throws Exception { public void test() throws Exception {
testSHA(); testSHA();
testAES(); testAES();
testXTEA(); testXTEA();
} }
public void testSHA() throws Exception { public void testSHA() throws Exception {
SHA256 sha = new SHA256(); SHA256 sha = new SHA256();
testOneSHA(sha); testOneSHA(sha);
...@@ -31,29 +30,26 @@ public class TestSecurity extends TestBase { ...@@ -31,29 +30,26 @@ public class TestSecurity extends TestBase {
private String getHashString(SHA256 sha, byte[] data) { private String getHashString(SHA256 sha, byte[] data) {
byte[] result = sha.getHash(data); byte[] result = sha.getHash(data);
return ByteUtils.convertBytesToString(result); return ByteUtils.convertBytesToString(result);
} }
private void testOneSHA(SHA256 sha) throws Exception { private void testOneSHA(SHA256 sha) throws Exception {
if (!getHashString(sha, new byte[] { }) if (!getHashString(sha, new byte[] {}).equals(
.equals( "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) {
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) {
throw new Exception("x"); throw new Exception("x");
} }
if (!getHashString(sha, new byte[] { 0x19 }) if (!getHashString(sha, new byte[] { 0x19 }).equals(
.equals( "68aa2e2ee5dff96e3355e6c7ee373e3d6a4e17f75f9518d843709c0c9bc3e3d4")) {
"68aa2e2ee5dff96e3355e6c7ee373e3d6a4e17f75f9518d843709c0c9bc3e3d4")) {
throw new Exception("x"); throw new Exception("x");
} }
if (!getHashString(sha, new byte[] { (byte)0xe3, (byte)0xd7, 0x25, 0x70, (byte)0xdc, (byte)0xdd, 0x78, 0x7c, (byte)0xe3, (byte)0x88, 0x7a, (byte)0xb2, (byte)0xcd, 0x68, 0x46, 0x52 }) if (!getHashString(
.equals( sha,
"175ee69b02ba9b58e2b0a5fd13819cea573f3940a94f825128cf4209beabb4e8")) { new byte[] { (byte) 0xe3, (byte) 0xd7, 0x25, 0x70, (byte) 0xdc, (byte) 0xdd, 0x78, 0x7c, (byte) 0xe3,
(byte) 0x88, 0x7a, (byte) 0xb2, (byte) 0xcd, 0x68, 0x46, 0x52 }).equals(
"175ee69b02ba9b58e2b0a5fd13819cea573f3940a94f825128cf4209beabb4e8")) {
throw new Exception("x"); throw new Exception("x");
} }
} }
public void testXTEA() throws Exception { public void testXTEA() throws Exception {
byte[] test = new byte[4096]; byte[] test = new byte[4096];
XTEA xtea = new XTEA(); XTEA xtea = new XTEA();
...@@ -61,25 +57,24 @@ public class TestSecurity extends TestBase { ...@@ -61,25 +57,24 @@ public class TestSecurity extends TestBase {
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
xtea.decryptBlock(test, test, 0); xtea.decryptBlock(test, test, 0);
} }
} }
private void testAES() throws Exception { private void testAES() throws Exception {
AES test = new AES(); AES test = new AES();
test.setKey(ByteUtils.convertStringToBytes("000102030405060708090A0B0C0D0E0F")); test.setKey(ByteUtils.convertStringToBytes("000102030405060708090A0B0C0D0E0F"));
byte[] in = new byte[128]; byte[] in = new byte[128];
byte[] enc = new byte[128]; byte[] enc = new byte[128];
test.encrypt(enc, 0, 128); test.encrypt(enc, 0, 128);
test.decrypt(enc, 0, 128); test.decrypt(enc, 0, 128);
if(ByteUtils.compareNotNull(in, enc)!=0) { if (ByteUtils.compareNotNull(in, enc) != 0) {
throw new Error("hey!"); throw new Error("hey!");
} }
for (int i = 0; i < 10; i++) { for (int i = 0; i < 10; i++) {
test.encrypt(in, 0, 128); test.encrypt(in, 0, 128);
test.decrypt(enc, 0, 128); test.decrypt(enc, 0, 128);
} }
} }
} }
...@@ -17,42 +17,42 @@ public class TestStreams extends TestBase { ...@@ -17,42 +17,42 @@ public class TestStreams extends TestBase {
public void test() throws Exception { public void test() throws Exception {
testLZFStreams(); testLZFStreams();
} }
byte[] getRandomBytes(Random random) { byte[] getRandomBytes(Random random) {
int[] sizes = new int[]{0, 1, random.nextInt(1000), random.nextInt(100000), random.nextInt(1000000)}; int[] sizes = new int[] { 0, 1, random.nextInt(1000), random.nextInt(100000), random.nextInt(1000000) };
int size = sizes[random.nextInt(sizes.length)]; int size = sizes[random.nextInt(sizes.length)];
byte[] buffer = new byte[size]; byte[] buffer = new byte[size];
if(random.nextInt(5) == 1) { if (random.nextInt(5) == 1) {
random.nextBytes(buffer); random.nextBytes(buffer);
} else if(random.nextBoolean()) { } else if (random.nextBoolean()) {
int patternLen = random.nextInt(100)+1; int patternLen = random.nextInt(100) + 1;
for(int j=0; j<size; j++) { for (int j = 0; j < size; j++) {
buffer[j] = (byte)(j % patternLen); buffer[j] = (byte) (j % patternLen);
} }
} }
return buffer; return buffer;
} }
private void testLZFStreams() throws Exception { private void testLZFStreams() throws Exception {
Random random = new Random(1); Random random = new Random(1);
int max = getSize(100, 1000); int max = getSize(100, 1000);
for(int i=0; i<max; i+=3) { for (int i = 0; i < max; i += 3) {
byte[] buffer = getRandomBytes(random); byte[] buffer = getRandomBytes(random);
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
LZFOutputStream comp = new LZFOutputStream(out); LZFOutputStream comp = new LZFOutputStream(out);
if(random.nextInt(10) == 1) { if (random.nextInt(10) == 1) {
comp.write(buffer); comp.write(buffer);
} else { } else {
for(int j=0; j<buffer.length;) { for (int j = 0; j < buffer.length;) {
int[] sizes = new int[]{0, 1, random.nextInt(100), random.nextInt(100000)}; int[] sizes = new int[] { 0, 1, random.nextInt(100), random.nextInt(100000) };
int size = sizes[random.nextInt(sizes.length)]; int size = sizes[random.nextInt(sizes.length)];
size = Math.min(size, buffer.length - j); size = Math.min(size, buffer.length - j);
if(size == 1) { if (size == 1) {
comp.write(buffer[j]); comp.write(buffer[j]);
} else { } else {
comp.write(buffer, j, size); comp.write(buffer, j, size);
} }
j+=size; j += size;
} }
} }
comp.close(); comp.close();
...@@ -60,19 +60,19 @@ public class TestStreams extends TestBase { ...@@ -60,19 +60,19 @@ public class TestStreams extends TestBase {
ByteArrayInputStream in = new ByteArrayInputStream(compressed); ByteArrayInputStream in = new ByteArrayInputStream(compressed);
LZFInputStream decompress = new LZFInputStream(in); LZFInputStream decompress = new LZFInputStream(in);
byte[] test = new byte[buffer.length]; byte[] test = new byte[buffer.length];
for(int j=0; j<buffer.length;) { for (int j = 0; j < buffer.length;) {
int[] sizes = new int[]{0, 1, random.nextInt(100), random.nextInt(100000)}; int[] sizes = new int[] { 0, 1, random.nextInt(100), random.nextInt(100000) };
int size = sizes[random.nextInt(sizes.length)]; int size = sizes[random.nextInt(sizes.length)];
if(size == 1) { if (size == 1) {
int x = decompress.read(); int x = decompress.read();
if(x < 0) { if (x < 0) {
break; break;
} }
test[j++] = (byte)x; test[j++] = (byte) x;
} else { } else {
size = Math.min(size, test.length-j); size = Math.min(size, test.length - j);
int l = decompress.read(test, j, size); int l = decompress.read(test, j, size);
if(l < 0) { if (l < 0) {
break; break;
} else { } else {
j += l; j += l;
......
...@@ -10,27 +10,27 @@ import org.h2.test.TestBase; ...@@ -10,27 +10,27 @@ import org.h2.test.TestBase;
import org.h2.util.StringCache; import org.h2.util.StringCache;
public class TestStringCache extends TestBase { public class TestStringCache extends TestBase {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
new TestStringCache().runBenchmark(); new TestStringCache().runBenchmark();
} }
private void runBenchmark() throws Exception { private void runBenchmark() throws Exception {
returnNew = false; returnNew = false;
for(int i=0; i<6; i++) { for (int i = 0; i < 6; i++) {
useIntern = (i % 2) == 1; useIntern = (i % 2) == 1;
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
testSingleThread(100000); testSingleThread(100000);
time = System.currentTimeMillis()-time; time = System.currentTimeMillis() - time;
System.out.println(time + " ms (useIntern=" + useIntern+")"); System.out.println(time + " ms (useIntern=" + useIntern + ")");
} }
} }
private Random random = new Random(1); private Random random = new Random(1);
private String[] some = new String[] { null, "", "ABC", "this is a medium sized string", "1", "2"}; private String[] some = new String[] { null, "", "ABC", "this is a medium sized string", "1", "2" };
private volatile boolean stop; private volatile boolean stop;
private boolean returnNew; private boolean returnNew;
private boolean useIntern; private boolean useIntern;
public void test() throws Exception { public void test() throws Exception {
...@@ -43,39 +43,39 @@ public class TestStringCache extends TestBase { ...@@ -43,39 +43,39 @@ public class TestStringCache extends TestBase {
testSingleThread(getSize(5000, 20000)); testSingleThread(getSize(5000, 20000));
testMultiThreads(); testMultiThreads();
} }
String randomString() { String randomString() {
if(random.nextBoolean()) { if (random.nextBoolean()) {
String s = some[random.nextInt(some.length)]; String s = some[random.nextInt(some.length)];
if(s != null && random.nextBoolean()) { if (s != null && random.nextBoolean()) {
s = new String(s); s = new String(s);
} }
return s; return s;
} else { } else {
int len = random.nextBoolean() ? random.nextInt(1000) : random.nextInt(10); int len = random.nextBoolean() ? random.nextInt(1000) : random.nextInt(10);
StringBuffer buff = new StringBuffer(len); StringBuffer buff = new StringBuffer(len);
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
buff.append(random.nextInt(0xfff)); buff.append(random.nextInt(0xfff));
} }
return buff.toString(); return buff.toString();
} }
} }
void testString() { void testString() {
String a = randomString(); String a = randomString();
if(returnNew) { if (returnNew) {
String b = StringCache.getNew(a); String b = StringCache.getNew(a);
try { try {
check(a, b); check(a, b);
} catch (Exception e) { } catch (Exception e) {
TestBase.logError("error", e); TestBase.logError("error", e);
} }
if(a != null && a == b && a.length()>0) { if (a != null && a == b && a.length() > 0) {
throw new Error("a=" + System.identityHashCode(a) + " b=" + System.identityHashCode(b)); throw new Error("a=" + System.identityHashCode(a) + " b=" + System.identityHashCode(b));
} }
} else { } else {
String b; String b;
if(useIntern) { if (useIntern) {
b = a == null ? null : a.intern(); b = a == null ? null : a.intern();
} else { } else {
b = StringCache.get(a); b = StringCache.get(a);
...@@ -87,9 +87,9 @@ public class TestStringCache extends TestBase { ...@@ -87,9 +87,9 @@ public class TestStringCache extends TestBase {
} }
} }
} }
private void testSingleThread(int len) throws Exception { private void testSingleThread(int len) throws Exception {
for(int i=0; i<len; i++) { for (int i = 0; i < len; i++) {
testString(); testString();
} }
} }
...@@ -97,23 +97,23 @@ public class TestStringCache extends TestBase { ...@@ -97,23 +97,23 @@ public class TestStringCache extends TestBase {
private void testMultiThreads() throws Exception { private void testMultiThreads() throws Exception {
int threadCount = getSize(3, 100); int threadCount = getSize(3, 100);
Thread[] threads = new Thread[threadCount]; Thread[] threads = new Thread[threadCount];
for(int i=0; i<threadCount; i++) { for (int i = 0; i < threadCount; i++) {
Thread t = new Thread(new Runnable() { Thread t = new Thread(new Runnable() {
public void run() { public void run() {
while(!stop) { while (!stop) {
testString(); testString();
} }
} }
}); });
threads[i] = t; threads[i] = t;
} }
for(int i=0; i<threadCount; i++) { for (int i = 0; i < threadCount; i++) {
threads[i].start(); threads[i].start();
} }
int wait = getSize(200, 2000); int wait = getSize(200, 2000);
Thread.sleep(wait); Thread.sleep(wait);
stop = true; stop = true;
for(int i=0; i<threadCount; i++) { for (int i = 0; i < threadCount; i++) {
threads[i].join(); threads[i].join();
} }
} }
......
...@@ -28,64 +28,46 @@ public class TestStringUtils extends TestBase { ...@@ -28,64 +28,46 @@ public class TestStringUtils extends TestBase {
check("Rand&amp;Blue", StringUtils.xmlText("Rand&Blue")); check("Rand&amp;Blue", StringUtils.xmlText("Rand&Blue"));
check("&lt;&lt;[[[]]]&gt;&gt;", StringUtils.xmlCData("<<[[[]]]>>")); check("&lt;&lt;[[[]]]&gt;&gt;", StringUtils.xmlCData("<<[[[]]]>>"));
Date dt = StringUtils.parseDateTime("2001-02-03 04:05:06 GMT", "yyyy-MM-dd HH:mm:ss z", "en", "GMT"); Date dt = StringUtils.parseDateTime("2001-02-03 04:05:06 GMT", "yyyy-MM-dd HH:mm:ss z", "en", "GMT");
String s = StringUtils.xmlStartDoc() + String s = StringUtils.xmlStartDoc()
StringUtils.xmlComment("Test Comment") + + StringUtils.xmlComment("Test Comment")
StringUtils.xmlNode("rss", StringUtils.xmlAttr("version", "2.0"), + StringUtils.xmlNode("rss", StringUtils.xmlAttr("version", "2.0"), StringUtils
StringUtils.xmlComment("Test Comment\nZeile2") + .xmlComment("Test Comment\nZeile2")
StringUtils.xmlNode("channel", null, + StringUtils.xmlNode("channel", null, StringUtils.xmlNode("title", null, "H2 Database Engine")
StringUtils.xmlNode("title", null, "H2 Database Engine") + + StringUtils.xmlNode("link", null, "http://www.h2database.com")
StringUtils.xmlNode("link", null, "http://www.h2database.com") + + StringUtils.xmlNode("description", null, "H2 Database Engine")
StringUtils.xmlNode("description", null, "H2 Database Engine") + + StringUtils.xmlNode("language", null, "en-us")
StringUtils.xmlNode("language", null, "en-us") + + StringUtils.xmlNode("pubDate", null, StringUtils.formatDateTime(dt,
StringUtils.xmlNode("pubDate", null, StringUtils.formatDateTime(dt, "EEE, d MMM yyyy HH:mm:ss z", "en", "GMT")) + "EEE, d MMM yyyy HH:mm:ss z", "en", "GMT"))
StringUtils.xmlNode("lastBuildDate", null, StringUtils.formatDateTime(dt, "EEE, d MMM yyyy HH:mm:ss z", "en", "GMT")) + + StringUtils.xmlNode("lastBuildDate", null, StringUtils.formatDateTime(dt,
StringUtils.xmlNode("item", null, "EEE, d MMM yyyy HH:mm:ss z", "en", "GMT"))
StringUtils.xmlNode("title", null, "New Version 0.9.9.9.9") + + StringUtils.xmlNode("item", null, StringUtils.xmlNode("title", null,
StringUtils.xmlNode("link", null, "http://www.h2database.com") + "New Version 0.9.9.9.9")
StringUtils.xmlNode("description", null, + StringUtils.xmlNode("link", null, "http://www.h2database.com")
StringUtils.xmlCData("\nNew Features\nTest\n") + StringUtils.xmlNode("description", null, StringUtils
) .xmlCData("\nNew Features\nTest\n")))));
) check(s, "<?xml version=\"1.0\"?>\n" + "<!-- Test Comment -->\n" + "<rss version=\"2.0\">\n" + " <!--\n"
) + " Test Comment\n" + " Zeile2\n" + " -->\n" + " <channel>\n"
); + " <title>H2 Database Engine</title>\n" + " <link>http://www.h2database.com</link>\n"
check(s, "<?xml version=\"1.0\"?>\n" + " <description>H2 Database Engine</description>\n" + " <language>en-us</language>\n"
+"<!-- Test Comment -->\n" + " <pubDate>Sat, 3 Feb 2001 04:05:06 GMT</pubDate>\n"
+ "<rss version=\"2.0\">\n" + " <lastBuildDate>Sat, 3 Feb 2001 04:05:06 GMT</lastBuildDate>\n" + " <item>\n"
+" <!--\n" + " <title>New Version 0.9.9.9.9</title>\n"
+" Test Comment\n" + " <link>http://www.h2database.com</link>\n" + " <description>\n"
+" Zeile2\n" + " <![CDATA[\n" + " New Features\n" + " Test\n"
+" -->\n" + " ]]>\n" + " </description>\n" + " </item>\n" + " </channel>\n"
+" <channel>\n" + "</rss>\n");
+" <title>H2 Database Engine</title>\n"
+" <link>http://www.h2database.com</link>\n"
+" <description>H2 Database Engine</description>\n"
+" <language>en-us</language>\n"
+" <pubDate>Sat, 3 Feb 2001 04:05:06 GMT</pubDate>\n"
+" <lastBuildDate>Sat, 3 Feb 2001 04:05:06 GMT</lastBuildDate>\n"
+" <item>\n"
+" <title>New Version 0.9.9.9.9</title>\n"
+" <link>http://www.h2database.com</link>\n"
+" <description>\n"
+" <![CDATA[\n"
+" New Features\n"
+" Test\n"
+" ]]>\n"
+" </description>\n"
+" </item>\n"
+" </channel>\n"
+"</rss>\n");
} }
private void testURL() throws Exception { private void testURL() throws Exception {
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<100; i++) { for (int i = 0; i < 100; i++) {
int len = random.nextInt(10); int len = random.nextInt(10);
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
for(int j=0; j<len; j++) { for (int j = 0; j < len; j++) {
if(random.nextBoolean()) { if (random.nextBoolean()) {
buff.append((char)random.nextInt(0x3000)); buff.append((char) random.nextInt(0x3000));
} else { } else {
buff.append((char)random.nextInt(255)); buff.append((char) random.nextInt(255));
} }
} }
String a = buff.toString(); String a = buff.toString();
...@@ -99,14 +81,14 @@ public class TestStringUtils extends TestBase { ...@@ -99,14 +81,14 @@ public class TestStringUtils extends TestBase {
private void testJavaString() throws Exception { private void testJavaString() throws Exception {
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<1000; i++) { for (int i = 0; i < 1000; i++) {
int len = random.nextInt(10); int len = random.nextInt(10);
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
for(int j=0; j<len; j++) { for (int j = 0; j < len; j++) {
if(random.nextBoolean()) { if (random.nextBoolean()) {
buff.append((char)random.nextInt(0x3000)); buff.append((char) random.nextInt(0x3000));
} else { } else {
buff.append((char)random.nextInt(255)); buff.append((char) random.nextInt(255));
} }
} }
String a = buff.toString(); String a = buff.toString();
...@@ -118,17 +100,17 @@ public class TestStringUtils extends TestBase { ...@@ -118,17 +100,17 @@ public class TestStringUtils extends TestBase {
private void testSplit() throws Exception { private void testSplit() throws Exception {
check(3, StringUtils.arraySplit("ABC,DEF,G\\,HI", ',', false).length); check(3, StringUtils.arraySplit("ABC,DEF,G\\,HI", ',', false).length);
check(StringUtils.arrayCombine(new String[]{"", " ", ","}, ','), ", ,\\,"); check(StringUtils.arrayCombine(new String[] { "", " ", "," }, ','), ", ,\\,");
Random random = new Random(1); Random random = new Random(1);
for(int i=0; i<100; i++) { for (int i = 0; i < 100; i++) {
int len = random.nextInt(10); int len = random.nextInt(10);
StringBuffer buff = new StringBuffer(); StringBuffer buff = new StringBuffer();
String select = "abcd,"; String select = "abcd,";
for(int j=0; j<len; j++) { for (int j = 0; j < len; j++) {
char c = select.charAt(random.nextInt(select.length())); char c = select.charAt(random.nextInt(select.length()));
if(c == 'a') { if (c == 'a') {
buff.append("\\\\"); buff.append("\\\\");
} else if(c=='b') { } else if (c == 'b') {
buff.append("\\,"); buff.append("\\,");
} else { } else {
buff.append(c); buff.append(c);
......
...@@ -4,15 +4,19 @@ ...@@ -4,15 +4,19 @@
*/ */
package org.h2.test.unit; package org.h2.test.unit;
import java.sql.*; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.h2.test.TestBase; import org.h2.test.TestBase;
import org.h2.tools.Backup; import org.h2.tools.Backup;
import org.h2.tools.Restore;
import org.h2.tools.Script;
import org.h2.tools.ChangePassword; import org.h2.tools.ChangePassword;
import org.h2.tools.DeleteDbFiles; import org.h2.tools.DeleteDbFiles;
import org.h2.tools.Restore;
import org.h2.tools.RunScript; import org.h2.tools.RunScript;
import org.h2.tools.Script;
import org.h2.tools.Server; import org.h2.tools.Server;
import org.h2.util.Resources; import org.h2.util.Resources;
...@@ -27,90 +31,94 @@ public class TestTools extends TestBase { ...@@ -27,90 +31,94 @@ public class TestTools extends TestBase {
testScriptRunscript(); testScriptRunscript();
testBackupRestore(); testBackupRestore();
} }
private void testManagementDb() throws Exception { private void testManagementDb() throws Exception {
int count = getSize(2, 10); int count = getSize(2, 10);
for(int i=0; i<count; i++) { for (int i = 0; i < count; i++) {
Server server = Server.createTcpServer(new String[]{}).start(); Server server = Server.createTcpServer(new String[] {}).start();
server.stop(); server.stop();
server = Server.createTcpServer(new String[]{"-tcpPassword", "abc"}).start(); server = Server.createTcpServer(new String[] { "-tcpPassword", "abc" }).start();
server.stop(); server.stop();
} }
} }
private void testScriptRunscript() throws Exception { private void testScriptRunscript() throws Exception {
Class.forName("org.h2.Driver"); Class.forName("org.h2.Driver");
String url = "jdbc:h2:" + baseDir+ "/utils"; String url = "jdbc:h2:" + baseDir + "/utils";
String user = "sa", password = "abc"; String user = "sa", password = "abc";
String fileName = baseDir + "/b2.sql"; String fileName = baseDir + "/b2.sql";
Connection conn = DriverManager.getConnection(url, user, password); Connection conn = DriverManager.getConnection(url, user, password);
conn.createStatement().execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)"); conn.createStatement().execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)");
conn.createStatement().execute("INSERT INTO TEST VALUES(1, 'Hello')"); conn.createStatement().execute("INSERT INTO TEST VALUES(1, 'Hello')");
conn.close(); conn.close();
Script.main(new String[]{"-url", url, "-user", user, "-password", password, "-script", fileName, "-options", "nodata", "compression", "lzf", "cipher", "xtea", "password", "'123'"}); Script.main(new String[] { "-url", url, "-user", user, "-password", password, "-script", fileName, "-options",
DeleteDbFiles.main(new String[]{"-dir", baseDir, "-db", "utils", "-quiet"}); "nodata", "compression", "lzf", "cipher", "xtea", "password", "'123'" });
RunScript.main(new String[]{"-url", url, "-user", user, "-password", password, "-script", fileName, "-options", "compression", "lzf", "cipher", "xtea", "password", "'123'"}); DeleteDbFiles.main(new String[] { "-dir", baseDir, "-db", "utils", "-quiet" });
conn = DriverManager.getConnection("jdbc:h2:" + baseDir+ "/utils", "sa", "abc"); RunScript.main(new String[] { "-url", url, "-user", user, "-password", password, "-script", fileName,
"-options", "compression", "lzf", "cipher", "xtea", "password", "'123'" });
conn = DriverManager.getConnection("jdbc:h2:" + baseDir + "/utils", "sa", "abc");
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM TEST"); ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM TEST");
checkFalse(rs.next()); checkFalse(rs.next());
conn.close(); conn.close();
} }
private void testBackupRestore() throws Exception { private void testBackupRestore() throws Exception {
Class.forName("org.h2.Driver"); Class.forName("org.h2.Driver");
String url = "jdbc:h2:" + baseDir+ "/utils"; String url = "jdbc:h2:" + baseDir + "/utils";
String user = "sa", password = "abc"; String user = "sa", password = "abc";
String fileName = baseDir + "/b2.zip"; String fileName = baseDir + "/b2.zip";
DeleteDbFiles.main(new String[]{"-dir", baseDir, "-db", "utils", "-quiet"}); DeleteDbFiles.main(new String[] { "-dir", baseDir, "-db", "utils", "-quiet" });
Connection conn = DriverManager.getConnection(url, user, password); Connection conn = DriverManager.getConnection(url, user, password);
conn.createStatement().execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)"); conn.createStatement().execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR)");
conn.createStatement().execute("INSERT INTO TEST VALUES(1, 'Hello')"); conn.createStatement().execute("INSERT INTO TEST VALUES(1, 'Hello')");
conn.close(); conn.close();
Backup.main(new String[]{"-file", fileName, "-dir", baseDir, "-db", "utils", "-quiet"}); Backup.main(new String[] { "-file", fileName, "-dir", baseDir, "-db", "utils", "-quiet" });
DeleteDbFiles.main(new String[]{"-dir", baseDir, "-db", "utils", "-quiet"}); DeleteDbFiles.main(new String[] { "-dir", baseDir, "-db", "utils", "-quiet" });
Restore.main(new String[]{"-file", fileName, "-dir", baseDir, "-db", "utils", "-quiet"}); Restore.main(new String[] { "-file", fileName, "-dir", baseDir, "-db", "utils", "-quiet" });
conn = DriverManager.getConnection("jdbc:h2:" + baseDir+ "/utils", "sa", "abc"); conn = DriverManager.getConnection("jdbc:h2:" + baseDir + "/utils", "sa", "abc");
ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM TEST"); ResultSet rs = conn.createStatement().executeQuery("SELECT * FROM TEST");
check(rs.next()); check(rs.next());
checkFalse(rs.next()); checkFalse(rs.next());
conn.close(); conn.close();
DeleteDbFiles.main(new String[]{"-dir", baseDir, "-db", "utils", "-quiet"}); DeleteDbFiles.main(new String[] { "-dir", baseDir, "-db", "utils", "-quiet" });
} }
private void testResourceGenerator() throws Exception { private void testResourceGenerator() throws Exception {
Resources.main(new String[]{"."}); Resources.main(new String[] { "." });
} }
private void testChangePassword() throws Exception { private void testChangePassword() throws Exception {
Class.forName("org.h2.Driver"); Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:" + baseDir+ "/utils;CIPHER=XTEA;STORAGE=TEXT", "sa", "abc 123"); Connection conn = DriverManager.getConnection("jdbc:h2:" + baseDir + "/utils;CIPHER=XTEA;STORAGE=TEXT", "sa",
"abc 123");
Statement stat = conn.createStatement(); Statement stat = conn.createStatement();
stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))"); stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))");
conn.close(); conn.close();
String[] args = new String[]{"-dir", baseDir, "-db", "utils", "-cipher", "XTEA", "-decrypt", "abc", "-quiet"}; String[] args = new String[] { "-dir", baseDir, "-db", "utils", "-cipher", "XTEA", "-decrypt", "abc", "-quiet" };
ChangePassword.main(args); ChangePassword.main(args);
args = new String[]{"-dir", baseDir, "-db", "utils", "-cipher", "AES", "-encrypt", "def", "-quiet"}; args = new String[] { "-dir", baseDir, "-db", "utils", "-cipher", "AES", "-encrypt", "def", "-quiet" };
ChangePassword.main(args); ChangePassword.main(args);
conn = DriverManager.getConnection("jdbc:h2:" + baseDir+ "/utils;CIPHER=AES", "sa", "def 123"); conn = DriverManager.getConnection("jdbc:h2:" + baseDir + "/utils;CIPHER=AES", "sa", "def 123");
stat = conn.createStatement(); stat = conn.createStatement();
stat.execute("SELECT * FROM TEST"); stat.execute("SELECT * FROM TEST");
conn.close(); conn.close();
args = new String[]{"-dir", baseDir, "-db", "utils", "-quiet"}; args = new String[] { "-dir", baseDir, "-db", "utils", "-quiet" };
DeleteDbFiles.main(args); DeleteDbFiles.main(args);
} }
private void testServer() throws Exception { private void testServer() throws Exception {
Connection conn; Connection conn;
Server server = Server.createTcpServer(new String[]{"-ifExists", "false", "-baseDir", baseDir}).start(); Server server = Server.createTcpServer(new String[] { "-ifExists", "false", "-baseDir", baseDir }).start();
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", ""); conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", "");
conn.close(); conn.close();
server.stop(); server.stop();
server = Server.createTcpServer(new String[]{"-ifExists", "true", "-tcpPassword", "abc", "-baseDir", baseDir}).start(); server = Server.createTcpServer(
new String[] { "-ifExists", "true", "-tcpPassword", "abc", "-baseDir", baseDir }).start();
try { try {
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test2", "sa", ""); conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test2", "sa", "");
error("should not be able to create new db"); error("should not be able to create new db");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", ""); conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", "");
...@@ -118,7 +126,7 @@ public class TestTools extends TestBase { ...@@ -118,7 +126,7 @@ public class TestTools extends TestBase {
try { try {
Server.shutdownTcpServer("tcp://localhost", "", true); Server.shutdownTcpServer("tcp://localhost", "", true);
error("shouldn't work and should throw an exception"); error("shouldn't work and should throw an exception");
} catch(SQLException e) { } catch (SQLException e) {
// expected // expected
} }
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", ""); conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", "");
...@@ -127,7 +135,7 @@ public class TestTools extends TestBase { ...@@ -127,7 +135,7 @@ public class TestTools extends TestBase {
try { try {
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", ""); conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/test", "sa", "");
error("server must have been closed"); error("server must have been closed");
} catch(SQLException e) { } catch (SQLException e) {
checkNotGeneralException(e); checkNotGeneralException(e);
} }
} }
......
...@@ -19,29 +19,29 @@ import org.h2.value.Value; ...@@ -19,29 +19,29 @@ import org.h2.value.Value;
import org.h2.value.ValueInt; import org.h2.value.ValueInt;
public class TestValueHashMap extends TestBase implements DataHandler { public class TestValueHashMap extends TestBase implements DataHandler {
CompareMode compareMode = new CompareMode(null, null); CompareMode compareMode = new CompareMode(null, null);
public void test() throws Exception { public void test() throws Exception {
ValueHashMap map = new ValueHashMap(this); ValueHashMap map = new ValueHashMap(this);
HashMap hash = new HashMap(); HashMap hash = new HashMap();
Random random = new Random(1); Random random = new Random(1);
Comparator vc = new Comparator() { Comparator vc = new Comparator() {
public int compare(Object o1, Object o2) { public int compare(Object o1, Object o2) {
Value v1 = (Value)o1; Value v1 = (Value) o1;
Value v2 = (Value)o2; Value v2 = (Value) o2;
try { try {
return v1.compareTo(v2, compareMode); return v1.compareTo(v2, compareMode);
} catch(SQLException e) { } catch (SQLException e) {
throw new Error(e); throw new Error(e);
} }
} }
}; };
for(int i=0; i<10000; i++) { for (int i = 0; i < 10000; i++) {
int op = random.nextInt(10); int op = random.nextInt(10);
Value key = ValueInt.get(random.nextInt(100)); Value key = ValueInt.get(random.nextInt(100));
Value value = ValueInt.get(random.nextInt(100)); Value value = ValueInt.get(random.nextInt(100));
switch(op) { switch (op) {
case 0: case 0:
map.put(key, value); map.put(key, value);
hash.put(key, value); hash.put(key, value);
...@@ -53,7 +53,7 @@ public class TestValueHashMap extends TestBase implements DataHandler { ...@@ -53,7 +53,7 @@ public class TestValueHashMap extends TestBase implements DataHandler {
case 2: case 2:
Value v1 = (Value) map.get(key); Value v1 = (Value) map.get(key);
Value v2 = (Value) hash.get(key); Value v2 = (Value) hash.get(key);
check((v1==null && v2==null) || v1.compareEqual(v2)); check((v1 == null && v2 == null) || v1.compareEqual(v2));
break; break;
case 3: { case 3: {
ObjectArray a1 = map.keys(); ObjectArray a1 = map.keys();
...@@ -61,8 +61,8 @@ public class TestValueHashMap extends TestBase implements DataHandler { ...@@ -61,8 +61,8 @@ public class TestValueHashMap extends TestBase implements DataHandler {
check(a1.size(), a2.size()); check(a1.size(), a2.size());
a1.sort(vc); a1.sort(vc);
a2.sort(vc); a2.sort(vc);
for(int j=0; j<a1.size(); j++) { for (int j = 0; j < a1.size(); j++) {
check(((Value)a1.get(j)).compareEqual((Value)a2.get(j))); check(((Value) a1.get(j)).compareEqual((Value) a2.get(j)));
} }
break; break;
} }
...@@ -72,8 +72,8 @@ public class TestValueHashMap extends TestBase implements DataHandler { ...@@ -72,8 +72,8 @@ public class TestValueHashMap extends TestBase implements DataHandler {
check(a1.size(), a2.size()); check(a1.size(), a2.size());
a1.sort(vc); a1.sort(vc);
a2.sort(vc); a2.sort(vc);
for(int j=0; j<a1.size(); j++) { for (int j = 0; j < a1.size(); j++) {
check(((Value)a1.get(j)).compareEqual((Value)a2.get(j))); check(((Value) a1.get(j)).compareEqual((Value) a2.get(j)));
} }
break; break;
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论