diff --git a/CMakeLists.txt b/CMakeLists.txt index a5818f0019..6fe4420753 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -125,6 +125,15 @@ set(FDB_FUTURE_VERSION "7.5.0") set(FDB_PREV_RELEASE_VERSION "7.3.41") set(FDB_PREV2_RELEASE_VERSION "7.1.33") +set(MULTIREGION_TEST TRUE) +option(NO_MULTIREGION_TEST "Disable multiregion simulation tests" OFF) + +if (NO_MULTIREGION_TEST) + set(MULTIREGION_TEST FALSE) + add_definitions(-DNO_MULTIREGION_TEST) + message(STATUS "NO_MULTIREGION_TEST is ON") +endif() + ################################################################################ # Flow ################################################################################ diff --git a/fdbserver/SimulatedCluster.actor.cpp b/fdbserver/SimulatedCluster.actor.cpp index 36c79860db..1b2eef4db8 100644 --- a/fdbserver/SimulatedCluster.actor.cpp +++ b/fdbserver/SimulatedCluster.actor.cpp @@ -1675,12 +1675,18 @@ void SimulationConfig::setSpecificConfig(const TestConfig& testConfig) { // Sets generateFearless and number of dataCenters based on testConfig details // The number of datacenters may be overwritten in setRegions void SimulationConfig::setDatacenters(const TestConfig& testConfig) { - generateFearless = - testConfig.simpleConfig ? false : (testConfig.minimumRegions > 1 || deterministicRandom()->random01() < 0.5); - if (testConfig.generateFearless.present()) { - // overwrite whatever decision we made before - generateFearless = testConfig.generateFearless.get(); + +#ifdef NO_MULTIREGION_TEST + if (testConfig.minimumRegions > 1 || (testConfig.generateFearless.present() && testConfig.generateFearless.get())) { + throw internal_error_msg("Test requires multi-region while the flag is turned off in the build process"); } + generateFearless = false; +#else + generateFearless = + testConfig.generateFearless.present() + ? testConfig.generateFearless.get() + : (!testConfig.simpleConfig && (testConfig.minimumRegions > 1 || deterministicRandom()->random01() < 0.5)); +#endif datacenters = testConfig.simpleConfig ? 1 @@ -2346,10 +2352,12 @@ void SimulationConfig::generateNormalConfig(const TestConfig& testConfig) { setEncryptionAtRestMode(testConfig); setStorageEngine(testConfig); setReplicationType(testConfig); +#if (!NO_MULTIREGION_TEST) if (!testConfig.singleRegion && (generateFearless || (datacenters == 2 && deterministicRandom()->random01() < 0.5))) { setRegions(testConfig); } +#endif setMachineCount(testConfig); setCoordinators(testConfig); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c2b4329f35..610d141dcc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -41,9 +41,21 @@ if(WITH_PYTHON) configure_file(${PROJECT_SOURCE_DIR}/tests/CTestCustom.ctest.cmake ${PROJECT_BINARY_DIR}/CTestCustom.ctest @ONLY) + set(MULTIREGION_IGNORE_PATTERNS "") + + if (NO_MULTIREGION_TEST) + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/fast/ValidateStorage\\.toml$") + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/rare/DcLag\\.toml$") + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/rare/ClogRemoteTLog\\.toml$") + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/rare/FailoverWithSSLag\\.toml$") + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/fast/KillRegionCycle\\.toml$") + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/slow/GcGenerations\\.toml$") + list(APPEND MULTIREGION_IGNORE_PATTERNS "${CMAKE_CURRENT_SOURCE_DIR}/slow/DiskFailureCycle\\.toml$") + endif() + configure_testing(TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - ERROR_ON_ADDITIONAL_FILES - IGNORE_PATTERNS ".*/CMakeLists.txt" ".*/requirements.txt") + ERROR_ON_ADDITIONAL_FILES + IGNORE_PATTERNS ".*/CMakeLists.txt" ".*/requirements.txt" ${MULTIREGION_IGNORE_PATTERNS}) add_fdb_test(TEST_FILES AsyncFileCorrectness.txt UNIT IGNORE) add_fdb_test(TEST_FILES AsyncFileMix.txt UNIT IGNORE) @@ -182,7 +194,6 @@ if(WITH_PYTHON) add_fdb_test(TEST_FILES fast/IncrementTest.toml) add_fdb_test(TEST_FILES fast/InventoryTestAlmostReadOnly.toml) add_fdb_test(TEST_FILES fast/InventoryTestSomeWrites.toml) - add_fdb_test(TEST_FILES fast/KillRegionCycle.toml) add_fdb_test(TEST_FILES fast/LocalRatekeeper.toml) add_fdb_test(TEST_FILES fast/LongStackWriteDuringRead.toml) add_fdb_test(TEST_FILES fast/LowLatency.toml) @@ -233,8 +244,20 @@ if(WITH_PYTHON) add_fdb_test(TEST_FILES fast/WriteDuringReadClean.toml) add_fdb_test(TEST_FILES noSim/RandomUnitTests.toml IGNORE) + if (MULTIREGION_TEST) + # ValidateStorage depends on WITH_ROCKSDB + add_fdb_test(TEST_FILES slow/DiskFailureCycle.toml) + add_fdb_test(TEST_FILES rare/FailoverWithSSLag.toml) + add_fdb_test(TEST_FILES rare/DcLag.toml) + add_fdb_test(TEST_FILES slow/GcGenerations.toml) + add_fdb_test(TEST_FILES fast/KillRegionCycle.toml) + add_fdb_test(TEST_FILES rare/ClogRemoteTLog.toml) + endif() + if(WITH_ROCKSDB) - add_fdb_test(TEST_FILES fast/ValidateStorage.toml) + if(MULTIREGION_TEST) + add_fdb_test(TEST_FILES fast/ValidateStorage.toml) + endif() add_fdb_test(TEST_FILES noSim/KeyValueStoreRocksDBTest.toml UNIT) add_fdb_test(TEST_FILES noSim/ShardedRocksDBTest.toml UNIT) add_fdb_test(TEST_FILES noSim/ShardedRocksDBCheckpointTest.toml UNIT) @@ -277,7 +300,6 @@ if(WITH_PYTHON) add_fdb_test(TEST_FILES rare/BlobGranuleVerifyLargeClean.toml IGNORE) add_fdb_test(TEST_FILES rare/CheckRelocation.toml) add_fdb_test(TEST_FILES rare/ClogTlog.toml) - add_fdb_test(TEST_FILES rare/ClogRemoteTLog.toml) add_fdb_test(TEST_FILES rare/ClogUnclog.toml) add_fdb_test(TEST_FILES rare/CloggedCycleWithKills.toml) add_fdb_test(TEST_FILES rare/ConfigDBUnitTest.toml) @@ -287,9 +309,7 @@ if(WITH_PYTHON) add_fdb_test(TEST_FILES rare/CycleWithKills.toml) add_fdb_test(TEST_FILES rare/CycleWithDeadHall.toml) add_fdb_test(TEST_FILES rare/DataDistributionMetrics.toml) - add_fdb_test(TEST_FILES rare/DcLag.toml) add_fdb_test(TEST_FILES rare/ExpectStableThroughput.toml) - add_fdb_test(TEST_FILES rare/FailoverWithSSLag.toml) add_fdb_test(TEST_FILES rare/HighContentionPrefixAllocator.toml) add_fdb_test(TEST_FILES rare/InventoryTestHeavyWrites.toml) add_fdb_test(TEST_FILES rare/LargeApiCorrectness.toml) @@ -466,10 +486,8 @@ if(WITH_PYTHON) add_fdb_test(TEST_FILES slow/DDBalanceAndRemove.toml) add_fdb_test(TEST_FILES slow/DDBalanceAndRemoveStatus.toml) add_fdb_test(TEST_FILES slow/DifferentClustersSameRV.toml) - add_fdb_test(TEST_FILES slow/DiskFailureCycle.toml) add_fdb_test(TEST_FILES slow/ExcludeIncludeStorageServers.toml) add_fdb_test(TEST_FILES slow/FastTriggeredWatches.toml) - add_fdb_test(TEST_FILES slow/GcGenerations.toml) add_fdb_test(TEST_FILES slow/LongRunning.toml LONG_RUNNING) add_fdb_test(TEST_FILES slow/LowLatencyWithFailures.toml) add_fdb_test(TEST_FILES slow/MoveKeysClean.toml)