KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > h2 > test > db > TestCluster


1 /*
2  * Copyright 2004-2006 H2 Group. Licensed under the H2 License, Version 1.0 (http://h2database.com/html/license.html).
3  * Initial Developer: H2 Group
4  */

5 package org.h2.test.db;
6
7 import java.sql.Connection JavaDoc;
8 import java.sql.DriverManager JavaDoc;
9 import java.sql.PreparedStatement JavaDoc;
10 import java.sql.ResultSet JavaDoc;
11 import java.sql.SQLException JavaDoc;
12 import java.sql.Statement JavaDoc;
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 JavaDoc {
22         if(config.memory || config.networked) {
23             return;
24         }
25         
26         DeleteDbFiles.main(new String JavaDoc[]{"-dir", BASE_DIR + "/node1", "-quiet"});
27         DeleteDbFiles.main(new String JavaDoc[]{"-dir", BASE_DIR + "/node2", "-quiet"});
28         
29         // create the master database
30
Connection JavaDoc conn;
31         Class.forName("org.h2.Driver");
32         conn = DriverManager.getConnection("jdbc:h2:file:" + BASE_DIR + "/node1/test", "sa", "");
33         Statement JavaDoc 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 JavaDoc 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 JavaDoc[]{
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 JavaDoc[]{"-tcpPort", "9091", "-baseDir", BASE_DIR + "/node1"}).start();
54         Server n2 = org.h2.tools.Server.createTcpServer(new String JavaDoc[]{"-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 JavaDoc 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 JavaDoc 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 // n1.stop();
76
// n2.stop();
77

78 // n1 = org.h2.tools.Server.startTcpServer(new String[]{"-tcpPort", "9091", "-baseDir", BASE_DIR + "/node1"});
79
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost:9091/test;CLUSTER=''", "sa", "");
80         check(conn, len);
81         conn.close();
82         n1.stop();
83         
84 // n2 = org.h2.tools.Server.startTcpServer(new String[]{"-tcpPort", "9092", "-baseDir", BASE_DIR + "/node2"});
85
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 JavaDoc conn, int len) throws Exception JavaDoc {
92         PreparedStatement JavaDoc prep = conn.prepareStatement("SELECT * FROM TEST WHERE ID=?");
93         for(int i=0; i<len; i++) {
94             prep.setInt(1, i);
95             ResultSet JavaDoc rs = prep.executeQuery();
96             rs.next();
97             check(rs.getString(2), "Data"+i);
98             checkFalse(rs.next());
99         }
100     }
101
102 }
103
Popular Tags