mongo/jstests/sharding/internal_txns/retryable_findAndModify_bas...

38 lines
1.3 KiB
JavaScript

/*
* Tests that retryable internal transactions for findAndModify are retryable and other kinds of
* transactions for findAndModify are not retryable.
*
* @tags: [requires_fcv_60, uses_transactions, exclude_from_large_txns]
*/
import {RetryableInternalTransactionTest} from "jstests/sharding/internal_txns/libs/retryable_internal_transaction_test.js";
const transactionTest = new RetryableInternalTransactionTest();
{
jsTest.log("Test that non-internal transactions cannot be retried");
const makeSessionIdFunc = () => {
return {id: UUID()};
};
const expectRetryToSucceed = false;
transactionTest.runFindAndModifyTestsEnableImageCollection({txnOptions: {makeSessionIdFunc}, expectRetryToSucceed});
}
{
jsTest.log("Test that non-retryable internal transactions cannot be retried");
const makeSessionIdFunc = () => {
return {id: UUID(), txnUUID: UUID()};
};
const expectRetryToSucceed = false;
transactionTest.runFindAndModifyTestsEnableImageCollection({txnOptions: {makeSessionIdFunc}, expectRetryToSucceed});
}
{
jsTest.log("Test that retryable internal transactions can be retried");
transactionTest.runTestsForAllRetryableInternalTransactionTypes(
transactionTest.runFindAndModifyTestsEnableImageCollection,
transactionTest.TestMode.kNonRecovery,
);
}
transactionTest.stop();