View Javadoc
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   * @author timp
18   * @since 11 Feb 2007
19   *
20   */
21  public class PoemTransactionTest extends
22      org.melati.poem.test.PoemTransactionTest {
23  
24    /**
25     * @param name
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      //ThrowingPreparedStatement.startThrowing("executeQuery");
79      //super.testGetBlockedOn();
80      //ThrowingPreparedStatement.stopThrowing("executeQuery");
81    }
82  
83    public void testGetDatabase() {
84      //ThrowingPreparedStatement.startThrowing("executeQuery");
85      //super.testGetDatabase();
86      //ThrowingPreparedStatement.stopThrowing("executeQuery");
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       // get the logSQL line covered
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     //ThrowingPreparedStatement.startThrowing("executeQuery");
119     //super.testToString();
120     //ThrowingPreparedStatement.stopThrowing("executeQuery");
121   }
122 
123   public void testWriteDown() {
124     //ThrowingPreparedStatement.startThrowing("executeQuery");
125     //super.testWriteDown();
126     //ThrowingPreparedStatement.stopThrowing("executeQuery");
127   }
128 
129 }