Index: forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel2.java =================================================================== diff -u -r23797 -r23802 --- forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel2.java (.../OptimisticLockManagerTestLevel2.java) (revision 23797) +++ forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel2.java (.../OptimisticLockManagerTestLevel2.java) (revision 23802) @@ -3,11 +3,16 @@ */ package com.forgon.system.concurrent.service.test; +import java.util.Collection; + /** * @author dandan 2018年7月21日 下午4:50:25 * */ public interface OptimisticLockManagerTestLevel2 extends OptimisticLockManagerTest { + public void test_NewTransaction_Normal_TRANS_NEW(); + public void requestLockById_TRANS_NEW(String entity, String id,WaitObject notifyObject,WaitObject continueObject); + public void requestLockByStringIds_TRANS_NEW(String entity, Collection ids,WaitObject notifyObject,WaitObject continueObject); } Index: ssts-web/src/test/java/test/forgon/system/concurrent/service/OptimisticLockManagerTests.java =================================================================== diff -u -r23801 -r23802 --- ssts-web/src/test/java/test/forgon/system/concurrent/service/OptimisticLockManagerTests.java (.../OptimisticLockManagerTests.java) (revision 23801) +++ ssts-web/src/test/java/test/forgon/system/concurrent/service/OptimisticLockManagerTests.java (.../OptimisticLockManagerTests.java) (revision 23802) @@ -605,4 +605,15 @@ // 异常 } } + + /** + * 两个实体,两个事务请求锁_测试资源是否正确分配和释放 + */ + @Test + public void test_NewTransaction_Normal() { + optimisticLockManagerTestLevel1.test_NewTransaction_Normal(); + List allLocks_end = optimisticLockManager.getAllLocks(); + assertEquals(allLocks_end.size(), 0); + + } } Index: forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel1Impl.java =================================================================== diff -u -r23797 -r23802 --- forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel1Impl.java (.../OptimisticLockManagerTestLevel1Impl.java) (revision 23797) +++ forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel1Impl.java (.../OptimisticLockManagerTestLevel1Impl.java) (revision 23802) @@ -37,7 +37,7 @@ assertEquals(optimisticLock.getEntity(), entity); assertEquals(optimisticLock.getId(), id); } - + { requestLockById(entity, id, notifyObject, continueObject); requestLockById(entity, id, notifyObject, continueObject); @@ -48,35 +48,58 @@ assertEquals(optimisticLock.getId(), id); } } - - public void test_requestLockByStringIds_OneTransaction_RepeatRequest(String entity, List ids,WaitObject notifyObject,WaitObject continueObject){ + + public void test_requestLockByStringIds_OneTransaction_RepeatRequest( + String entity, List ids, WaitObject notifyObject, + WaitObject continueObject) { { requestLockByStringIds(entity, ids, notifyObject, continueObject); List allLocks = optimisticLockManager.getAllLocks(); - Collections.sort(allLocks,OptimisticLock.ID_COMPARATOR); + Collections.sort(allLocks, OptimisticLock.ID_COMPARATOR); assertEquals(allLocks.size(), ids.size()); - - for(int i=0;i allLocks = optimisticLockManager.getAllLocks(); - Collections.sort(allLocks,OptimisticLock.ID_COMPARATOR); + Collections.sort(allLocks, OptimisticLock.ID_COMPARATOR); assertEquals(allLocks.size(), ids.size()); - - for(int i=0;i allLocks = optimisticLockManager.getAllLocks(); + assertEquals(allLocks.size(), 1); + OptimisticLock optimisticLock = allLocks.get(0); + assertEquals(optimisticLock.getEntity(), ENTITY_OPTIMISTICLOCKTEST); + assertEquals(optimisticLock.getId(), "1"); + } + // 调用新事务 + optimisticLockManagerTestLevel2.test_NewTransaction_Normal_TRANS_NEW(); + // 新事物结束 + { + List allLocks = optimisticLockManager.getAllLocks(); + assertEquals(allLocks.size(), 1); + OptimisticLock optimisticLock = allLocks.get(0); + assertEquals(optimisticLock.getEntity(), ENTITY_OPTIMISTICLOCKTEST); + assertEquals(optimisticLock.getId(), "1"); + } + } + public void requestLockById_TRANS_NEVER(String entity, String id, WaitObject notifyObject, WaitObject continueObject) { requestLockById(entity, id, notifyObject, continueObject); Index: forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel1.java =================================================================== diff -u -r23797 -r23802 --- forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel1.java (.../OptimisticLockManagerTestLevel1.java) (revision 23797) +++ forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel1.java (.../OptimisticLockManagerTestLevel1.java) (revision 23802) @@ -16,6 +16,8 @@ public void test_OneTransaction_RepeatRequest(String entity, String id,WaitObject notifyObject,WaitObject continueObject); public void test_requestLockByStringIds_OneTransaction_RepeatRequest(String entity, List ids,WaitObject notifyObject,WaitObject continueObject); + public void test_NewTransaction_Normal(); + public void requestLockById_TRANS_NEVER(String entity, String id,WaitObject notifyObject,WaitObject continueObject); public void requestLockByStringIds_TRANS_NEVER(String entity, Collection ids,WaitObject notifyObject,WaitObject continueObject); } Index: forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel2Impl.java =================================================================== diff -u -r23797 -r23802 --- forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel2Impl.java (.../OptimisticLockManagerTestLevel2Impl.java) (revision 23797) +++ forgon-tools/src/main/java/com/forgon/system/concurrent/service/test/OptimisticLockManagerTestLevel2Impl.java (.../OptimisticLockManagerTestLevel2Impl.java) (revision 23802) @@ -3,6 +3,16 @@ */ package com.forgon.system.concurrent.service.test; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertTrue; + +import java.util.Collection; +import java.util.List; + +import com.forgon.system.concurrent.model.OptimisticLock; + +import edu.emory.mathcs.backport.java.util.Collections; + /** * @author dandan 2018年7月21日 下午4:50:57 * @@ -18,4 +28,33 @@ this.optimisticLockManagerTestLevel3 = optimisticLockManagerTestLevel3; } + public void test_NewTransaction_Normal_TRANS_NEW() { + requestLockById(ENTITY_OPTIMISTICLOCKTEST, "2", null, null); + { + List allLocks = optimisticLockManager.getAllLocks(); + assertEquals(allLocks.size(), 2); + Collections.sort(allLocks, OptimisticLock.ID_COMPARATOR); + OptimisticLock optimisticLock = allLocks.get(0); + assertEquals(optimisticLock.getEntity(), ENTITY_OPTIMISTICLOCKTEST); + assertEquals(optimisticLock.getId(), "1"); + + OptimisticLock optimisticLock1 = allLocks.get(1); + assertEquals(optimisticLock1.getEntity(), ENTITY_OPTIMISTICLOCKTEST); + assertEquals(optimisticLock1.getId(), "2"); + + assertTrue(optimisticLock.getTransactionInfo() != optimisticLock1.getTransactionInfo()); + + } + } + + public void requestLockById_TRANS_NEW(String entity, String id, + WaitObject notifyObject, WaitObject continueObject) { + requestLockById(entity, id, notifyObject, continueObject); + } + + public void requestLockByStringIds_TRANS_NEW(String entity, + Collection ids, WaitObject notifyObject, + WaitObject continueObject) { + requestLockByStringIds(entity, ids, notifyObject, continueObject); + } }