1
2
3
4 package org.melati.poem.test.throwing;
5
6 import java.sql.Connection;
7 import java.sql.PreparedStatement;
8
9 import org.melati.poem.Database;
10 import org.melati.poem.PoemDatabaseFactory;
11 import org.melati.poem.PoemThread;
12 import org.melati.poem.SQLSeriousPoemException;
13 import org.melati.poem.User;
14 import org.melati.poem.dbms.test.sql.Thrower;
15
16
17
18
19
20
21 public class PoemTransactionTest extends
22 org.melati.poem.test.PoemTransactionTest {
23
24
25
26
27 public PoemTransactionTest(String name) {
28 super(name);
29 }
30
31
32 protected void setUp() throws Exception {
33 PoemDatabaseFactory.removeDatabase(getDatabaseName());
34 super.setUp();
35 assertEquals("org.melati.poem.dbms.test.HsqldbThrower",getDb().getDbms().getClass().getName());
36 }
37 protected void tearDown() throws Exception {
38 try {
39 super.tearDown();
40 } finally {
41 PoemDatabaseFactory.removeDatabase(getDatabaseName());
42 }
43 }
44
45
46 public Database getDatabase(String name) {
47 maxTrans = 8;
48 Database db = PoemDatabaseFactory.getDatabase(name,
49 "jdbc:hsqldb:mem:" + name,
50 "sa",
51 "",
52 "org.melati.poem.PoemDatabase",
53 "org.melati.poem.dbms.test.HsqldbThrower",
54 false,
55 false,
56 false, maxTrans);
57 return db;
58 }
59
60 public void testClose() {
61 Thrower.startThrowing(PreparedStatement.class, "executeQuery");
62 super.testClose();
63 Thrower.stopThrowing(PreparedStatement.class, "executeQuery");
64 }
65
66 public void testCommit() {
67 Thrower.startThrowing(Connection.class, "commit");
68 try {
69 super.testCommit();
70 fail("Should have bombed");
71 } catch (SQLSeriousPoemException e) {
72 assertEquals("Connection bombed", e.innermostException().getMessage());
73 }
74 Thrower.stopThrowing(Connection.class, "commit");
75 }
76
77 public void testGetBlockedOn() {
78
79
80
81 }
82
83 public void testGetDatabase() {
84
85
86
87 }
88
89 public void testPoemTransaction() {
90 Thrower.startThrowing(Connection.class, "setAutoCommit");
91 try {
92 super.testPoemTransaction();
93 fail("Should have bombed");
94 } catch (SQLSeriousPoemException e) {
95 assertEquals("Connection bombed", e.innermostException().getMessage());
96 }
97 Thrower.stopThrowing(Connection.class, "setAutoCommit");
98 }
99
100 public void testRollback() {
101 Thrower.startThrowing(Connection.class, "rollback");
102 User u = new User("tester","tester","tester");
103 try {
104 getDb().getUserTable().create(u);
105 assertEquals("tester",u.getName());
106 u.setName("tester2");
107
108 PoemThread.rollback();
109 fail("Should have bombed");
110 } catch (SQLSeriousPoemException e) {
111 assertEquals("Connection bombed", e.innermostException().getMessage());
112 }
113 Thrower.stopThrowing(Connection.class, "rollback");
114 u.delete();
115 }
116
117 public void testToString() {
118
119
120
121 }
122
123 public void testWriteDown() {
124
125
126
127 }
128
129 }