Update of /cvsroot/springnet/Spring.Net/test/Spring/Spring.Data.Tests/Data/Core
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv31309
Modified Files:
ServiceDomainTransactionManagerTests.cs
TxScopeTransactionManagerTests.cs
Log Message:
SPRNET-773 - Unit tests for ServiceDomainTransactionManager
SPRNET-761 - Unit tests for TxScopePlatformTransactionManager, call 'IsExistingTransaction' method on ITransactionScopeAdapter in TxMgr impl
remove DataAdapterObject, was not used or implemented - cruft.
Index: TxScopeTransactionManagerTests.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Data.Tests/Data/Core/TxScopeTransactionManagerTests.cs,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** TxScopeTransactionManagerTests.cs 30 Nov 2007 18:38:59 -0000 1.1
--- TxScopeTransactionManagerTests.cs 4 Dec 2007 19:43:23 -0000 1.2
***************
*** 59,62 ****
--- 59,63 ----
using (mocks.Ordered())
{
+ Expect.Call(txAdapter.IsExistingTransaction).Return(false);
TransactionOptions txOptions = new TransactionOptions();
txOptions.IsolationLevel = IsolationLevel.Unspecified;
***************
*** 93,96 ****
--- 94,98 ----
using (mocks.Ordered())
{
+ Expect.Call(txAdapter.IsExistingTransaction).Return(false);
TransactionOptions txOptions = new TransactionOptions();
txOptions.IsolationLevel = IsolationLevel.Unspecified;
***************
*** 137,140 ****
--- 139,143 ----
using (mocks.Ordered())
{
+ Expect.Call(txAdapter.IsExistingTransaction).Return(false);
TransactionOptions txOptions = new TransactionOptions();
txOptions.IsolationLevel = IsolationLevel.Unspecified;
***************
*** 142,145 ****
--- 145,149 ----
//inner tx actions
+ Expect.Call(txAdapter.IsExistingTransaction).Return(true);
txAdapter.CreateTransactionScope(TransactionScopeOption.RequiresNew, txOptions, EnterpriseServicesInteropOption.None);
txAdapter.Dispose();
Index: ServiceDomainTransactionManagerTests.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/test/Spring/Spring.Data.Tests/Data/Core/ServiceDomainTransactionManagerTests.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ServiceDomainTransactionManagerTests.cs 4 Dec 2007 16:31:14 -0000 1.3
--- ServiceDomainTransactionManagerTests.cs 4 Dec 2007 19:43:23 -0000 1.4
***************
*** 55,64 ****
public void TransactionCommit()
{
IServiceDomainAdapter txAdapter = (IServiceDomainAdapter) mocks.CreateMock(typeof (IServiceDomainAdapter));
using (mocks.Ordered())
{
! SimpleServiceConfig serviceConfig = CreateServiceConfig();
! serviceConfig.TransactionOption = TransactionOption.Required;
! serviceConfig.IsolationLevel = TransactionIsolationLevel.Any;
txAdapter.Enter(serviceConfig);
--- 55,65 ----
public void TransactionCommit()
{
+ #region Mock Setup
IServiceDomainAdapter txAdapter = (IServiceDomainAdapter) mocks.CreateMock(typeof (IServiceDomainAdapter));
using (mocks.Ordered())
{
! Expect.Call(txAdapter.IsInTransaction).Return(false);
! SimpleServiceConfig serviceConfig = new SimpleServiceConfig();
! ConfigureServiceConfig(serviceConfig, true);
txAdapter.Enter(serviceConfig);
***************
*** 73,78 ****
txAdapter.SetComplete();
Expect.Call(txAdapter.Leave()).Return(TransactionStatus.Commited);
!
}
mocks.ReplayAll();
--- 74,81 ----
txAdapter.SetComplete();
Expect.Call(txAdapter.Leave()).Return(TransactionStatus.Commited);
!
}
+ #endregion
+
mocks.ReplayAll();
***************
*** 98,107 ****
public void TransactionRollback()
{
IServiceDomainAdapter txAdapter = (IServiceDomainAdapter)mocks.CreateMock(typeof(IServiceDomainAdapter));
using (mocks.Ordered())
{
! SimpleServiceConfig serviceConfig = CreateServiceConfig();
! serviceConfig.TransactionOption = TransactionOption.Required;
! serviceConfig.IsolationLevel = TransactionIsolationLevel.Any;
txAdapter.Enter(serviceConfig);
Expect.Call(txAdapter.IsInTransaction).Return(true);
--- 101,112 ----
public void TransactionRollback()
{
+ #region Mock Setup
IServiceDomainAdapter txAdapter = (IServiceDomainAdapter)mocks.CreateMock(typeof(IServiceDomainAdapter));
using (mocks.Ordered())
{
!
! Expect.Call(txAdapter.IsInTransaction).Return(false);
! SimpleServiceConfig serviceConfig = new SimpleServiceConfig();
! ConfigureServiceConfig(serviceConfig, true);
txAdapter.Enter(serviceConfig);
Expect.Call(txAdapter.IsInTransaction).Return(true);
***************
*** 110,113 ****
--- 115,120 ----
}
+ #endregion
+
mocks.ReplayAll();
***************
*** 134,140 ****
}
! private SimpleServiceConfig CreateServiceConfig()
{
- SimpleServiceConfig serviceConfig = new SimpleServiceConfig();
serviceConfig.TransactionDescription = null;
--- 141,198 ----
}
!
! [Test]
! public void PropagationRequiresNewWithExistingTransaction()
! {
! #region Mock Setup
! IServiceDomainAdapter txAdapter = (IServiceDomainAdapter)mocks.CreateMock(typeof(IServiceDomainAdapter));
! using (mocks.Ordered())
! {
!
! Expect.Call(txAdapter.IsInTransaction).Return(false);
! SimpleServiceConfig serviceConfig = new SimpleServiceConfig();
! ConfigureServiceConfig(serviceConfig, true);
! txAdapter.Enter(serviceConfig);
!
!
! Expect.Call(txAdapter.IsInTransaction).Return(true);
! // inner tx
! ConfigureServiceConfig(serviceConfig, false);
! serviceConfig.TransactionOption = TransactionOption.RequiresNew;
! serviceConfig.IsolationLevel = TransactionIsolationLevel.Any;
! txAdapter.Enter(serviceConfig);
! Expect.Call(txAdapter.IsInTransaction).Return(true);
! txAdapter.SetAbort();
! Expect.Call(txAdapter.Leave()).Return(TransactionStatus.Aborted);
! // innter tx aborted
!
!
! //ProcessCommit - status.GlobalRollbackOnly check
! Expect.Call(txAdapter.MyTransactionVote).Return(TransactionVote.Commit);
! //DoCommit - status.GlobalRollbackOnly check
! Expect.Call(txAdapter.MyTransactionVote).Return(TransactionVote.Commit);
!
! Expect.Call(txAdapter.IsInTransaction).Return(true);
! //DoCommit - check to call SetComplete or SetAbort
! Expect.Call(txAdapter.MyTransactionVote).Return(TransactionVote.Commit);
! txAdapter.SetComplete();
!
! Expect.Call(txAdapter.Leave()).Return(TransactionStatus.Commited);
!
! }
! #endregion
!
! mocks.ReplayAll();
!
! IPlatformTransactionManager tm = new ServiceDomainPlatformTransactionManager(txAdapter);
! TransactionTemplate tt = new TransactionTemplate(tm);
! tt.PropagationBehavior = TransactionPropagation.RequiresNew;
! tt.Execute(new PropagationRequiresNewWithExistingTransactionCallbackSD(tt));
! mocks.VerifyAll();
! }
!
! #region Helper Methods
! private SimpleServiceConfig ConfigureServiceConfig(SimpleServiceConfig serviceConfig, bool standardIsolationAndProp)
{
serviceConfig.TransactionDescription = null;
***************
*** 142,148 ****
--- 200,213 ----
serviceConfig.TrackingAppName = "Spring.NET";
serviceConfig.TrackingComponentName = "ServiceDomainPlatformTransactionManager";
+ if (standardIsolationAndProp)
+ {
+ serviceConfig.TransactionOption = TransactionOption.Required;
+ serviceConfig.IsolationLevel = TransactionIsolationLevel.Any;
+ }
return serviceConfig;
}
+ #endregion
+
#region Supporting class for TransactionRollback test
***************
*** 167,171 ****
--- 232,274 ----
#endregion
+
+ #region Supporting class for PropagationRequiresNewWithExistingTransactionCallback test
+ internal class PropagationRequiresNewWithExistingTransactionCallbackSD : ITransactionCallback
+ {
+ private TransactionTemplate tt;
+
+ public PropagationRequiresNewWithExistingTransactionCallbackSD(TransactionTemplate tt)
+ {
+ this.tt = tt;
+ }
+
+ public object DoInTransaction(ITransactionStatus status)
+ {
+ Assert.IsTrue(status.IsNewTransaction, "Is new transaction");
+ Assert.IsTrue(TransactionSynchronizationManager.SynchronizationActive, "Synchronization active");
+ Assert.IsFalse(TransactionSynchronizationManager.CurrentTransactionReadOnly);
+ Assert.IsTrue(TransactionSynchronizationManager.ActualTransactionActive);
+ tt.Execute(new TransactionDelegate(TransactionMethod));
+ Assert.IsTrue(status.IsNewTransaction, "Is new transaction");
+ Assert.IsFalse(TransactionSynchronizationManager.CurrentTransactionReadOnly);
+ Assert.IsTrue(TransactionSynchronizationManager.ActualTransactionActive);
+ return null;
+ }
+
+ private object TransactionMethod(ITransactionStatus status)
+ {
+ Assert.IsTrue(TransactionSynchronizationManager.SynchronizationActive, "Synchronization active");
+ Assert.IsTrue(status.IsNewTransaction, "Is new transaction");
+ Assert.IsFalse(TransactionSynchronizationManager.CurrentTransactionReadOnly);
+ Assert.IsTrue(TransactionSynchronizationManager.ActualTransactionActive);
+ status.RollbackOnly = true;
+ return null;
+ }
+ }
+
+ #endregion
}
+
+
}
#endif
\ No newline at end of file
|