1 5 package org.h2.test.db; 6 7 import java.sql.Connection ; 8 import java.sql.DriverManager ; 9 import java.sql.PreparedStatement ; 10 import java.sql.ResultSet ; 11 import java.sql.SQLException ; 12 import java.sql.Statement ; 13 14 import org.h2.test.TestBase; 15 import org.h2.tools.CreateCluster; 16 import org.h2.tools.DeleteDbFiles; 17 import org.h2.tools.Server; 18 19 public class TestCluster extends TestBase { 20 21 public void test() throws Exception { 22 if(config.memory || config.networked) { 23 return; 24 } 25 26 DeleteDbFiles.main(new String []{"-dir", BASE_DIR + "/node1", "-quiet"}); 27 DeleteDbFiles.main(new String []{"-dir", BASE_DIR + "/node2", "-quiet"}); 28 29 Connection conn; 31 Class.forName("org.h2.Driver"); 32 conn = DriverManager.getConnection("jdbc:h2:file:" + BASE_DIR + "/node1/test", "sa", ""); 33 Statement stat; 34 stat = conn.createStatement(); 35 stat.execute("DROP TABLE IF EXISTS TEST"); 36 stat.execute("CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))"); 37 PreparedStatement prep = conn.prepareStatement("INSERT INTO TEST VALUES(?, ?)"); 38 int len = getSize(10, 1000); 39 for(int i=0; i<len; i++) { 40 prep.setInt(1, i); 41 prep.setString(2, "Data" + i); 42 prep.executeUpdate(); 43 } 44 conn.close(); 45 46 CreateCluster.main(new String []{ 47 "-urlSource", "jdbc:h2:file:"+ BASE_DIR + "/node1/test", 48 "-urlTarget", "jdbc:h2:file:"+BASE_DIR + "/node2/test", 49 "-user", "sa", 50 "-serverlist", "localhost:9091,localhost:9092" 51 }); 52 53 Server n1 = org.h2.tools.Server.createTcpServer(new String []{"-tcpPort", "9091", "-baseDir", BASE_DIR + "/node1"}).start(); 54 Server n2 = org.h2.tools.Server.createTcpServer(new String []{"-tcpPort", "9092", "-baseDir", BASE_DIR + "/node2"}).start(); 55 56 try { 57 conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9091/test", "sa", ""); 58 error("should not be able to connect in standalone mode"); 59 } catch(SQLException e) { 60 checkNotGeneralException(e); 61 } 62 63 try { 64 conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9092/test", "sa", ""); 65 error("should not be able to connect in standalone mode"); 66 } catch(SQLException e) { 67 checkNotGeneralException(e); 68 } 69 70 conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9091,localhost:9092/test", "sa", ""); 71 stat = conn.createStatement(); 72 check(conn, len); 73 74 conn.close(); 75 78 conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9091/test;CLUSTER=''", "sa", ""); 80 check(conn, len); 81 conn.close(); 82 n1.stop(); 83 84 conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9092/test;CLUSTER=''", "sa", ""); 86 check(conn, len); 87 conn.close(); 88 n2.stop(); 89 } 90 91 void check(Connection conn, int len) throws Exception { 92 PreparedStatement prep = conn.prepareStatement("SELECT * FROM TEST WHERE ID=?"); 93 for(int i=0; i<len; i++) { 94 prep.setInt(1, i); 95 ResultSet rs = prep.executeQuery(); 96 rs.next(); 97 check(rs.getString(2), "Data"+i); 98 checkFalse(rs.next()); 99 } 100 } 101 102 } 103 | Popular Tags |