// public constructors /// <summary> /// Initializes a new instance of the <see cref="CoreTransaction" /> class. /// </summary> /// <param name="transactionNumber">The transaction number.</param> /// <param name="transactionOptions">The transaction options.</param> public CoreTransaction(long transactionNumber, TransactionOptions transactionOptions) { _transactionNumber = transactionNumber; _transactionOptions = transactionOptions; _state = CoreTransactionState.Starting; _isEmpty = true; }
public UnifiedAssertSessionTransactionStateOperation( IClientSessionHandle session, CoreTransactionState coreTransactionState) { _session = session; _coreTransactionState = coreTransactionState; }
// internal methods internal void SetState(CoreTransactionState state) { _state = state; if (state == CoreTransactionState.InProgress) { _isEmpty = false; } }
public void SetState_should_have_expected_result(CoreTransactionState value, bool expectedIsEmpty) { var subject = CreateSubject(); subject.SetState(value); subject.State.Should().Be(value); subject.IsEmpty.Should().Be(expectedIsEmpty); }
public void State_should_return_expected_result(CoreTransactionState value) { var subject = CreateSubject(); subject.SetState(value); var result = subject.State; result.Should().Be(value); }
// protected methods protected override void SetArgument(string name, BsonValue value) { switch (name) { case "state": _state = MapTransactionState(value.ToString()); break; default: base.SetArgument(name, value); break; } }
public void IsEmpty_should_return_expected_result(CoreTransactionState transactionState1, CoreTransactionState transactionState2, bool expectedResult) { var subject = CreateSubject(); if (transactionState1 != (CoreTransactionState)(-1)) { subject.SetState(transactionState1); } if (transactionState2 != (CoreTransactionState)(-1)) { subject.SetState(transactionState2); } var result = subject.IsEmpty; result.Should().Be(expectedResult); }
public void AboutToSendCommand_should_have_expected_result(bool hasCurrentTransaction, CoreTransactionState transactionState, bool isCommitTransactionInProgress, bool expectedHasCurrentTransaction) { var subject = CreateSubject(); if (hasCurrentTransaction) { subject.StartTransaction(); subject.CurrentTransaction.SetState(transactionState); subject._isCommitTransactionInProgress(isCommitTransactionInProgress); } subject.AboutToSendCommand(); if (expectedHasCurrentTransaction) { subject.CurrentTransaction.Should().NotBeNull(); } else { subject.CurrentTransaction.Should().BeNull(); } }
public void IsInTransaction_should_return_expected_result(bool hasCurrentTransaction, CoreTransactionState transactionState, bool isCommitTransactionInProgress, bool expectedResult) { var subject = CreateSubject(); if (hasCurrentTransaction) { subject.StartTransaction(); subject.CurrentTransaction.SetState(transactionState); subject._isCommitTransactionInProgress(isCommitTransactionInProgress); } var result = subject.IsInTransaction; result.Should().Be(expectedResult); }
public void WithTransaction_with_error_in_callback_should_call_AbortTransaction_according_to_transaction_state(CoreTransactionState transactionState, bool shouldAbortTransactionBeCalled) { var mockCoreSession = CreateCoreSessionMock(); mockCoreSession.Setup(c => c.StartTransaction(It.IsAny <TransactionOptions>())); mockCoreSession.Setup(c => c.AbortTransaction(It.IsAny <CancellationToken>())); // abort ignores exceptions mockCoreSession.Setup(c => c.CommitTransaction(It.IsAny <CancellationToken>())); var subject = CreateSubject(coreSession: mockCoreSession.Object); subject.WrappedCoreSession.CurrentTransaction.SetState(transactionState); Assert.Throws <Exception>(() => subject.WithTransaction <object>((handle, cancellationToken) => throw new Exception("test"))); mockCoreSession.Verify(handle => handle.StartTransaction(It.IsAny <TransactionOptions>()), Times.Once); mockCoreSession.Verify(handle => handle.AbortTransaction(It.IsAny <CancellationToken>()), shouldAbortTransactionBeCalled ? Times.Once() : Times.Never()); mockCoreSession.Verify(handle => handle.CommitTransaction(It.IsAny <CancellationToken>()), Times.Never); }