Exemplo n.º 1
0
        public void ControlRefusesToCancelTransactionThatIsNotRegistered()
        {
            var control     = new AggregatingTransactionControl();
            var transaction = new DeferredPipelineTransaction(new AggregatingTransactionControl());

            Assert.Throws <ArgumentException>(() => control.Cancel(transaction));
        }
Exemplo n.º 2
0
        public void ControlRefusesToCommitTransactionThatIsNotRegistered()
        {
            var control     = new AggregatingTransactionControl();
            var transaction = new DeferredPipelineTransaction(new AggregatingTransactionControl());

            Assert.Throws <ArgumentException>(() => control.Commit(transaction, Enumerable.Empty <DeferredTransactionPart>()));
        }
Exemplo n.º 3
0
        public void ConcurrentTransactionsWhichCollideCausesTheLastOneToRollback(int[] totalOrder, int[] transaction1, int[] transaction2)
        {
            var stages = Enumerable.Repeat(1, totalOrder.Length).Select(_ => PipelineTestHelper.Assignable(1)).ToList();
            var tests  = stages.Select(stage => stage.AttachTestStage()).ToList();

            var control = new AggregatingTransactionControl();
            var t1      = control.CreateTransaction();
            var t2      = control.CreateTransaction();

            foreach (var i in totalOrder)
            {
                if (transaction1.Contains(i))
                {
                    t1.Update(stages[i], 2);
                }
                if (transaction2.Contains(i))
                {
                    t2.Update(stages[i], 2);
                }
            }

            AssertExpectedTransactionOutcome(t1, t2, stages, tests, transaction1, PipelineTransactionResult.PendingSuccess, PipelineTransactionResult.Failed);
        }
        public void TransactionDoesNothingBeforeCommit()
        {
            var value   = PipelineTestHelper.Assignable(1);
            var test    = value.AttachTestStage();
            var control = PipelineTestHelper.TransactionControlMock();

            control.Setup(mock => mock.Commit(It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >()))
            .Callback(new Action <DeferredPipelineTransaction, IEnumerable <DeferredTransactionPart> >((a, b) => { var c = new AggregatingTransactionControl(); c.Register(a); c.Commit(a, b); }));

            var sut = new DeferredPipelineTransaction(control.Object)
                      .Update(value, 2);

            control.Verify(mock => mock.Commit(It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >()), Times.Never);
            PipelineAssert.Value(value, 1);
            test.AssertNotInvalidatedNorRetrieved();

            sut.Commit();
            control.Verify(mock => mock.Commit(It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >()), Times.Once);
            PipelineAssert.Value(value, 2);
            test.AssertInvalidations(1);
        }