1 22 package org.jboss.test.recover.test; 23 24 import junit.framework.Test; 25 26 import org.jboss.logging.Logger; 27 import org.jboss.test.recover.interfaces.DummyXAResource; 28 import org.jboss.test.recover.interfaces.StatelessFoo; 29 import org.jboss.tm.recovery.RecoveryTestingException; 30 31 37 public class CrashAfterOneResourceButNotAllHavePreparedTestCase 38 extends JBossCrashRecoveryTestCase 39 { 40 private Logger log = Logger.getLogger(this.getClass()); 41 42 public CrashAfterOneResourceButNotAllHavePreparedTestCase(String name) 43 { 44 super(name); 45 } 46 47 public void test() throws Exception 48 { 49 log.info("*** starting " + getUnqualifiedClassName() + " ***"); 50 51 DummyXAResource xaRes1 = getXAResource("DummyRecoverableProxy1"); 52 DummyXAResource xaRes2 = getXAResource("DummyRecoverableProxy2"); 53 DummyXAResource xaRes3 = getXAResource("DummyRecoverableProxy3"); 54 55 xaRes1.clear(); 56 xaRes2.clear(); 57 xaRes3.clear(); 58 59 StatelessFoo foo = 60 (StatelessFoo) getInitialContext().lookup("StatelessFoo"); 61 62 for (int i = 0; i < N; i++) 63 foo.method(); 64 65 int xa1CommitsBefore = xaRes1.getCommittedCount(); 66 int xa2CommitsBefore = xaRes2.getCommittedCount(); 67 int xa3CommitsBefore = xaRes3.getCommittedCount(); 68 69 log.info("Commits before crash: " + xa1CommitsBefore + ", " 70 + xa2CommitsBefore + ", " + xa3CommitsBefore); 71 72 try 73 { 74 xaRes2.setPrepareException(new RecoveryTestingException( 75 "FAILURE WHEN XA2 WAS ABOUT TO PREPARE")); 76 foo.method(); 77 fail("Server crash expected."); 78 } 79 catch (Throwable e) 80 { 81 if (e instanceof java.lang.reflect.UndeclaredThrowableException 82 && e.getCause() != null 83 && e.getCause() instanceof java.rmi.MarshalException ) 84 { 85 log.info("Expected throwable:", e); 86 xaRes2.clearPrepareException(); 87 } 88 else 89 { 90 log.info("Unexpected throwable:", e); 91 fail("Unexpected throwable: " + e); 92 } 93 } 94 95 int xa1CommitsAfter = xaRes1.getCommittedCount(); 96 int xa2CommitsAfter = xaRes2.getCommittedCount(); 97 int xa3CommitsAfter = xaRes3.getCommittedCount(); 98 99 int xa1Prepares = xaRes1.getPreparedCount(); 100 int xa2Prepares = xaRes2.getPreparedCount(); 101 int xa3Prepares = xaRes3.getPreparedCount(); 102 103 int xa1Rollbacks = xaRes1.getRollbackCount(); 104 int xa2Rollbacks = xaRes2.getRollbackCount(); 105 int xa3Rollbacks = xaRes3.getRollbackCount(); 106 107 log.info("Commits after crash: " + xa1CommitsAfter + ", " 108 + xa2CommitsAfter + ", " + xa3CommitsAfter); 109 log.info("Prepares after crash: " + xa1Prepares + ", " 110 + xa2Prepares + ", " + xa3Prepares); 111 log.info("Rollbacks after crash: " + xa1Rollbacks + ", " 112 + xa2Rollbacks + ", " + xa3Rollbacks); 113 114 assertEquals(N, xa1CommitsBefore); 115 assertEquals(N, xa2CommitsBefore); 116 assertEquals(N, xa3CommitsBefore); 117 assertEquals(N, xa1CommitsAfter); 118 assertEquals(N, xa2CommitsAfter); 119 assertEquals(N, xa3CommitsAfter); 120 assertEquals(N + 1, xa1Prepares); 121 assertEquals(N, xa2Prepares); 122 assertEquals(N, xa3Prepares); 123 assertEquals(0, xa1Rollbacks); 124 assertEquals(0, xa2Rollbacks); 125 assertEquals(0, xa3Rollbacks); 126 } 127 128 public static Test suite() throws Exception 129 { 130 return suite(CrashAfterOneResourceButNotAllHavePreparedTestCase.class); 131 } 132 133 } 134 | Popular Tags |