System.Transactions.Tests.NonMsdtcPromoterTests.TestCase_AbortingCloneNotCompleted C# (CSharp) Method

TestCase_AbortingCloneNotCompleted() public static method

public static TestCase_AbortingCloneNotCompleted ( bool promote ) : void
promote bool
return void
        public static void TestCase_AbortingCloneNotCompleted(bool promote)
        {
            string testCaseDescription = string.Format(
                "TestCase_AbortingCloneNotCompleted promote={0}",
                promote
                );

            Trace("**** " + testCaseDescription + " ****");

            AutoResetEvent pspeCompleted = new AutoResetEvent(false);
            NonMSDTCPromoterEnlistment pspe = null;

            try
            {
                using (TransactionScope ts = new TransactionScope())
                {
                    CreateDependentClone(/*blocking=*/false);
                    pspe = (NonMSDTCPromoterEnlistment)CreatePSPEEnlistment(NonMsdtcPromoterTests.PromoterType1,
                        NonMsdtcPromoterTests.PromotedToken1,
                        pspeCompleted,
                        /*nonMSDTC = */ true,
                        /*tx = */ null,
                        /*spcResponse=*/ TransactionStatus.Committed,
                        /*expectRejection=*/ false
                        );

                    if (promote)
                    {
                        Promote(testCaseDescription, NonMsdtcPromoterTests.PromotedToken1);
                    }

                    ts.Complete();
                }
            }
            catch (Exception ex)
            {
                Assert.IsType<TransactionAbortedException>(ex);
            }

            Assert.True(pspeCompleted.WaitOne(TimeSpan.FromSeconds(5)));

            if (promote)
            {
                Assert.True(pspe.Promoted);
            }
            else
            {
                Assert.False(pspe.Promoted);
            }

            Assert.True(pspe.Aborted);

            TestPassed();
        }
NonMsdtcPromoterTests