1 5 package org.h2.test.poweroff; 6 7 import java.io.DataOutputStream ; 8 import java.io.File ; 9 import java.io.FileDescriptor ; 10 import java.io.RandomAccessFile ; 11 import java.net.Socket ; 12 import java.sql.Connection ; 13 import java.sql.DriverManager ; 14 import java.sql.PreparedStatement ; 15 import java.sql.ResultSet ; 16 import java.sql.SQLException ; 17 import java.sql.Statement ; 18 19 import org.h2.util.FileUtils; 20 21 public class Test { 22 23 String driver; 24 String url; 25 String user; 26 String password; 27 Connection conn; 28 Statement stat; 29 PreparedStatement prep; 30 31 private Test() { 32 } 33 34 private Test(String driver, String url, String user, String password, boolean writeDelay0) { 35 this.driver = driver; 36 this.url = url; 37 this.user = user; 38 this.password = password; 39 try { 40 Class.forName(driver); 41 conn = DriverManager.getConnection(url, user, password); 42 stat = conn.createStatement(); 43 if(writeDelay0) { 44 stat.execute("SET WRITE_DELAY 0"); 45 } 46 System.out.println(url +" started"); 47 } catch(Exception e) { 48 System.out.println(url +": " + e.toString()); 49 return; 50 } 51 try { 52 ResultSet rs = stat.executeQuery("SELECT MAX(ID) FROM TEST"); 53 rs.next(); 54 System.out.println(url+": MAX(ID)=" + rs.getInt(1)); 55 stat.execute("DROP TABLE TEST"); 56 } catch(SQLException e) { 57 } 59 try { 60 stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))"); 61 prep = conn.prepareStatement("INSERT INTO TEST VALUES(?, ?)"); 62 } catch(SQLException e) { 63 System.out.println(url +": " + e.toString()); 64 } 65 } 66 67 private void insert(int id) { 68 try { 69 if(prep != null) { 70 prep.setInt(1, id); 71 prep.setString(2, "World " + id); 72 prep.execute(); 73 } 74 } catch(SQLException e) { 75 System.out.println(url +": " + e.toString()); 76 } 77 } 78 79 public static void main(String [] args) throws Exception { 80 new Test().test(args); 81 } 82 83 void test(String [] args) throws Exception { 84 int port = 9099; 85 String connect = "192.168.0.3"; 86 boolean file = false; 87 for (int i = 0; i < args.length; i++) { 88 if (args[i].equals("-port")) { 89 port = Integer.parseInt(args[++i]); 90 } else if (args[i].equals("-connect")) { 91 connect = args[++i]; 92 } else if (args[i].equals("-file")) { 93 file = true; 94 } 95 } 96 test(connect, port, file); 97 } 98 99 void test(String connect, int port, boolean file) throws Exception { 100 Socket socket = new Socket (connect, port); 101 DataOutputStream out = new DataOutputStream (socket.getOutputStream()); 102 System.out.println("Connected to " + socket.toString()); 103 if (file) { 104 testFile(out); 105 } else { 106 testDatabases(out); 107 } 108 } 109 110 void testFile(DataOutputStream out) throws Exception { 111 File file = new File ("test.txt"); 112 if (file.exists()) { 113 file.delete(); 114 } 115 RandomAccessFile write = new RandomAccessFile (file, "rws"); 116 int fileSize = 10 * 1024 * 1024; 118 FileUtils.setLength(write, fileSize); 119 write.seek(0); 120 int i = 0; 121 FileDescriptor fd = write.getFD(); 122 while (true) { 123 if (write.getFilePointer() >= fileSize) { 124 break; 125 } 126 write.writeBytes(i + "\r\n"); 127 fd.sync(); 128 out.writeInt(i); 129 out.flush(); 130 i++; 131 } 132 write.close(); 133 } 134 135 void testDatabases(DataOutputStream out) throws Exception { 136 Test[] dbs = new Test[] { 137 new Test("org.h2.Driver", "jdbc:h2:test1", "sa", "", true), 138 new Test("org.h2.Driver", "jdbc:h2:test2", "sa", "", false), 139 new Test("org.hsqldb.jdbcDriver", "jdbc:hsqldb:test4", "sa", "", false), 140 new Test("org.postgresql.Driver", "jdbc:postgresql:test", "sa", "sa", false), 142 new Test("org.apache.derby.jdbc.EmbeddedDriver", "jdbc:derby:test;create=true", "sa", "", false), 143 new Test("org.h2.Driver", "jdbc:h2:test5", "sa", "", true), 144 new Test("org.h2.Driver", "jdbc:h2:test6", "sa", "", false), 145 }; 146 for(int i=0; ; i++) { 147 for(int j=0; j<dbs.length; j++) { 148 dbs[j].insert(i); 149 } 150 out.writeInt(i); 151 out.flush(); 152 } 153 } 154 155 } 156 | Popular Tags |