1 21 22 package com.rift.coad.util.change; 23 24 import com.rift.coad.lib.thread.ThreadGroupManager; 25 import java.io.File ; 26 import java.net.URL ; 27 import java.net.URLClassLoader ; 28 import junit.framework.*; 29 import java.util.ArrayList ; 30 import java.util.Iterator ; 31 import java.util.List ; 32 import java.util.Map ; 33 import java.util.Queue ; 34 import java.util.Set ; 35 import java.util.HashSet ; 36 import java.util.concurrent.ConcurrentHashMap ; 37 import java.util.concurrent.ConcurrentLinkedQueue ; 38 import javax.naming.Context ; 39 import javax.naming.InitialContext ; 40 import javax.transaction.xa.XAException ; 41 import javax.transaction.xa.XAResource ; 42 import javax.transaction.xa.Xid ; 43 import javax.transaction.UserTransaction ; 44 45 import org.apache.log4j.Logger; 47 48 49 import com.rift.coad.lib.naming.NamingDirector; 51 import com.rift.coad.lib.naming.ContextManager; 52 import com.rift.coad.lib.db.DBSourceManager; 53 import com.rift.coad.lib.thread.CoadunationThread; 54 import com.rift.coad.lib.thread.ThreadStateMonitor; 55 import com.rift.coad.util.transaction.TransactionManager; 56 import com.rift.coad.lib.interceptor.InterceptorFactory; 57 import com.rift.coad.lib.security.RoleManager; 58 import com.rift.coad.lib.security.ThreadsPermissionContainer; 59 import com.rift.coad.lib.security.ThreadPermissionSession; 60 import com.rift.coad.lib.security.UserSession; 61 import com.rift.coad.lib.security.user.UserSessionManager; 62 import com.rift.coad.lib.security.user.UserStoreManager; 63 import com.rift.coad.lib.security.SessionManager; 64 import com.rift.coad.lib.security.login.LoginManager; 65 import com.rift.coad.lib.thread.CoadunationThreadGroup; 66 67 import com.rift.coad.lib.configuration.Configuration; 68 import com.rift.coad.lib.configuration.ConfigurationFactory; 69 import com.rift.coad.util.lock.LockRef; 70 import com.rift.coad.util.lock.ObjectLockFactory; 71 import com.rift.coad.lib.transaction.TransactionDirector; 72 73 74 79 public class ChangeLogTest extends TestCase { 80 81 84 public static class TestChange implements Change { 85 86 89 public TestChange() { 90 91 } 92 93 94 97 public void applyChanges() throws ChangeException { 98 changeCount++; 99 } 100 } 101 102 public ChangeLogTest(String testName) { 103 super(testName); 104 } 105 106 protected void setUp() throws Exception { 107 } 108 109 protected void tearDown() throws Exception { 110 } 111 112 public static int changeCount = 0; 113 116 public void testChangeLog() throws Exception { 117 System.out.println("testChangeLog"); 118 119 ThreadsPermissionContainer permissions = new ThreadsPermissionContainer(); 121 SessionManager.init(permissions); 122 UserStoreManager userStoreManager = new UserStoreManager(); 123 UserSessionManager sessionManager = new UserSessionManager(permissions, 124 userStoreManager); 125 LoginManager.init(sessionManager,userStoreManager); 126 CoadunationThreadGroup threadGroup = new CoadunationThreadGroup(sessionManager, 128 userStoreManager); 129 130 RoleManager.getInstance(); 132 133 InterceptorFactory.init(permissions,sessionManager,userStoreManager); 134 135 Set set = new HashSet (); 137 set.add("test"); 138 UserSession user = new UserSession("test1", set); 139 permissions.putSession(new Long (Thread.currentThread().getId()), 140 new ThreadPermissionSession( 141 new Long (Thread.currentThread().getId()),user)); 142 143 Thread.currentThread().setContextClassLoader(this.getClass(). 145 getClassLoader()); 146 ThreadGroupManager.getInstance().initThreadGroup(threadGroup); 147 148 149 NamingDirector.init(threadGroup); 151 152 TransactionDirector transactionDirector = TransactionDirector.init(); 154 155 ObjectLockFactory.init(); 157 TransactionManager.init(); 158 159 String username = ""; 160 161 ChangeLog.init(ChangeLog.class); 162 163 Context context = new InitialContext (); 165 UserTransaction ut = 166 (UserTransaction )context.lookup("java:comp/UserTransaction"); 167 168 for (int index = 0; index < 1000; index++) { 169 ut.begin(); 170 for (int count = 0; count < 10; count++) { 171 ChangeLog.getInstance().addChange(new TestChange()); 172 } 173 ut.commit(); 174 } 175 176 ChangeLog.terminate(); 177 178 File dumpFile = new File ("./tmp/changelog.dmp"); 179 if (!dumpFile.exists()) { 180 fail("The dump file does not exist changeCount : " + changeCount); 181 } 182 183 ChangeLog.init(ChangeLog.class); 185 ChangeLog.getInstance().start(); 186 187 Thread.sleep(500); 188 189 if (changeCount != 10000) { 190 fail("Failed to apply 10000 changes"); 191 } 192 193 194 ChangeLog.terminate(); 195 196 if (dumpFile.exists()) { 197 fail("The dump file does exist should have been removed"); 198 } 199 } 200 201 202 } 203 | Popular Tags |