# # This file defines the tasks and platforms for WiredTiger in the # MongoDB continuous integration system (https://evergreen.mongodb.com). # ####################################### # Project Settings # ####################################### stepback: true pre: - func: "cleanup" post: - func: "dump stacktraces" - func: "upload stacktraces" - func: "dump stderr/stdout" - func: "upload artifact" vars: postfix: -${execution} - func: "save wt hang analyzer core/debugger files" - func: "cleanup" timeout: - func: "run wt hang analyzer" exec_timeout_secs: 21600 # 6 hrs ####################################### # Functions # ####################################### functions: "get project": command: git.get_project params: directory: wiredtiger "fetch artifacts": &fetch_artifacts command: s3.get params: aws_key: ${aws_key} aws_secret: ${aws_secret} remote_file: wiredtiger/${build_variant}/${revision}/artifacts/${dependent_task|compile}_${build_id}.tgz bucket: build_external extract_to: ${destination|wiredtiger} "fetch endian format artifacts" : - command: s3.get params: aws_key: ${aws_key} aws_secret: ${aws_secret} remote_file: wiredtiger/${endian_format}/${revision}/artifacts/${remote_file}.tgz bucket: build_external extract_to: wiredtiger/cmake_build/test/format "fetch mongo-tests repo" : command: shell.exec params: shell: bash script: | set -o errexit set -o verbose git clone https://github.com/wiredtiger/mongo-tests "fetch mongo repo" : command: shell.exec params: shell: bash script: | set -o errexit set -o verbose mongo_repo=https://github.com/mongodb/mongo branch=${branch_name} if [[ $branch =~ "mongodb-" ]]; then mongo_branch=v$(echo $branch | cut -d'-' -f 2) else mongo_branch=master fi git clone $mongo_repo -b $mongo_branch "import wiredtiger into mongo" : command: shell.exec params: shell: bash script: | set -o errexit set -o verbose cp -a wiredtiger mongo/src/third_party/ "compile mongodb" : command: shell.exec params: shell: bash working_dir: "mongo" script: | set -o errexit set -o verbose export "PATH=/opt/mongodbtoolchain/v4/bin:$PATH" virtualenv -p python3 venv source venv/bin/activate pip3 install requirements_parser pip3 install -r etc/pip/compile-requirements.txt ./buildscripts/scons.py --variables-files=etc/scons/mongodbtoolchain_stable_gcc.vars --link-model=dynamic --ninja generate-ninja ICECC=icecc CCACHE=ccache ninja -j$(nproc --all) install-mongod "configure wiredtiger": &configure_wiredtiger command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit # Not setting verbose mode as we have sensitive keys that could be logged. # Define common config flags for the tasks to make it cleaner when configuring the tasks. # Note that the config flags are resolved prior to changing to cmake_build directory. DEFINED_EVERGREEN_CONFIG_FLAGS="${CMAKE_BUILD_TYPE|} \ ${CMAKE_INSTALL_PREFIX|-DCMAKE_INSTALL_PREFIX=$(pwd)/cmake_build/LOCAL_INSTALL} \ ${CMAKE_PREFIX_PATH|} \ ${CMAKE_TOOLCHAIN_FILE|-DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_stable_gcc.cmake} \ ${NONSTANDALONE|} \ ${ENABLE_SHARED|} \ ${ENABLE_STATIC|} \ ${HAVE_BUILTIN_EXTENSION_LZ4|} \ ${HAVE_BUILTIN_EXTENSION_SNAPPY|} \ ${HAVE_BUILTIN_EXTENSION_ZLIB|} \ ${HAVE_BUILTIN_EXTENSION_ZSTD|} \ ${HAVE_FTRUNCATE|} \ ${HAVE_UNITTEST} \ ${NON_BARRIER_DIAGNOSTIC_YIELDS|} \ ${HAVE_DIAGNOSTIC|} \ ${GNU_C_VERSION|} \ ${GNU_CXX_VERSION|} \ ${ENABLE_AZURE|} \ ${ENABLE_CPPSUITE|} \ ${ENABLE_GCP|} \ ${ENABLE_S3|} \ ${IMPORT_AZURE_SDK|} \ ${IMPORT_GCP_SDK|} \ ${IMPORT_S3_SDK|} \ ${SPINLOCK_TYPE|} \ ${CC_OPTIMIZE_LEVEL|}" # The RHEL PPC platform does not have ZSTD. Strip it out. if [ "${build_variant|}" = "rhel8-ppc" ] && [[ "$DEFINED_EVERGREEN_CONFIG_FLAGS" =~ (\-DHAVE_BUILTIN_EXTENSION_ZSTD=1) ]]; then DEFINED_EVERGREEN_CONFIG_FLAGS=${DEFINED_EVERGREEN_CONFIG_FLAGS/\-DHAVE_BUILTIN_EXTENSION_ZSTD=1/} fi if [ "${build_variant|}" = "macos-1100" ]; then # For mac builds, we want explicitly tell cmake which python to use, as # well as the matching library directory and header files. The find_libpython # module gives us the library. SYSPY=${python_binary} $SYSPY -mvenv venv source venv/bin/activate pip3 install find_libpython SYSPYLIB=`find_libpython` SYSPYINCDEF= # We have the shared library to link to, it may be named simply 'Python3' or 'Python'. # If that's the case, use the associated dylib symlink found in an expected relative # location. Also get the location of the header files. We'll give this all to cmake. base=$(basename $SYSPYLIB) if [ "$base" = 'Python3' -o "$base" = 'Python' ]; then SYSPYDIR=$(dirname $SYSPYLIB) NSYSPYLIB=$(ls $SYSPYDIR/lib/libpython*.dylib 2>/dev/null | head -1) if [ -f "$NSYSPYLIB" ]; then SYSPYLIB=$NSYSPYLIB fi if [ -d "$SYSPYDIR/Headers" ]; then SYSPYINCDEF="-DPYTHON_INCLUDE_DIR=$SYSPYDIR/Headers" fi fi DEFINED_EVERGREEN_CONFIG_FLAGS="$DEFINED_EVERGREEN_CONFIG_FLAGS -DPYTHON_EXECUTABLE:FILEPATH=$SYSPY -DPYTHON_LIBRARY=$SYSPYLIB $SYSPYINCDEF" fi if [ "$OS" = "Windows_NT" ]; then # Use the Windows powershell script to configure the CMake build. # We execute it in a powershell environment as its easier to detect and source the Visual Studio # toolchain in a native Windows environment. We can't easily execute the build in a cygwin environment. echo "Using config flags $DEFINED_EVERGREEN_CONFIG_FLAGS ${windows_configure_flags|}" ${configure_env_vars|} powershell.exe -NonInteractive '.\test\evergreen\build_windows.ps1' -configure 1 $DEFINED_EVERGREEN_CONFIG_FLAGS ${windows_configure_flags|} else echo "Using config flags $DEFINED_EVERGREEN_CONFIG_FLAGS ${posix_configure_flags|}" # Fetch the gperftools library if needed. This will also get tcmalloc. if [[ "$DEFINED_EVERGREEN_CONFIG_FLAGS ${posix_configure_flags|}" =~ (tcmalloc|TCMALLOC) ]] && ! [[ "$DEFINED_EVERGREEN_CONFIG_FLAGS ${posix_configure_flags|}" =~ "ENABLE_TCMALLOC=0" ]] && [ ! -d "./automation-scripts" ]; then is_cmake_build=true git clone git@github.com:wiredtiger/automation-scripts.git . automation-scripts/evergreen/find_gperftools.sh ${s3_access_key} ${s3_secret_key} ${build_variant} $is_cmake_build fi # Compiling with CMake. . test/evergreen/find_cmake.sh # If we've fetched the wiredtiger artifact from a previous compilation/build, it's best to remove # the previous build directory so we can create a fresh configuration. We can't use the the previous # CMake Cache configuration as its likely it will have absolute paths related to the previous build machine. if [ -d cmake_build ]; then rm -r cmake_build; fi mkdir -p cmake_build cd cmake_build ${configure_env_vars|} $CMAKE $DEFINED_EVERGREEN_CONFIG_FLAGS ${posix_configure_flags|} -G "${cmake_generator|Ninja}" ./.. fi "python config check": command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose # Note: ${var} is used for expansions of evergreen variables, whereas $var are /bin/sh variables. python_configured=$(grep PYTHON_EXECUTABLE: ./CMakeCache.txt | sed -e 's/.*=//') if [ "${python_binary}" = '' -o "$python_configured" = '' -o "$(${python_binary} -V -V)" != "$($python_configured -V -V)" ]; then echo "Python versions do not match." echo "Python version used by cmake builds ($python_configured):" if [ "$python_configured" = '' ]; then echo "No python configured" else $python_configured -V -V fi echo "Python version used in shell commands (${python_binary}):" if [ "${python_binary}" = '' ]; then echo "No python set in Expansions" else ${python_binary} -V -V fi exit 1 fi "make wiredtiger": &make_wiredtiger command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose if [ "$OS" = "Windows_NT" ]; then # Use the Windows powershell script to execute Ninja build (can't execute directly in a cygwin environment). powershell.exe '.\test\evergreen\build_windows.ps1 -build 1' else # Compiling with CMake generated Ninja file. cd cmake_build ${compile_env_vars|} ${make_command|ninja} ${smp_command|} 2>&1 fi "compile wiredtiger": - *configure_wiredtiger - *make_wiredtiger "compile wiredtiger no linux ftruncate": - *configure_wiredtiger - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose echo '#undef HAVE_FTRUNCATE' >> config/wiredtiger_config.h - *make_wiredtiger "dump stacktraces": &dump_stacktraces command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose ${python_binary|python3} ../test/evergreen/print_stack_trace.py "upload stacktraces": &upload_stacktraces command: s3.put params: aws_secret: ${aws_secret} aws_key: ${aws_key} local_files_include_filter: - wiredtiger/cmake_build/*stacktrace.txt bucket: build_external permissions: public-read content_type: text/plain remote_file: wiredtiger/${build_variant}/${revision}/artifacts/${task_name}_${build_id}/ "run data validation stress test checkpoint": - *fetch_artifacts - command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/checkpoint" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} ../../../tools/run_parallel.sh 'nice ./recovery-test.sh "${data_validation_stress_test_args} ${run_test_checkpoint_args}" WT_TEST.$t test_checkpoint' 120 "run tiered storage test": - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash include_expansions_in_env: - aws_sdk_s3_ext_access_key - aws_sdk_s3_ext_secret_key script: | set -o errexit # Set the Azure credentials using config variable. export AZURE_STORAGE_CONNECTION_STRING="${azure_sdk_ext_access_key}" # GCP requires a path to a credentials file for authorization. To not expose the private # information within the file, we use a placeholder private variable which are replaced # in the command line with the evergreen expansion variables and stored in a temporary # file. file=$(mktemp --suffix ".json") # Use '|' as the delimiter instead of default behaviour because the private key contains # slash characters. sed -e 's|gcp_project_id|${gcp_sdk_ext_project_id}|' \ -e 's|gcp_private_key|'"${gcp_sdk_ext_private_key}"'|' \ -e 's|gcp_private_id|${gcp_sdk_ext_private_key_id}|' \ -e 's|gcp_client_email|${gcp_sdk_ext_client_email}|' \ -e 's|gcp_client_id|${gcp_sdk_ext_client_id}|' \ -e 's|gcp_client_x509_cert_url|${gcp_sdk_ext_client_x509_cert_url}|' ../test/evergreen/gcp_auth.json > $file export GOOGLE_APPLICATION_CREDENTIALS="$file" virtualenv -p python3 venv source venv/bin/activate pip3 install boto3 pip3 install azure-storage-blob pip3 install google-cloud-storage # Run Python testing for all tiered tests. ${test_env_vars|} python3 ../test/suite/run.py -j $(nproc) ${tiered_storage_test_name} "compile wiredtiger docs": - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose # Check if specific branches are provided to the function through the expansion variable # defined in the documentation-update build variant. If none are specified, use the # current branch. if [ -z ${doc_update_branches} ]; then branches=$(git rev-parse --abbrev-ref HEAD) else branches=${doc_update_branches} fi # Because of Evergreen's expansion syntax, this is used to process each branch separately. IFS=, for branch in $branches; do echo "Checking out branch $branch ..." git checkout $branch # Java API is removed in newer branches via WT-6675. if [ $branch == "mongodb-4.2" ]; then pushd build_posix sh reconf ../configure CFLAGS="-DMIGHT_NOT_RUN -Wno-error" --enable-java --enable-python --enable-strict (cd lang/python && make ../../../lang/python/wiredtiger_wrap.c) (cd lang/java && make ../../../lang/java/wiredtiger_wrap.c) elif [ $branch == "mongodb-5.0" ] || [ $branch == "mongodb-4.4" ]; then pushd build_posix sh reconf ../configure CFLAGS="-DMIGHT_NOT_RUN -Wno-error" --enable-python --enable-strict (cd lang/python && make ../../../lang/python/wiredtiger_wrap.c) else . test/evergreen/find_cmake.sh if [ -d cmake_build ]; then rm -r cmake_build; fi mkdir -p cmake_build pushd cmake_build # Adding -DENABLE_PYTHON=1 -DENABLE_STRICT=1 as 6.0 does not default these like develop. $CMAKE -DCMAKE_C_FLAGS="-DMIGHT_NOT_RUN -Wno-error" -DENABLE_PYTHON=1 -DENABLE_STRICT=1 ../. make -C lang/python ${smp_command|} fi # Pop to root project directory. popd # Generate WiredTiger documentation. (cd dist && sh s_docs && echo "The documentation for $branch was successfully generated.") # Save generated documentation mv docs docs-$branch done "update wiredtiger docs": - command: shell.exec params: shell: bash script: | # Use a single function to update the documentation of each supported WiredTiger branch. # This is useful as not all branches have a dedicated Evergreen project. Furthermore, the # documentation-update task is not triggered by every commit. We rely on the activity of # the develop branch to update the documentation of all supported branches. set -o errexit set -o verbose if [[ "${branch_name}" != "develop" ]]; then echo "We only run the documentation update task on the WiredTiger (develop) Evergreen project." exit 0 fi git clone git@github.com:wiredtiger/wiredtiger.github.com.git cd wiredtiger.github.com # Branches to update are defined through an expansion variable. branches=${doc_update_branches} # Go through each branch to stage the doc changes. IFS=, for branch in $branches; do # Synchronize the generated documentation with the current one. echo "Synchronizing documentation for branch $branch ..." rsync -avq ../wiredtiger/docs-$branch/ $branch/ --delete # Commit and push the changes if any. if [[ $(git status "$branch" --porcelain) ]]; then git add $branch git commit -m "Update auto-generated docs for $branch" \ --author="svc-bot-doc-build " else echo "No documentation changes for $branch." fi done - command: shell.exec params: shell: bash silent: true script: | set -o errexit # We could have exited the previous command for the same reason. if [[ "${branch_name}" != "develop" ]]; then echo "We only run the documentation update task on the WiredTiger (develop) Evergreen project." exit 0 fi cd wiredtiger.github.com git push https://"${doc-update-github-token}"@github.com/wiredtiger/wiredtiger.github.com "make check directory": command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose . test/evergreen/find_cmake.sh cd cmake_build/${directory} ${test_env_vars|} $CTEST ${smp_command|} --output-on-failure 2>&1 "make check all": command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose . test/evergreen/find_cmake.sh cd cmake_build ${test_env_vars|} $CTEST -L check ${smp_command|} --output-on-failure ${check_args|} 2>&1 "cppsuite test": - command: shell.exec params: # The tests need to be executed in the cppsuite directory as some required libraries have # their paths defined relative to this directory. # The below script saves the exit code from the test to use it later in this function. By # doing this we can define our own custom artifact upload task without it being cancelled by # the test failing. # Additionally if the test fails perf statistics won't be uploaded as they may be invalid # due to the test failure. working_dir: "wiredtiger/cmake_build/test/cppsuite" shell: bash script: | set -o verbose ${test_env_vars|} ./run -t ${test_name} -C '${test_config}' -f ${test_config_filename} -l 2 exit_code=$? echo "$exit_code" > cppsuite_exit_code if [ "$exit_code" != 0 ]; then echo "[{\"info\":{\"test_name\": \"${test_name}\"},\"metrics\": []}]" > ${test_name}.json fi exit 0 # Since we later remove the WiredTiger folder, we need to check for core dumps now. - *dump_stacktraces - *upload_stacktraces - command: perf.send params: file: ./wiredtiger/cmake_build/test/cppsuite/${test_name}.json # Delete unnecessary data from the upload. - command: shell.exec params: shell: bash script: | rm -rf wiredtiger/cmake_build/examples rm -rf wiredtiger/cmake_build/bench mv wiredtiger/cmake_build/test/cppsuite wiredtiger/cmake_build/ rm -rf wiredtiger/cmake_build/test/ mkdir wiredtiger/cmake_build/test/ mv wiredtiger/cmake_build/cppsuite wiredtiger/cmake_build/test/cppsuite - command: archive.targz_pack params: target: archive.tgz source_dir: wiredtiger/cmake_build/ include: - "./**" - command: s3.put params: aws_secret: ${aws_secret} aws_key: ${aws_key} local_file: archive.tgz bucket: build_external permissions: public-read content_type: application/tar display_name: cppsuite-test remote_file: wiredtiger/${build_variant}/${revision}/artifacts/${task_name}_${build_id}${postfix|}.tgz # We remove the wiredtiger directory here to avoid to getting archived again by post tasks. - command: shell.exec params: shell: bash script: | set -o verbose if [ -f wiredtiger/cmake_build/test/cppsuite/cppsuite_exit_code ]; then exit_code=`cat wiredtiger/cmake_build/test/cppsuite/cppsuite_exit_code` else exit_code=0 fi rm -rf wiredtiger exit "$exit_code" "wt2853_perf test": command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/wt2853_perf" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} ./test_wt2853_perf ${wt2853_perf_args} "csuite test": command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} $(pwd)/test/csuite/${test_name}/test_${test_name} ${test_args|} 2>&1 "unit test": command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose cd cmake_build if [ ${check_coverage|false} = true ]; then ${test_env_vars|} ${python_binary|python3} ../test/suite/run.py ${unit_test_args|-v 2} ${smp_command|} 2>&1 || echo "Ignoring failed test as we are checking test coverage" else ${test_env_vars|} ${python_binary|python3} ../test/suite/run.py ${unit_test_args|-v 2} ${smp_command|} 2>&1 fi "format test": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/format" shell: bash script: | set -o errexit set -o verbose # Fail, show the configuration file. fail() { echo "======= FAILURE ==========" [ -f RUNDIR/CONFIG ] && cat RUNDIR/CONFIG exit 1 } for i in $(seq ${times|1}); do ./t -c ${config|../../../test/format/CONFIG.stress} ${trace_args|-T bulk,txn,retain=50} ${extra_args|} || fail done "format test predictable": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/format" shell: bash script: | # To test predictable replay, we run test/format three times with the same data seed # each time, and compare the keys and values found in the WT home directories. # The first run is a timed one. When it's completed, we get the run's stable timestamp, # and do the subsequent runs up to that stable timestamp. This, along with predictable # replay using the same data seed, should guarantee we have equivalent data created. set -o errexit set -o verbose # Get a random value with leading zeroes removed, /bin/sh version. rando() { tr -cd 0-9 &1 stable_hex=$(../../../tools/wt_timestamps RUNDIR_1 | sed -e '/stable=/!d' -e 's/.*=//') ops=$(echo $((0x$stable_hex))) # Do the second run up to the stable timestamp, using the same data seed, # but with a different extra seed. Compare it when done. common_args="-c RUNDIR_1/CONFIG runs.timer=0 runs.ops=$ops" ./t -h RUNDIR_2 $common_args random.extra_seed=$x2 || fail RUNDIR_2/CONFIG 2>&1 ../../../tools/wt_cmp_dir RUNDIR_1 RUNDIR_2 || fail RUNDIR_1/CONFIG RUNDIR_2/CONFIG 2>&1 # Do the third run up to the stable timestamp, using the same data seed, # but with a different extra seed. Compare it to the second run when done. ./t -h RUNDIR_3 $common_args random.extra_seed=$x3 || fail RUNDIR_3/CONFIG 2>&1 ../../../tools/wt_cmp_dir RUNDIR_2 RUNDIR_3 || fail RUNDIR_2/CONFIG RUNDIR_3/CONFIG 2>&1 done "format test script": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/format" shell: bash script: | set -o errexit set -o verbose ${format_test_setting|} for i in $(seq ${times|1}); do ${test_env_vars|} ./format.sh ${smp_command|} ${format_test_script_args|} 2>&1 done "format test tiered": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/format" shell: bash script: | # To make sure we have plenty of flush_tier calls, we set the flush frequency high # and the time between checkpoints low. We specify only using tables, as that's the # only kind of URI that participates in tiered storage. set -o errexit set -o verbose format_args="tiered_storage.storage_source=dir_store tiered_storage.flush_frequency=60 checkpoint.wait=15 runs.source=table runs.timer=10" for i in $(seq ${times}); do echo Iteration $i/${times} rm -rf RUNDIR ./t $format_args ${extra_args} done "many dbs test": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/manydbs" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} ./test_manydbs ${many_db_args|} 2>&1 "thread test": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/thread" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} ./t ${thread_test_args|} 2>&1 "recovery stress test script": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/csuite" shell: bash script: | set -o errexit set -o verbose for i in $(seq ${times|1}); do # Run the various combinations of args. Let time and threads be random. Add a # timing stress to test_timestamp_abort every other run. if [ $(( $i % 2 )) -eq 0 ]; then test_timestamp_abort_args=-s else test_timestamp_abort_args= fi # Run current version with write-no-sync txns. ${test_env_vars|} ./random_abort/test_random_abort 2>&1 ${test_env_vars|} ./timestamp_abort/test_timestamp_abort $test_timestamp_abort_args 2>&1 # Current version with memory-based txns (MongoDB usage). ${test_env_vars|} ./random_abort/test_random_abort -m 2>&1 ${test_env_vars|} ./timestamp_abort/test_timestamp_abort -m $test_timestamp_abort_args 2>&1 # V1 log compatibility mode with write-no-sync txns. ${test_env_vars|} ./random_abort/test_random_abort -C 2>&1 ${test_env_vars|} ./timestamp_abort/test_timestamp_abort -C $test_timestamp_abort_args 2>&1 # V1 log compatibility mode with memory-based txns. ${test_env_vars|} ./random_abort/test_random_abort -C -m 2>&1 ${test_env_vars|} ./timestamp_abort/test_timestamp_abort -C -m $test_timestamp_abort_args 2>&1 ${test_env_vars|} ./truncated_log/test_truncated_log ${truncated_log_args|} 2>&1 # Just let the system take a breath sleep 10s done "schema abort predictable": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/csuite/schema_abort" shell: bash script: | # Get a random value with leading zeroes removed, /bin/sh version. rando() { tr -cd 0-9 &1 "checkpoint test predictable": command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/checkpoint" shell: bash script: | # Get a random value with leading zeroes removed, /bin/sh version. rando() { tr -cd 0-9 nohup.out.$i.$t 2>&1 & done for t in $(seq ${no_of_procs|1}); do ret=0 wait -n || ret=$? if [ $ret -ne 0 ]; then # Skip the below lines from nohup output file because they are very verbose and # print only the errors to evergreen log file. grep -v "Finished verifying" nohup.out.* | grep -v "Finished a checkpoint" | grep -v "thread starting" fi exit $ret done done "compatibility test": - command: shell.exec params: working_dir: "wiredtiger" script: | set -o errexit set -o verbose test/evergreen/compatibility_test_for_releases.sh ${compat_test_args} "run-perf-test": # Run a performance test # Parameterised using the 'perf-test-name' and 'maxruns' variables - command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/wtperf" shell: bash script: | set -o errexit set -o verbose if [ ${no_create|false} = false ]; then rm -rf WT_TEST* fi ${virtualenv_binary} -p ${python_binary} venv source venv/bin/activate ${pip3_binary} install psutil==5.9.4 ${test_env_vars|} ${python_binary} ../../../bench/perf_run_py/perf_run.py --${test_type|wtperf} -e ${exec_path|./wtperf} -t ${perf-test-path|../../../bench/wtperf/runners}/${perf-test-name} -ho WT_TEST -m ${maxruns} -v -b -o test_stats/evergreen_out_${perf-test-name}.json ${wtarg} ${test_env_vars|} ${python_binary} ../../../bench/perf_run_py/perf_run.py --${test_type|wtperf} -e ${exec_path|./wtperf} -t ${perf-test-path|../../../bench/wtperf/runners}/${perf-test-name} -ho WT_TEST -m ${maxruns} -v -re -o test_stats/atlas_out_${perf-test-name}.json ${wtarg} "csuite smoke test": command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} test/csuite/${test_binary}/smoke.sh ${test_args|} 2>&1 "upload test stats": - command: perf.send params: file: ./wiredtiger/cmake_build/${test_path}.json "convert-to-atlas-evergreen-format": - command: shell.exec params: shell: bash script: | set -o errexit set -o verbose ${python_binary} wiredtiger/bench/perf_run_py/perf_json_converter_for_atlas_evergreen.py -i ${input_file} -n ${test_name} -o ${output_path} "upload-perf-test-stats": - command: shell.exec params: shell: bash silent: true script: | set -o errexit ${virtualenv_binary} -p ${python_binary} venv source venv/bin/activate ${pip3_binary} install pymongo[srv]==3.12.2 pygit2==1.10.1 if [[ ! -d "automation-scripts" ]]; then git clone git@github.com:wiredtiger/automation-scripts.git fi EVERGREEN_TASK_INFO='{ "evergreen_task_info": { "is_patch": "'${is_patch}'", "task_id": "'${task_id}'", "distro_id": "'${distro_id}'", "execution": "'${execution}'", "task_name": "'${task_name}'", "version_id": "'${version_id}'", "branch_name": "'${branch_name}'" } }' echo "EVERGREEN_TASK_INFO: $EVERGREEN_TASK_INFO" ${python_binary} automation-scripts/evergreen/upload_stats_atlas.py -u ${atlas_perf_test_username} -p ${atlas_perf_test_password} -c ${collection|} -f ${stats_dir|./wiredtiger/cmake_build/bench/wtperf/test_stats}/atlas_out_${perf-test-name}.json -t ${created_at} -i "$EVERGREEN_TASK_INFO" -g "./wiredtiger" - command: perf.send params: file: ${stats_dir|./wiredtiger/cmake_build/bench/wtperf/test_stats}/evergreen_out_${perf-test-name}.json # Push the json results to the 'Files' tab of the task in Evergreen # Parameterised using the 'perf-test-name' variable - command: s3.put params: aws_secret: ${aws_secret} aws_key: ${aws_key} local_file: ${stats_dir|wiredtiger/cmake_build/bench/wtperf/test_stats}/atlas_out_${perf-test-name}.json bucket: build_external permissions: public-read content_type: text/html remote_file: wiredtiger/${build_variant}/${revision}/${task_name}-${build_id}-${execution}/ "validate-expected-stats": - command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/wtperf" shell: bash script: | set -o errexit ${virtualenv_binary} -p ${python_binary} venv source venv/bin/activate ${python_binary} ../../../bench/perf_run_py/validate_expected_stats.py '${stat_file}' ${comparison_op} '${expected-stats}' "verify wt datafiles": - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose ./test/evergreen/verify_wt_datafiles.sh 2>&1 "install gcp dependencies": - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit . test/evergreen/find_cmake.sh . test/evergreen/install_gcp_dependencies.sh $CMAKE "split stress test": command: shell.exec params: working_dir: "wiredtiger/bench/workgen/runner" shell: bash script: | set -o errexit set -o verbose for i in $(seq ${times|15}); do ${test_env_vars|} ${python_binary|python3} split_stress.py done "build and push antithesis container": command: subprocess.exec params: working_dir: wiredtiger/tools/antithesis binary: bash add_expansions_to_env: true args: - "./build_and_push_containers.sh" ####################################### # Variables # ####################################### variables: # Configure flags for builtins. - &configure_flags_with_builtins HAVE_BUILTIN_EXTENSION_LZ4: -DHAVE_BUILTIN_EXTENSION_LZ4=1 HAVE_BUILTIN_EXTENSION_SNAPPY: -DHAVE_BUILTIN_EXTENSION_SNAPPY=1 HAVE_BUILTIN_EXTENSION_ZLIB: -DHAVE_BUILTIN_EXTENSION_ZLIB=1 HAVE_BUILTIN_EXTENSION_ZSTD: -DHAVE_BUILTIN_EXTENSION_ZSTD=1 # Configure flags static library (default in cmake is dynamic). - &configure_flags_static_lib ENABLE_SHARED: -DENABLE_SHARED=0 ENABLE_STATIC: -DENABLE_STATIC=1 # Configure flags static library (default in cmake is dynamic) with builtins. - &configure_flags_static_lib_with_builtins <<: *configure_flags_with_builtins ENABLE_SHARED: -DENABLE_SHARED=0 ENABLE_STATIC: -DENABLE_STATIC=1 # Configure flags for tiered storage Azure extension. - &configure_flags_tiered_storage_azure ENABLE_AZURE: -DENABLE_AZURE=1 IMPORT_AZURE_SDK: -DIMPORT_AZURE_SDK=external # Configure flags for tiered storage GCP extension. - &configure_flags_tiered_storage_gcp ENABLE_GCP: -DENABLE_GCP=1 IMPORT_GCP_SDK: -DIMPORT_GCP_SDK=external # Configure flags for tiered storage S3 extension. - &configure_flags_tiered_storage_s3 ENABLE_S3: -DENABLE_S3=1 IMPORT_S3_SDK: -DIMPORT_S3_SDK=external # Configure flags for address sanitizer for stable mongodb toolchain clang (include builtins). - &configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins <<: *configure_flags_with_builtins CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_stable_clang.cmake CMAKE_BUILD_TYPE: -DCMAKE_BUILD_TYPE=ASan ENABLE_CPPSUITE: -DENABLE_CPPSUITE=0 ######################################################################################### # The following stress tests are configured to run for six hours via the "-t 360" # argument to format.sh: format-stress-test, format-stress-sanitizer-test, and # race-condition-stress-sanitizer-test. The recovery tests run in a loop, with # the number of runs adjusted to provide aproximately six hours of testing. ######################################################################################### - &format-stress-test exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "format test script" vars: format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -t 360 - &format-stress-test-nonstandalone exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "format test script" vars: format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -t 360 - &format-stress-sanitizer-ppc-test exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins - func: "format test script" vars: # Always disable mmap for PPC due to issues on variant setup. # See https://bugzilla.redhat.com/show_bug.cgi?id=1686261#c10 for the potential cause. format_test_script_args: -t 360 -- -C "mmap=false,mmap_all=false" test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer - &format-stress-sanitizer-test exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins - func: "format test script" vars: format_test_script_args: -t 360 test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer - &race-condition-stress-sanitizer-test exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins - func: "format test script" vars: format_test_script_args: -R -t 360 test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer - &recovery-stress-test exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "recovery stress test script" vars: times: 25 - &recovery-stress-test-nonstandalone exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "recovery stress test script" vars: times: 25 ####################################### # Tasks # ####################################### tasks: # Check the python configuration # Base compile task on posix flavours - name: compile tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "upload artifact" - func: "cleanup" # production build with --disable-shared - name: compile-production-disable-shared tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_static_lib - func: "upload artifact" - func: "cleanup" # production build with --disable-static - name: compile-production-disable-static tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "upload artifact" - func: "cleanup" - name: compile-linux-no-ftruncate commands: - func: "get project" - func: "compile wiredtiger" vars: HAVE_FTRUNCATE: -DHAVE_FTRUNCATE=0 - func: "upload artifact" - func: "cleanup" - name: compile-gcc tags: ["pull_request", "pull_request_compilers"] commands: - func: "get project" - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/gcc.cmake HAVE_DIAGNOSTIC: -DHAVE_DIAGNOSTIC=0 - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/gcc.cmake GNU_C_VERSION: -DGNU_C_VERSION=7 - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/gcc.cmake GNU_C_VERSION: -DGNU_C_VERSION=8 DGNU_CXX_VERSION: -DDGNU_CXX_VERSION=8 - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/gcc.cmake GNU_C_VERSION: -DGNU_C_VERSION=9 DGNU_CXX_VERSION: -DDGNU_CXX_VERSION=9 - name: compile-clang tags: ["pull_request", "pull_request_compilers"] commands: - func: "get project" - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/clang.cmake HAVE_DIAGNOSTIC: -DHAVE_DIAGNOSTIC=0 - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/clang.cmake CLANG_C_VERSION: -DCLANG_C_VERSION=6.0 CLANG_CXX_VERSION: -DCLANG_CXX_VERSION=6.0 - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/clang.cmake CLANG_C_VERSION: -DCLANG_C_VERSION=7 CLANG_CXX_VERSION: -DCLANG_CXX_VERSION=7 - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/clang.cmake CLANG_C_VERSION: -DCLANG_C_VERSION=8 CLANG_CXX_VERSION: -DCLANG_CXX_VERSION=8 # Base compile for nonstandalone build - name: compile-nonstandalone commands: - func: "get project" - func: "compile wiredtiger" vars: NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "upload artifact" - func: "cleanup" - name: make-check-test commands: - func: "get project" - func: "compile wiredtiger" - func: "make check all" - name: make-check-linux-no-ftruncate-test commands: - func: "get project" - func: "compile wiredtiger" vars: HAVE_FTRUNCATE: -DHAVE_FTRUNCATE=0 - func: "make check all" - name: make-check-nonstandalone commands: - func: "get project" - func: "compile wiredtiger" vars: NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "make check all" # Start of normal make check test tasks - name: lang-python-test tags: ["pull_request", "python"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: lang/python - name: examples-c-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: examples/c - name: examples-c-production-disable-shared-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_static_lib - func: "make check directory" vars: directory: examples/c - name: examples-c-production-disable-static-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "make check directory" vars: directory: examples/c - name: bloom-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/bloom - name: checkpoint-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/checkpoint - name: cursor-order-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/cursor_order - name: fops-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/fops - name: format-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/format - name: huge-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/huge - name: manydbs-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/manydbs - name: packing-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/packing - name: readonly-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/readonly - name: salvage-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/salvage - name: thread-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: test/thread - name: bench-wtperf-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "make check directory" vars: directory: bench/wtperf - name: unittest-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" vars: HAVE_UNITTEST: -DHAVE_UNITTEST=1 - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} test/unittest/unittests - name: unittest-assertions commands: - func: "get project" - func: "compile wiredtiger" vars: HAVE_UNITTEST: -DHAVE_UNITTEST=1 -DHAVE_UNITTEST_ASSERTS=1 -DHAVE_DIAGNOSTIC=0 - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} test/unittest/unittests # End of normal make check test tasks # Start of cppsuite test tasks. # All cppsuite pull request tasks must supply the relative path to the config file as we are in # the cmake build working directory and the LD_LIBRARY_PATH is .libs. - name: cppsuite-cache-resize-test-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/cache_resize_default.txt test_name: cache_resize - name: cppsuite-operations-test-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/operations_test_default.txt test_name: operations_test - name: cppsuite-hs-cleanup-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/hs_cleanup_default.txt test_name: hs_cleanup - name: cppsuite-burst-inserts-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/burst_inserts_default.txt test_name: burst_inserts - name: cppsuite-bounded-cursor-perf-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_perf_default.txt test_name: bounded_cursor_perf - name: cppsuite-bounded-cursor-stress-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/bounded_cursor_stress_default.txt test_name: bounded_cursor_stress - name: cppsuite-bounded-cursor-stress-reverse-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/bounded_cursor_stress_reverse_default.txt test_name: bounded_cursor_stress - name: cppsuite-bounded-cursor-prefix-stat-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/bounded_cursor_prefix_stat_default.txt test_name: bounded_cursor_prefix_stat - name: bounded-cursor-prefix-search-near-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/bounded_cursor_prefix_search_near_default.txt test_name: bounded_cursor_prefix_search_near - name: bounded-cursor-prefix-indices-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/bounded_cursor_prefix_indices_default.txt test_name: bounded_cursor_prefix_indices - name: cppsuite-reverse-split-default tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config: debug_mode=(cursor_copy=true) test_config_filename: configs/reverse_split_default.txt test_name: reverse_split - name: cppsuite-operations-test-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/operations_test_stress.txt test_name: operations_test - name: cppsuite-hs-cleanup-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/hs_cleanup_stress.txt test_name: hs_cleanup - name: cppsuite-burst-inserts-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/burst_inserts_stress.txt test_name: burst_inserts - name: cppsuite-bounded-cursor-stress-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_stress_stress.txt test_name: bounded_cursor_stress - name: cppsuite-bounded-cursor-stress-reverse-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_stress_reverse_stress.txt test_name: bounded_cursor_stress - name: cppsuite-bounded-cursor-prefix-stat-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_prefix_stat_stress.txt test_name: bounded_cursor_prefix_stat - name: cppsuite-bounded-cursor-prefix-search-near-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_prefix_search_near_stress.txt test_name: bounded_cursor_prefix_search_near - name: cppsuite-bounded-cursor-prefix-indices-stress depends_on: - name: compile tags: ["cppsuite-stress-test"] commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_prefix_indices_stress.txt test_name: bounded_cursor_prefix_indices # This is a perf test and as such doesn't run under the stress test tag. - name: cppsuite-bounded-cursor-perf-stress depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_perf_stress.txt test_name: bounded_cursor_perf - name: cppsuite-reverse-split-stress tags: ["cppsuite-stress-test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "cppsuite test" vars: test_config_filename: configs/reverse_split_stress.txt test_name: reverse_split - name: cppsuite-operations-test-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/operations_test_stress.txt test_name: operations_test - name: cppsuite-hs-cleanup-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/hs_cleanup_stress.txt test_name: hs_cleanup - name: cppsuite-burst-inserts-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/burst_inserts_stress.txt test_name: burst_inserts - name: cppsuite-bounded-cursor-stress-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_stress_stress.txt test_name: bounded_cursor_stress - name: cppsuite-bounded-cursor-stress-reverse-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_stress_reverse_stress.txt test_name: bounded_cursor_stress - name: cppsuite-bounded-cursor-prefix-stat-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_prefix_stat_stress.txt test_name: bounded_cursor_prefix_stat - name: cppsuite-bounded-cursor-prefix-search-near-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_prefix_search_near_stress.txt test_name: bounded_cursor_prefix_search_near - name: cppsuite-bounded-cursor-prefix-indices-stress-nonstandalone depends_on: - name: compile-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/bounded_cursor_prefix_indices_stress.txt test_name: bounded_cursor_prefix_indices - name: cppsuite-reverse-split-stress-nonstandalone tags: ["cppsuite-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "cppsuite test" vars: test_config_filename: configs/reverse_split_stress.txt test_name: reverse_split # End of cppsuite test tasks. # Start of csuite test tasks - name: csuite-incr-backup-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: incr_backup - name: csuite-random-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: random - name: csuite-random-abort-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite smoke test" vars: test_args: cmake_build/test/csuite/random_abort/test_random_abort test_binary: random_abort - name: csuite-random-directio-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite smoke test" vars: test_args: cmake_build/test/csuite/random_directio/test_random_directio test_binary: random_directio - name: csuite-schema-abort-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite smoke test" vars: test_args: cmake_build/test/csuite/schema_abort/test_schema_abort test_binary: schema_abort - name: csuite-tiered-abort-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite smoke test" vars: test_args: cmake_build/test/csuite/tiered_abort/test_tiered_abort test_binary: tiered_abort - name: csuite-timestamp-abort-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite smoke test" vars: test_args: -b cmake_build/test/csuite/timestamp_abort/test_timestamp_abort test_binary: timestamp_abort - name: csuite-timestamp-abort-test-s3 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_tiered_storage_s3 - command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/csuite/timestamp_abort" shell: bash include_expansions_in_env: - aws_sdk_s3_ext_access_key - aws_sdk_s3_ext_secret_key script: | set -o errexit set -o verbose ./test_timestamp_abort -PT -Po s3_store - name: csuite-timestamp-abort-stress-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite smoke test" vars: test_args: -s -b cmake_build/test/csuite/timestamp_abort/test_timestamp_abort test_binary: timestamp_abort - name: csuite-scope-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: scope - name: csuite-truncated-log-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: truncated_log - name: csuite-wt1965-col-efficiency-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt1965_col_efficiency - name: csuite-wt2403-lsm-workload-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2403_lsm_workload - name: csuite-wt2447-join-main-table-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2447_join_main_table - name: csuite-wt2695-checksum-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2695_checksum - name: csuite-wt2592-join-schema-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2592_join_schema - name: csuite-wt2719-reconfig-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2719_reconfig - name: csuite-wt2999-join-extractor-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2999_join_extractor - name: csuite-wt3120-filesys-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_args: -b $(pwd) test_name: wt3120_filesys - name: csuite-wt3135-search-near-collator-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt3135_search_near_collator - name: csuite-wt3184-dup-index-collator-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt3184_dup_index_collator - name: csuite-wt3363-checkpoint-op-races-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt3363_checkpoint_op_races - name: csuite-wt3874-pad-byte-collator-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt3874_pad_byte_collator - name: csuite-wt4105-large-doc-small-upd-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4105_large_doc_small_upd - name: csuite-wt4117-checksum-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4117_checksum - name: csuite-wt4156-metadata-salvage-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4156_metadata_salvage - name: csuite-wt4699-json-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4699_json - name: csuite-wt4803-history-store-abort-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4803_history_store_abort - name: csuite-wt4891-meta-ckptlist-get-alloc-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4891_meta_ckptlist_get_alloc - name: csuite-wt6185-modify-ts-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt6185_modify_ts - name: csuite-rwlock-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: rwlock - name: csuite-wt2246-col-append-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2246_col_append - name: csuite-wt2323-join-visibility-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2323_join_visibility - name: csuite-wt2535-insert-race-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2535_insert_race - name: csuite-wt2834-join-bloom-fix-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt2834_join_bloom_fix - name: csuite-wt2909-checkpoint-integrity-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_args: -b $(pwd) test_name: wt2909_checkpoint_integrity - name: csuite-wt3338-partial-update-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt3338_partial_update - name: csuite-wt4333-handle-locks-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt4333_handle_locks - name: csuite-wt6616-checkpoint-oldest-ts-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt6616_checkpoint_oldest_ts - name: csuite-wt7989-compact-checkpoint-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt7989_compact_checkpoint - name: csuite-wt8057-compact-stress-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt8057_compact_stress - name: csuite-wt8246-compact-rts-data-correctness-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt8246_compact_rts_data_correctness - name: csuite-wt8659-reconstruct-database-from-logs-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt8659_reconstruct_database_from_logs - name: csuite-wt8963-insert-stress-test tags: ["stress-test-1"] commands: - func: "get project" - func: "compile wiredtiger" - func: "csuite test" vars: test_name: wt8963_insert_stress - name: csuite-wt8963-insert-stress-test-nonstandalone tags: ["stress-test-1-nonstandalone"] commands: - func: "get project" - func: "compile wiredtiger" vars: NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "csuite test" vars: test_name: wt8963_insert_stress - name: csuite-wt9937-parse-opts-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt9937_parse_opts - name: csuite-wt10461-skip-list-stress-test tags: ["stress-test-1"] commands: - func: "get project" - func: "compile wiredtiger" - func: "csuite test" vars: test_name: wt10461_skip_list_stress - name: csuite-wt10461-skip-list-stress-test-nonstandalone tags: ["stress-test-1"] commands: - func: "get project" - func: "compile wiredtiger" vars: NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "csuite test" vars: test_name: wt10461_skip_list_stress - name: csuite-wt10897-compact-quick-interrupt-test tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "csuite test" vars: test_name: wt10897_compact_quick_interrupt # End of csuite test tasks # Start of Python unit test tasks - name: unit-test tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" - name: unit-test-macos tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "python config check" - func: "unit test" vars: smp_command: -j $(echo $(sysctl -n hw.logicalcpu) / 2 | bc) - name: unit-test-nonstandalone tags: ["python"] depends_on: - name: compile-nonstandalone commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "unit test" vars: unit_test_args: --hook nonstandalone - name: unit-test-zstd tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --zstd - name: unit-test-extra-long tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --extra-long - name: unit-test-extra-long-nonstandalone tags: ["python", "python-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "fetch artifacts" vars: dependent_task: compile-nonstandalone - func: "unit test" vars: unit_test_args: -v 2 --extra-long --hook nonstandalone - name: unit-linux-no-ftruncate-test tags: ["python"] depends_on: - name: compile-linux-no-ftruncate commands: - func: "fetch artifacts" vars: dependent_task: compile-linux-no-ftruncate - func: "unit test" # Run the tests that uses suite_random with a random starting seed - name: unit-test-random-seed tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -R cursor13 join02 join07 schema03 timestamp22 - name: unit-test-hook-tiered tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --hook tiered - name: unit-test-hook-tiered-s3 tags: ["python"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_tiered_storage_s3 - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash include_expansions_in_env: - aws_sdk_s3_ext_access_key - aws_sdk_s3_ext_secret_key script: | set -o errexit set -o verbose ${test_env_vars|} ${python_binary|python3} ../test/suite/run.py ${unit_test_args|-v 2} --hook tiered=tier_storage_source='s3_store' ${smp_command|} 2>&1 - name: unit-test-hook-tiered-timestamp tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --hook tiered --hook timestamp - name: unit-test-hook-timestamp tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --hook timestamp # A version of the tiered, timestamp hook test, scaled down for running during pull requests. # A small (1 out of N) random sample is run. - name: unit-test-hook-tiered-timestamp-quick tags: ["pull_request", "python"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --hook tiered --hook timestamp --random-sample 20 # The test_prepare_hs03.py test, when run with timestamp hooks, is run multiple times to facilitate # catching intermittent problems in the test. - name: test-prepare-hs03-hook-timestamp tags: ["python"] depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose cd cmake_build i=0 limit=100 while ((i < limit)) do ((i=i+1)) echo "Test count: $i" ${test_env_vars|} ${python_binary|python3} ../test/suite/run.py -v 4 test_prepare_hs03.py --hook timestamp done # Break out Python unit tests into multiple buckets/tasks. We have a fixed number of buckets, # and we use the -b option of the test/suite/run.py script to split up the tests. - name: unit-test-bucket00 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 0/12 - name: unit-test-bucket01 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 1/12 - name: unit-test-bucket02 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 2/12 - name: unit-test-bucket03 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 3/12 - name: unit-test-bucket04 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 4/12 - name: unit-test-bucket05 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 5/12 - name: unit-test-bucket06 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 6/12 - name: unit-test-bucket07 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 7/12 - name: unit-test-bucket08 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 8/12 - name: unit-test-bucket09 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 9/12 - name: unit-test-bucket10 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 10/12 - name: unit-test-bucket11 tags: ["pull_request", "python", "unit_test"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 -b 11/12 - name: unit-test-long-bucket00 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 0/12 - name: unit-test-long-bucket01 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 1/12 - name: unit-test-long-bucket02 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 2/12 - name: unit-test-long-bucket03 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 3/12 - name: unit-test-long-bucket04 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile run_on: ubuntu2004-medium commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 4/12 - name: unit-test-long-bucket05 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 5/12 - name: unit-test-long-bucket06 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 6/12 - name: unit-test-long-bucket07 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 7/12 - name: unit-test-long-bucket08 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 8/12 - name: unit-test-long-bucket09 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 9/12 - name: unit-test-long-bucket10 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 10/12 - name: unit-test-long-bucket11 tags: ["python", "unit_test_long"] patch_only: true depends_on: - name: compile commands: - func: "fetch artifacts" - func: "unit test" vars: unit_test_args: -v 2 --long -b 11/12 # End of Python unit test tasks - name: s-all tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger/dist" shell: bash script: | set -o errexit set -o verbose sh -x s_all -A -E 2>&1 # Run s_string with the "-r" option to remove no-longer-needed words from s_string.ok # This is run separately from s_all as it can be too proactive when run as part of # developers local workflow, but needs to be run in PR builds before the code is merged. sh s_string -r 2>&1 - name: s-outdated-fixmes # Detect any FIXME comments in the codebase tied to closed Jira tickets. # This will send a GET request to JIRA for each FIXME ticket so we don't # want to run it too frequently. commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger/dist" shell: bash script: | set -o errexit set -o verbose ${python_binary|python3} s_outdated_fixmes.py 2>&1 - name: conf-dump-test tags: ["pull_request", "python"] depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/wtperf" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} ${python_binary|python3} ../../../test/wtperf/test_conf_dump.py -d $(pwd) 2>&1 - name: fops tags: ["pull_request"] depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/fops" shell: bash script: | set -o errexit set -o verbose if [ "Windows_NT" = "$OS" ]; then cmd.exe /c test_fops.exe else ${test_env_vars|} ./test_fops fi - name: bench-tiered-push-pull-s3 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_tiered_storage_s3 - command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/tiered" shell: bash include_expansions_in_env: - aws_sdk_s3_ext_access_key - aws_sdk_s3_ext_secret_key script: | set -o errexit set -o verbose ${test_env_vars|} ./test_push_pull -PT -Po s3_store - name: bench-tiered-push-pull depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/tiered" shell: bash script: | set -o errexit set -o verbose # By default the test_push_pull uses dir_store as a storage source. ${test_env_vars|} ./test_push_pull -PT - name: compatibility-test-for-newer-releases commands: - func: "get project" - func: "compatibility test" vars: compat_test_args: -n - name: compatibility-test-for-older-releases commands: - func: "get project" - func: "compatibility test" vars: compat_test_args: -o - name: compatibility-test-upgrade-to-latest commands: - func: "get project" - func: "compatibility test" vars: compat_test_args: -u - name: compatibility-test-for-patch-releases commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose test/evergreen/compatibility_test_for_releases.sh -p - name: compatibility-test-for-wt-standalone-releases commands: - func: "get project" - func: "compatibility test" vars: compat_test_args: -w - name: import-compatibility-test commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose test/evergreen/compatibility_test_for_releases.sh -i - name: generate-datafile-little-endian commands: - func: "get project" - func: "compile wiredtiger" - func: "format test" vars: times: 10 config: ../../../test/format/CONFIG.endian extra_args: -h "WT_TEST.$i" - command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/format" shell: bash script: | set -o errexit set -o verbose # Archive the WT_TEST directories which include the generated wt data files. We cannot # use the Evergreen archive command as we need to archive multiple WT_TEST folders. tar -zcvf WT_TEST.tgz WT_TEST* - func: "upload endian format artifacts" vars: endian_format: little-endian local_file: wiredtiger/cmake_build/test/format/WT_TEST.tgz remote_file: WT_TEST-little-endian.tgz - name: verify-datafile-little-endian depends_on: - name: compile - name: generate-datafile-little-endian commands: - func: "fetch artifacts" - func: "fetch endian format artifacts" vars: endian_format: little-endian remote_file: WT_TEST-little-endian - func: "verify wt datafiles" - name: verify-datafile-from-little-endian depends_on: - name: compile - name: generate-datafile-little-endian variant: little-endian - name: verify-datafile-little-endian variant: little-endian commands: - func: "fetch artifacts" - func: "fetch endian format artifacts" vars: endian_format: little-endian remote_file: WT_TEST-little-endian - func: "verify wt datafiles" - name: generate-datafile-big-endian commands: - func: "get project" - func: "compile wiredtiger" - func: "format test" vars: times: 10 config: ../../../test/format/CONFIG.endian extra_args: -h "WT_TEST.$i" - command: shell.exec params: working_dir: "wiredtiger/cmake_build/test/format" shell: bash script: | set -o errexit set -o verbose # Archive the WT_TEST directories which include the generated wt data files. We cannot # use the Evergreen archive command as we need to archive multiple WT_TEST folders. tar -zcvf WT_TEST.tgz WT_TEST* - func: "upload endian format artifacts" vars: endian_format: big-endian local_file: wiredtiger/cmake_build/test/format/WT_TEST.tgz remote_file: WT_TEST-big-endian.tgz - name: verify-datafile-big-endian depends_on: - name: compile - name: generate-datafile-big-endian commands: - func: "fetch artifacts" - func: "fetch endian format artifacts" vars: endian_format: big-endian remote_file: WT_TEST-big-endian - func: "verify wt datafiles" - name: verify-datafile-from-big-endian depends_on: - name: compile - name: generate-datafile-big-endian variant: big-endian - name: verify-datafile-big-endian variant: big-endian commands: - func: "fetch artifacts" - func: "fetch endian format artifacts" vars: endian_format: big-endian remote_file: WT_TEST-big-endian - func: "verify wt datafiles" - name: clang-analyzer tags: ["pull_request"] commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose sh dist/s_clang_scan 2>&1 - name: configure-combinations commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | set -o errexit set -o verbose . test/evergreen/find_cmake.sh cd test/evergreen CMAKE_BIN=$CMAKE ./configure_combinations.sh -g="${cmake_generator|Ninja}" -j=$(grep -c ^processor /proc/cpuinfo) 2>&1 # Handle special build combination for running all the diagnostic tests. - func: "configure wiredtiger" - func: "make wiredtiger" - func: "make check all" # Use format.sh to run tests in parallel for just under two hours (the # default Evergreen timeout) on the higher spec build distros. This allows # us to perform multiple test runs while ensuring a long-running config does # not result in an Evergreen test timeout failure. This test is run on a # higher spec distro due to historical issues with timeout failures. Consider # reducing the parallelism if frequent timeouts occur. - name: linux-directio commands: - func: "get project" - func: "compile wiredtiger" - func: "format test script" vars: format_test_script_args: -t 110 direct_io=1 - name: format-linux-no-ftruncate commands: - func: "get project" - func: "compile wiredtiger no linux ftruncate" - func: "format test" vars: times: 3 - name: package commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger/dist" shell: bash script: | set -o errexit set -o verbose env CC=/opt/mongodbtoolchain/v4/bin/gcc CXX=/opt/mongodbtoolchain/v4/bin/g++ PATH=/opt/mongodbtoolchain/v4/bin:/opt/java/jdk11/bin:$PATH sh s_release `date +%Y%m%d` # Note that the project settings use this task name to compile the documentation during PR # testing, keep this in mind if you decide to change it. - name: doc-compile commands: - func: "get project" - func: "compile wiredtiger docs" - name: doc-update patchable: false stepback: false commands: - func: "get project" - func: "compile wiredtiger docs" - func: "update wiredtiger docs" - name: syscall-linux commands: - func: "get project" - func: "compile wiredtiger" - command: shell.exec params: working_dir: "wiredtiger/test/syscall" shell: bash script: | set -o errexit set -o verbose WT_BUILDDIR=$(pwd)/../../cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR ${python_binary|python3} syscall.py --verbose --preserve - name: checkpoint-filetypes-test commands: - func: "get project" - func: "compile wiredtiger" vars: # Don't use diagnostic - this test looks for timing problems that are more likely to occur without it HAVE_DIAGNOSTIC: -DHAVE_DIAGNOSTIC=0 - func: "checkpoint test" vars: checkpoint_args: -t m -n 1000000 -k 5000000 -C cache_size=100MB - func: "checkpoint test" vars: checkpoint_args: -t c -n 1000000 -k 5000000 -C cache_size=100MB - func: "checkpoint test" vars: checkpoint_args: -t r -n 1000000 -k 5000000 -C cache_size=100MB - name: coverage-report commands: - command: timeout.update params: exec_timeout_secs: 43200 # 12 hrs timeout_secs: 1800 # 30 mins - func: "get project" - func: "compile wiredtiger" vars: HAVE_UNITTEST: -DHAVE_UNITTEST=1 <<: *configure_flags_with_builtins CMAKE_BUILD_TYPE: -DCMAKE_BUILD_TYPE=Coverage - func: "unit test" vars: unit_test_args: -v 2 check_coverage: true - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} test/unittest/unittests - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose virtualenv -p python3 venv source venv/bin/activate pip3 install lxml==4.8.0 Pygments==2.11.2 Jinja2==3.0.3 gcovr==5.0 mkdir -p ../coverage_report GCOV=/opt/mongodbtoolchain/v4/bin/gcov gcovr -r .. -f ../src -e '.*/bt_(debug|dump|misc|salvage|vrfy).*' -e '.*/(log|progress|verify_build|strerror|env_msg|err_file|cur_config|os_abort)\..*' -e '.*_stat\..*' -e 'bench' -e 'examples' -e 'test' -e 'ext' -e 'dist' -e 'tools' -j 4 --html-details --html-self-contained -o ../coverage_report/2_coverage_report.html - command: s3.put params: aws_secret: ${aws_secret} aws_key: ${aws_key} local_files_include_filter: wiredtiger/coverage_report/* bucket: build_external permissions: public-read content_type: text/html remote_file: wiredtiger/${build_variant}/${revision}/coverage_report_${build_id}-${execution}/ - command: s3.put params: aws_secret: ${aws_secret} aws_key: ${aws_key} local_file: wiredtiger/coverage_report/2_coverage_report.html bucket: build_external permissions: public-read content_type: text/html # Ensure that the first character of the display_name is a space # This will ensure that it sorts before the per-file report pages which also get a space # at the start of their display name (why this happens is not yet clear). display_name: " 1 Coverage report main page" remote_file: wiredtiger/${build_variant}/${revision}/coverage_report_${build_id}-${execution}/1_coverage_report_main.html - name: s3-tiered-storage-extensions-test tags: ["python"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_tiered_storage_s3 - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose - func: "run tiered storage test" vars: # Set this in case of a core to get the correct python binary. python_binary: $(pwd)/venv/bin/python3 tiered_storage_test_name: tiered - name: s3-tiered-test-small tags: ["pull_request", "python"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_tiered_storage_s3 - func: "run tiered storage test" vars: # Set this in case of a core to get the correct python binary. python_binary: $(pwd)/venv/bin/python3 tiered_storage_test_name: tiered06 - name: s3-tiered-unittest-test tags: ["pull_request", "tiered_unittest"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_tiered_storage_s3 HAVE_UNITTEST: -DHAVE_UNITTEST=1 - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash include_expansions_in_env: - aws_sdk_s3_ext_access_key - aws_sdk_s3_ext_secret_key script: | set -o errexit set -o verbose # Run S3 extension unit testing. ext/storage_sources/s3_store/test/run_s3_unit_tests - name: azure-gcp-tiered-storage-extensions-test tags: ["python"] commands: - func: "get project" - func: "install gcp dependencies" - func: "compile wiredtiger" vars: <<: [*configure_flags_tiered_storage_azure, *configure_flags_tiered_storage_gcp] - func: "run tiered storage test" vars: # Set this in case of a core to get the correct python binary. python_binary: $(pwd)/venv/bin/python3 tiered_storage_test_name: tiered - name: azure-gcp-tiered-unittest-test tags: ["pull_request", "tiered_unittest"] commands: - func: "get project" - func: "install gcp dependencies" - func: "compile wiredtiger" vars: <<: [*configure_flags_tiered_storage_azure, *configure_flags_tiered_storage_gcp] HAVE_UNITTEST: -DHAVE_UNITTEST=1 - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit # Set the Azure credentials using config variable. export AZURE_STORAGE_CONNECTION_STRING="${azure_sdk_ext_access_key}" # GCP requires a path to a credentials file for authorization. To not expose the private # information within the file, we use a placeholder private variable which are replaced # in the command line with the evergreen expansion variables and stored in a temporary # file. file=$(mktemp --suffix ".json") # Use '|' as the delimiter instead of default behaviour because the private key contains # slash characters. sed -e 's|gcp_project_id|${gcp_sdk_ext_project_id}|' \ -e 's|gcp_private_key|'"${gcp_sdk_ext_private_key}"'|' \ -e 's|gcp_private_id|${gcp_sdk_ext_private_key_id}|' \ -e 's|gcp_client_email|${gcp_sdk_ext_client_email}|' \ -e 's|gcp_client_id|${gcp_sdk_ext_client_id}|' \ -e 's|gcp_client_x509_cert_url|${gcp_sdk_ext_client_x509_cert_url}|' ../test/evergreen/gcp_auth.json > $file export GOOGLE_APPLICATION_CREDENTIALS="$file" set -o verbose # Run Azure extension unit testing. ext/storage_sources/azure_store/test/run_azure_unit_tests - name: azure-gcp-tiered-test-small tags: ["pull_request", "python"] commands: - func: "get project" - func: "install gcp dependencies" - func: "compile wiredtiger" vars: <<: [*configure_flags_tiered_storage_azure, *configure_flags_tiered_storage_gcp] - func: "run tiered storage test" vars: # Set this in case of a core to get the correct python binary. python_binary: $(pwd)/venv/bin/python3 tiered_storage_test_name: tiered06 - name: spinlock-gcc-test commands: - func: "get project" - func: "compile wiredtiger" vars: SPINLOCK_TYPE: -DSPINLOCK_TYPE=gcc - func: "make check all" - func: "format test" vars: times: 3 - func: "unit test" - name: spinlock-pthread-adaptive-test commands: - func: "get project" - func: "compile wiredtiger" vars: SPINLOCK_TYPE: -DSPINLOCK_TYPE=pthread_adaptive - func: "make check all" - func: "format test" vars: times: 3 - func: "unit test" - name: wtperf-test depends_on: - name: compile commands: - func: "fetch artifacts" vars: dependent_task: compile - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose # The test will generate WT_TEST directory automatically dir=../bench/wtperf/stress for file in `ls $dir` do echo "Disk usage and free space for the current drive (pre-test):" df -h . echo "====" echo "==== Initiating wtperf test using $dir/$file ====" echo "====" ${test_env_vars|} ./bench/wtperf/wtperf -O $dir/$file -o verbose=2 echo "====" echo "Disk usage and free space for the current drive (post-test):" df -h . echo "Total size of WT_TEST directory prior to move:" du -hs WT_TEST mv WT_TEST WT_TEST_$file done - name: ftruncate-test commands: - func: "get project" - func: "compile wiredtiger" vars: HAVE_FTRUNCATE: -DHAVE_FTRUNCATE=0 - func: "csuite test" vars: test_name: truncated_log - func: "csuite smoke test" vars: test_args: cmake_build/test/csuite/random_abort/test_random_abort test_binary: random_abort - func: "csuite smoke test" vars: test_args: -b cmake_build/test/csuite/timestamp_abort/test_timestamp_abort test_binary: timestamp_abort - name: long-test commands: - func: "get project" - func: "configure wiredtiger" - func: "make wiredtiger" # Run the long version of make check, that includes the full csuite tests - func: "make check all" # Many dbs test - Run with: # 1. The defaults - func: "many dbs test" # 2. Set idle flag to turn off operations. - func: "many dbs test" vars: many_db_args: -I # 3. More dbs. - func: "many dbs test" vars: many_db_args: -D 40 # 4. With idle flag and more dbs. - func: "many dbs test" vars: many_db_args: -I -D 40 # extended test/thread runs - func: "thread test" vars: thread_test_args: -t f - func: "thread test" vars: thread_test_args: -S -F -n 100000 -t f - func: "thread test" vars: thread_test_args: -t r - func: "thread test" vars: thread_test_args: -S -F -n 100000 -t r - func: "thread test" vars: thread_test_args: -t v - func: "thread test" vars: thread_test_args: -S -F -n 100000 -t v # random-abort - default (random time and number of threads) - func: "csuite test" vars: test_name: random_abort # truncated-log - func: "csuite test" vars: test_name: truncated_log # random-abort - minimum time, random number of threads - func: "csuite test" vars: test_args: -t 10 test_name: random_abort # random-abort - maximum time, random number of threads - func: "csuite test" vars: test_args: -t 40 test_name: random_abort # random-abort - run compaction - func: "csuite test" vars: test_args: -c -t 60 test_name: random_abort # format test - func: "format test" vars: extra_args: file_type=fix - func: "format test" vars: extra_args: file_type=row # format test for stressing compaction code path - func: "format test" vars: times: 3 extra_args: file_type=row compaction=1 verify=1 runs.timer=3 ops.pct.delete=30 - name: time-shift-sensitivity-test depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger/test/csuite" shell: bash script: | set -o errexit set -o verbose RW_LOCK_FILE=$(pwd)/../../cmake_build/test/csuite/rwlock/test_rwlock ./time_shift_test.sh /usr/local/lib/faketime/libfaketimeMT.so.1 0-1 2>&1 - name: format-mirror-test commands: - func: "get project" - func: "compile wiredtiger" - func: "format test" vars: config: ../../../test/format/CONFIG.mirror trace_args: -T all - name: format-stress-pull-request-test tags: ["pull_request"] commands: - func: "get project" - func: "compile wiredtiger" - func: "format test script" vars: # run for 10 minutes. format_test_script_args: -t 10 rows=10000 ops=50000 - name: format-smoke-test commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "format test script" vars: format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -S - func: "format test" vars: extra_args: -C "verbose=(checkpoint_cleanup:1)" - name: format-asan-smoke-test commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins - func: "format test script" vars: test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer format_test_script_args: -S - func: "format test" vars: test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer extra_args: -C "verbose=(checkpoint_cleanup:1)" - name: format-wtperf-test commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - command: shell.exec params: working_dir: "wiredtiger/cmake_build/bench/wtperf" shell: bash script: | set -o errexit set -o verbose cp ../../../bench/wtperf/split_heavy.wtperf . ./wtperf -O ./split_heavy.wtperf -o verbose=2 - name: memory-model-test exec_timeout_secs: 86400 commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger/tools/memory-model-test" script: | set -o errexit set -o verbose export "PATH=/opt/mongodbtoolchain/v4/bin:$PATH" g++ -o memory_model_test -O2 memory_model_test.cpp -lpthread -std=c++20 -Wall -Werror ./memory_model_test -n 100000000 - name: memory-model-test-mac exec_timeout_secs: 86400 commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger/tools/memory-model-test" shell: bash script: | set -o errexit set -o verbose sysctl -n machdep.cpu.brand_string # Display the CPU type sw_vers # Display the macOS version g++ -o memory_model_test -O2 memory_model_test.cpp -lpthread -std=c++17 -Wall -Werror -DAVOID_CPP20_SEMAPHORE ./memory_model_test -n 100000000 - name: data-validation-stress-test-checkpoint tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x - name: data-validation-stress-test-checkpoint-no-timestamp tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" - name: data-validation-stress-test-checkpoint-fp-hs-insert-s1 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 1 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s1-no-timestamp tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -s 1 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s2 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 2 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s3 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 3 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s3-no-timestamp tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -s 3 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s4 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 4 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s5 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 5 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s5-no-timestamp tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -s 5 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s6 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 6 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s7 tags: ["data-validation-stress-test"] depends_on: - name: compile commands: - func: "run data validation stress test checkpoint" vars: run_test_checkpoint_args: -x -s 7 - name: data-validation-stress-test-checkpoint-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x - name: data-validation-stress-test-checkpoint-no-timestamp-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone - name: data-validation-stress-test-checkpoint-fp-hs-insert-s1-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 1 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s1-no-timestamp-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -s 1 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s2-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 2 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s3-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 3 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s3-no-timestamp-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -s 3 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s4-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 4 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s5-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 5 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s5-no-timestamp-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -s 5 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s6-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 6 - name: data-validation-stress-test-checkpoint-fp-hs-insert-s7-nonstandalone tags: ["data-validation-stress-test-nonstandalone"] depends_on: - name: compile-nonstandalone commands: - func: "run data validation stress test checkpoint" vars: dependent_task: compile-nonstandalone run_test_checkpoint_args: -x -s 7 - name: format-failure-configs-test depends_on: - name: compile commands: - func: "fetch artifacts" - command: shell.exec params: working_dir: "wiredtiger/test/evergreen" shell: bash script: | set -o errexit set -o verbose ${test_env_vars|} ./run_format_configs.sh - name: static-wt-build-test commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_static_lib_with_builtins - command: shell.exec params: working_dir: "wiredtiger/cmake_build" shell: bash script: | set -o errexit set -o verbose # -V option displays Wiredtiger library version ./wt -V if [ $? -ne 0 ]; then echo "Error, WT util is not generated or is not functioning" exit 1 fi # Test if libwiredtiger is dynamically linked. (ldd wt | grep "libwiredtiger.so") || wt_static_build=1 if [ $wt_static_build -ne 1 ]; then echo "Error, WT util is not statically linked" exit 1 fi - name: format-stress-sanitizer-lsm-test # FIXME-WT-6258: Re-enable the test once the outstanding issues with LSM are resolved. # tags: ["stress-test-sanitizer-1"] commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins - func: "format test script" vars: test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer # Run for 30 mins, and explicitly set data_source to LSM with a large cache format_test_script_args: -t 30 data_source=lsm cache_minimum=5000 - name: checkpoint-stress-test tags: ["stress-test-1"] exec_timeout_secs: 86400 commands: - command: timeout.update params: timeout_secs: 86400 - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "checkpoint stress test" vars: times: 1 # No of times to run the loop no_of_procs: 10 # No of processes to run in the background - name: checkpoint-stress-test-nonstandalone tags: ["stress-test-1-nonstandalone"] exec_timeout_secs: 86400 commands: - command: timeout.update params: timeout_secs: 86400 - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "checkpoint stress test" vars: times: 1 # No of times to run the loop no_of_procs: 10 # No of processes to run in the background - name: skiplist-stress-test tags: ["stress-test-1", "stress-test-zseries-1"] exec_timeout_secs: 3600 # 1 hour commands: - func: "get project" - func: "compile wiredtiger" vars: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_v4_gcc.cmake - command: shell.exec params: working_dir: "wiredtiger/bench/workgen/runner" shell: bash script: | set -o errexit set -o verbose for i in $(seq 5); do ${test_env_vars|} ${python_binary|python3} skiplist_stress.py done - name: skiplist-stress-test-nonstandalone tags: ["stress-test-1-nonstandalone"] exec_timeout_secs: 3600 # 1 hour commands: - func: "get project" - func: "compile wiredtiger" vars: NONSTANDALONE: -DWT_STANDALONE_BUILD=0 CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_v4_gcc.cmake - command: shell.exec params: working_dir: "wiredtiger/bench/workgen/runner" shell: bash script: | set -o errexit set -o verbose for i in $(seq 5); do ${test_env_vars|} ${python_binary|python3} skiplist_stress.py done - name: split-stress-test tags: ["stress-test-1", "stress-test-ppc-1", "stress-test-zseries-1"] # Set 2.5 hours timeout (60 * 60 * 2.5) exec_timeout_secs: 9000 commands: - func: "get project" - func: "compile wiredtiger" - func: "split stress test" - name: split-stress-test-nonstandalone tags: ["stress-test-1-nonstandalone"] # Set 2.5 hours timeout (60 * 60 * 2.5) exec_timeout_secs: 9000 commands: - func: "get project" - func: "compile wiredtiger" vars: NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "split stress test" - name: format-stress-zseries-test tags: ["stress-test-zseries-1"] # Set 2.5 hours timeout (60 * 60 * 2.5) exec_timeout_secs: 9000 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "format test script" vars: #run for 2 hours ( 2 * 60 = 120 minutes), use default config format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -t 120 - name: format-stress-ppc-test tags: ["stress-test-ppc-1"] # Set 2.5 hours timeout (60 * 60 * 2.5) exec_timeout_secs: 9000 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "format test script" vars: #run for 2 hours ( 2 * 60 = 120 minutes), use default config # Always disable mmap for PPC due to issues on variant setup. # See https://bugzilla.redhat.com/show_bug.cgi?id=1686261#c10 for the potential cause. format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -t 120 -- -C "mmap=false,mmap_all=false" - <<: *format-stress-test name: format-stress-test-1 tags: ["stress-test-1"] - <<: *format-stress-test name: format-stress-test-2 tags: ["stress-test-2"] - <<: *format-stress-test name: format-stress-test-3 tags: ["stress-test-3"] - <<: *format-stress-test name: format-stress-test-4 tags: ["stress-test-4"] - <<: *format-stress-test-nonstandalone name: format-stress-test-1-nonstandalone tags: ["stress-test-1-nonstandalone"] - <<: *format-stress-test-nonstandalone name: format-stress-test-2-nonstandalone tags: ["stress-test-2-nonstandalone"] - <<: *format-stress-test-nonstandalone name: format-stress-test-3-nonstandalone tags: ["stress-test-3-nonstandalone"] - <<: *format-stress-test-nonstandalone name: format-stress-test-4-nonstandalone tags: ["stress-test-4-nonstandalone"] - <<: *format-stress-sanitizer-ppc-test name: format-stress-sanitizer-ppc-test-1 tags: ["stress-test-ppc-1"] - <<: *format-stress-sanitizer-ppc-test name: format-stress-sanitizer-ppc-test-2 tags: ["stress-test-ppc-2"] - <<: *format-stress-sanitizer-test name: format-stress-sanitizer-test-1 tags: ["stress-test-sanitizer-1"] - <<: *format-stress-sanitizer-test name: format-stress-sanitizer-test-2 tags: ["stress-test-sanitizer-2"] - <<: *format-stress-sanitizer-test name: format-stress-sanitizer-test-3 tags: ["stress-test-sanitizer-3"] - <<: *format-stress-sanitizer-test name: format-stress-sanitizer-test-4 tags: ["stress-test-sanitizer-4"] - <<: *race-condition-stress-sanitizer-test name: race-condition-stress-sanitizer-test-1 tags: ["stress-test-sanitizer-1"] - <<: *race-condition-stress-sanitizer-test name: race-condition-stress-sanitizer-test-2 tags: ["stress-test-sanitizer-2"] - <<: *race-condition-stress-sanitizer-test name: race-condition-stress-sanitizer-test-3 tags: ["stress-test-sanitizer-3"] - <<: *race-condition-stress-sanitizer-test name: race-condition-stress-sanitizer-test-4 tags: ["stress-test-sanitizer-4"] - <<: *recovery-stress-test name: recovery-stress-test-1 tags: ["stress-test-1", "stress-test-zseries-1"] - <<: *recovery-stress-test name: recovery-stress-test-2 tags: ["stress-test-2", "stress-test-zseries-2"] - <<: *recovery-stress-test name: recovery-stress-test-3 tags: ["stress-test-3", "stress-test-zseries-3"] - <<: *recovery-stress-test-nonstandalone name: recovery-stress-test-1-nonstandalone tags: ["stress-test-1-nonstandalone"] - <<: *recovery-stress-test-nonstandalone name: recovery-stress-test-2-nonstandalone tags: ["stress-test-2-nonstandalone"] - <<: *recovery-stress-test-nonstandalone name: recovery-stress-test-3-nonstandalone tags: ["stress-test-3-nonstandalone"] - name: format-stress-test-no-barrier tags: ["stress-test-no-barrier"] exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NON_BARRIER_DIAGNOSTIC_YIELDS: -DNON_BARRIER_DIAGNOSTIC_YIELDS=1 - func: "format test script" vars: format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -t 360 - name: format-stress-test-no-barrier-nonstandalone tags: ["stress-test-no-barrier-nonstandalone"] exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NONSTANDALONE: -DWT_STANDALONE_BUILD=0 NON_BARRIER_DIAGNOSTIC_YIELDS: -DNON_BARRIER_DIAGNOSTIC_YIELDS=1 - func: "format test script" vars: format_test_script_args: -e "SEGFAULT_SIGNALS=all" -b "catchsegv ./t" -t 360 - name: format-stress-sanitizer-test-no-barrier tags: ["stress-test-no-barrier-sanitizer"] exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins NON_BARRIER_DIAGNOSTIC_YIELDS: -DNON_BARRIER_DIAGNOSTIC_YIELDS=1 - func: "format test script" vars: format_test_script_args: -t 360 test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer - name: race-condition-stress-sanitizer-test-no-barrier tags: ["stress-test-no-barrier-sanitizer"] exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_address_sanitizer_mongodb_stable_clang_with_builtins NON_BARRIER_DIAGNOSTIC_YIELDS: -DNON_BARRIER_DIAGNOSTIC_YIELDS=1 - func: "format test script" vars: format_test_script_args: -R -t 360 test_env_vars: ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" ASAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer - name: recovery-stress-test-no-barrier tags: ["stress-test-no-barrier"] exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NON_BARRIER_DIAGNOSTIC_YIELDS: -DNON_BARRIER_DIAGNOSTIC_YIELDS=1 - func: "recovery stress test script" vars: times: 25 - name: recovery-stress-test-no-barrier-nonstandalone tags: ["stress-test-no-barrier-nonstandalone"] exec_timeout_secs: 25200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NONSTANDALONE: -DWT_STANDALONE_BUILD=0 NON_BARRIER_DIAGNOSTIC_YIELDS: -DNON_BARRIER_DIAGNOSTIC_YIELDS=1 - func: "recovery stress test script" vars: times: 25 - name: format-abort-recovery-stress-test commands: # Allow 30 minutes beyond test runtime because recovery under load can cause the test to # run longer. - command: timeout.update params: exec_timeout_secs: 3600 - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins - func: "format test script" vars: format_test_script_args: -a -t 30 - name: format-abort-recovery-stress-test-nonstandalone commands: # Allow 30 minutes beyond test runtime because recovery under load can cause the test to # run longer. - command: timeout.update params: exec_timeout_secs: 3600 - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins NONSTANDALONE: -DWT_STANDALONE_BUILD=0 - func: "format test script" vars: format_test_script_args: -a -t 30 - name: format-predictable-test # Set 2.5 hour timeout (60 * 60 * 2.5) exec_timeout_secs: 9000 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_v4_gcc.cmake - func: "format test predictable" vars: times: 5 - name: format-tiered-test # Set 2.5 hour timeout (60 * 60 * 2.5) exec_timeout_secs: 9000 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_v4_gcc.cmake - func: "format test tiered" vars: times: 10 - name: schema-abort-predictable-test # Set 20 minute timeout (60 * 20) exec_timeout_secs: 1200 commands: - func: "get project" - func: "compile wiredtiger" vars: <<: *configure_flags_with_builtins CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_v4_gcc.cmake - func: "schema abort predictable" vars: times: 5 - name: checkpoint-filetypes-predictable-test commands: - func: "get project" - func: "compile wiredtiger" vars: # Don't use diagnostic - this test looks for timing problems that are more likely to occur without it HAVE_DIAGNOSTIC: -DHAVE_DIAGNOSTIC=0 # FIXME-WT-10936: Enable once predictable replay supports column store #- func: "checkpoint test predictable" # vars: # checkpoint_args: -t m -n 1000000 -k 5000000 -C cache_size=100MB # times: 5 #- func: "checkpoint test predictable" # vars: # checkpoint_args: -t c -n 1000000 -k 5000000 -C cache_size=100MB # times: 5 #- func: "checkpoint test predictable" # vars: # checkpoint_args: -n 1000000 -k 5000000 -C cache_size=100MB # times: 5 - func: "checkpoint test predictable" vars: checkpoint_args: -t r -n 1000000 -k 5000000 -C cache_size=100MB times: 5 - name: many-collection-test commands: - command: timeout.update params: exec_timeout_secs: 86400 timeout_secs: 86400 - func: "fetch mongo repo" - func: "get project" - func: "import wiredtiger into mongo" - func: "compile mongodb" - func: "fetch mongo-tests repo" # FIXME-WT-7868: we should download a pre populated database here and remove the # "clean-and-populate" argument in the step below. - command: shell.exec params: working_dir: mongo-tests/largescale shell: bash script: | set -o errexit set -o verbose export "PATH=/opt/mongodbtoolchain/v4/bin:$PATH" virtualenv -p python3 venv source venv/bin/activate # Need both pymongo and pymongo[srv] as upload-results-atlas.py uses mongo+srv for the URI. pip3 install lorem pymongo==3.12.2 "pymongo[srv]==3.12.2" mongod_path=$(find ../../mongo/build -executable -type f -path \*/bin/mongod) ./run_many_coll.sh $mongod_path mongodb.log config/many-collection-testing many-collection clean-and-populate - func: "convert-to-atlas-evergreen-format" vars: input_file: ./mongo-tests/largescale/many-collection-artifacts/results/results.json test_name: many-collection-test output_path: ./mongo-tests/largescale/many-collection-artifacts/results/ - func: "upload-perf-test-stats" vars: stats_dir: mongo-tests/largescale/many-collection-artifacts/results perf-test-name: many-collection-test - name: cyclomatic-complexity commands: - func: "get project" - command: shell.exec params: working_dir: "wiredtiger" shell: bash script: | t=__wt.$$ set -o verbose # Install Metrix++, ensuring it is outside the 'src' directory git clone https://github.com/metrixplusplus/metrixplusplus metrixplusplus # We only want complexity measures for the 'src' directory cd src python "../metrixplusplus/metrix++.py" collect --std.code.lines.code --std.code.complexity.cyclomatic python "../metrixplusplus/metrix++.py" view # Set the cyclomatic complexity limit to 20 python "../metrixplusplus/metrix++.py" limit --max-limit=std.code.complexity:cyclomatic:20 # Fail if there are functions with cyclomatic complexity larger than 91 python "../metrixplusplus/metrix++.py" limit --max-limit=std.code.complexity:cyclomatic:91 > $t if grep -q 'exceeds' $t; then echo "[ERROR]:complexity:cyclomatic: Complexity limit exceeded." cat $t echo "[ERROR]:complexity:cyclomatic: Finished " && rm $t && exit 1 else cat $t && rm $t fi ############################# # Performance Tests for lsm # ############################# - name: perf-test-small-lsm tags: ["lsm-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: small-lsm.wtperf maxruns: 3 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: small-lsm.wtperf - name: perf-test-medium-lsm tags: ["lsm-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: medium-lsm.wtperf maxruns: 1 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: medium-lsm.wtperf - name: perf-test-medium-lsm-compact tags: ["lsm-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: medium-lsm-compact.wtperf maxruns: 1 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: medium-lsm-compact.wtperf - name: perf-test-medium-multi-lsm tags: ["lsm-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: medium-multi-lsm.wtperf maxruns: 1 wtarg: -ops ['"load", "read", "update"'] - func: "upload-perf-test-stats" vars: perf-test-name: medium-multi-lsm.wtperf - name: perf-test-parallel-pop-lsm tags: ["lsm-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: parallel-pop-lsm.wtperf maxruns: 1 wtarg: -ops ['"load"'] - func: "upload-perf-test-stats" vars: perf-test-name: parallel-pop-lsm.wtperf - name: perf-test-update-lsm tags: ["lsm-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-lsm.wtperf maxruns: 1 wtarg: -ops ['"load", "read", "update", "insert"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-lsm.wtperf ############################### # Performance Tests for btree # ############################### - name: perf-test-small-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: small-btree.wtperf maxruns: 1 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: small-btree.wtperf - name: perf-test-small-btree-backup tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: small-btree-backup.wtperf maxruns: 1 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: small-btree-backup.wtperf - name: perf-test-medium-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: medium-btree.wtperf maxruns: 3 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: medium-btree.wtperf - name: perf-test-medium-btree-backup tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: medium-btree-backup.wtperf maxruns: 3 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: medium-btree-backup.wtperf - name: perf-test-parallel-pop-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: parallel-pop-btree.wtperf maxruns: 1 wtarg: -ops ['"load"'] - func: "upload-perf-test-stats" vars: perf-test-name: parallel-pop-btree.wtperf - name: perf-test-parallel-pop-btree-long tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: parallel-pop-btree-long.wtperf maxruns: 1 wtarg: -ops ['"load"'] - func: "upload-perf-test-stats" vars: perf-test-name: parallel-pop-btree-long.wtperf - name: perf-test-update-only-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-only-btree.wtperf maxruns: 3 wtarg: -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-only-btree.wtperf - name: perf-test-update-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-btree.wtperf maxruns: 1 wtarg: "-bf ../../../bench/wtperf/runners/update-btree.json" - func: "upload-perf-test-stats" vars: perf-test-name: update-btree.wtperf - name: perf-test-update-large-record-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-large-record-btree.wtperf maxruns: 3 wtarg: -ops ['"load", "update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-large-record-btree.wtperf - name: perf-test-modify-large-record-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: modify-large-record-btree.wtperf maxruns: 3 wtarg: -ops ['"load", "modify"'] - func: "upload-perf-test-stats" vars: perf-test-name: modify-large-record-btree.wtperf - name: perf-test-modify-force-update-large-record-btree tags: ["btree-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: modify-force-update-large-record-btree.wtperf maxruns: 3 wtarg: -ops ['"load", "modify"'] - func: "upload-perf-test-stats" vars: perf-test-name: modify-force-update-large-record-btree.wtperf ############################### # Performance Tests for oplog # ############################### - name: perf-test-mongodb-oplog tags: ["oplog-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: mongodb-oplog.wtperf maxruns: 1 wtarg: -ops ['"load", "insert", "truncate", "database_size"'] - func: "upload-perf-test-stats" vars: perf-test-name: mongodb-oplog.wtperf - name: perf-test-mongodb-small-oplog tags: ["oplog-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: mongodb-small-oplog.wtperf maxruns: 1 wtarg: -ops ['"load", "insert", "truncate", "database_size"'] - func: "upload-perf-test-stats" vars: perf-test-name: mongodb-small-oplog.wtperf - name: perf-test-mongodb-large-oplog tags: ["oplog-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: mongodb-large-oplog.wtperf maxruns: 1 wtarg: -ops ['"load", "insert", "truncate", "database_size"'] - func: "upload-perf-test-stats" vars: perf-test-name: mongodb-large-oplog.wtperf - name: perf-test-mongodb-secondary-apply tags: ["oplog-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: mongodb-secondary-apply.wtperf maxruns: 1 wtarg: -ops ['"insert"'] - func: "upload-perf-test-stats" vars: perf-test-name: mongodb-secondary-apply.wtperf ######################################### # Performance Tests for perf-checkpoint # ######################################### - name: perf-test-update-checkpoint-btree tags: ["checkpoint-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-checkpoint-btree.wtperf maxruns: 1 wtarg: "-bf ../../../bench/wtperf/runners/update-checkpoint.json" - func: "upload-perf-test-stats" vars: perf-test-name: update-checkpoint-btree.wtperf - name: perf-test-update-checkpoint-lsm # FIXME-WT-8867 Disable/Un-tag the LSM perf test till the support for LSM is restored. # tags: ["checkpoint-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-checkpoint-lsm.wtperf maxruns: 1 wtarg: "-bf ../../../bench/wtperf/runners/update-checkpoint.json" - func: "upload-perf-test-stats" vars: perf-test-name: update-checkpoint-lsm.wtperf ############################### # Performance Tests for stress # ############################### - name: perf-test-overflow-10k tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: overflow-10k.wtperf maxruns: 1 wtarg: -ops ['"load", "read", "update"'] - func: "upload-perf-test-stats" vars: perf-test-name: overflow-10k.wtperf - name: perf-test-overflow-130k tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: overflow-130k.wtperf maxruns: 1 wtarg: -ops ['"load", "read", "update"'] - func: "upload-perf-test-stats" vars: perf-test-name: overflow-130k.wtperf - name: perf-test-parallel-pop-stress tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: parallel-pop-stress.wtperf maxruns: 1 wtarg: -ops ['"load"'] - func: "upload-perf-test-stats" vars: perf-test-name: parallel-pop-stress.wtperf - name: perf-test-update-grow-stress tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-grow-stress.wtperf maxruns: 1 wtarg: -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-grow-stress.wtperf - name: perf-test-update-shrink-stress tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-shrink-stress.wtperf maxruns: 1 wtarg: -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-shrink-stress.wtperf - name: perf-test-update-delta-mix1 tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-delta-mix1.wtperf maxruns: 1 wtarg: -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-delta-mix1.wtperf - name: perf-test-update-delta-mix2 tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-delta-mix2.wtperf maxruns: 1 wtarg: -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-delta-mix2.wtperf - name: perf-test-update-delta-mix3 tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: update-delta-mix3.wtperf maxruns: 1 wtarg: -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: update-delta-mix3.wtperf - name: perf-test-multi-btree-zipfian tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: multi-btree-zipfian-populate.wtperf maxruns: 1 - func: "run-perf-test" vars: perf-test-name: multi-btree-zipfian-workload.wtperf maxruns: 1 no_create: true wtarg: -ops ['"read"'] - func: "upload-perf-test-stats" vars: perf-test-name: multi-btree-zipfian-workload.wtperf - name: perf-test-many-table-stress tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: many-table-stress.wtperf maxruns: 1 - name: perf-test-many-table-stress-backup tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: many-table-stress-backup.wtperf maxruns: 1 - name: perf-test-evict-fairness tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: evict-fairness.wtperf maxruns: 1 wtarg: -args ['"-C statistics_log=(wait=10000,on_close=true,json=false,sources=[file:])", "-o reopen_connection=false"'] -ops ['"eviction_page_seen"'] - func: "validate-expected-stats" vars: stat_file: './test_stats/evergreen_out_evict-fairness.wtperf.json' comparison_op: "eq" expected-stats: '{"Pages seen by eviction": 200}' - name: perf-test-evict-btree-stress-multi tags: ["stress-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: evict-btree-stress-multi.wtperf maxruns: 1 wtarg: -ops ['"warnings", "top5_latencies_read_update"'] - func: "upload-perf-test-stats" vars: perf-test-name: evict-btree-stress-multi.wtperf ################################## # Performance Tests for eviction # ################################## - name: perf-test-evict-btree tags: ["evict-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: evict-btree.wtperf maxruns: 1 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: evict-btree.wtperf - name: perf-test-evict-btree-1 tags: ["evict-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: evict-btree-1.wtperf maxruns: 1 wtarg: -ops ['"read"'] - func: "upload-perf-test-stats" vars: perf-test-name: evict-btree-1.wtperf - name: perf-test-evict-lsm # FIXME-WT-8867 Disable/Un-tag the LSM perf test till the support for LSM is restored. # tags: ["evict-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: evict-lsm.wtperf maxruns: 1 wtarg: -ops ['"load", "read"'] - func: "upload-perf-test-stats" vars: perf-test-name: evict-lsm.wtperf - name: perf-test-evict-lsm-1 # FIXME-WT-8867 Disable/Un-tag the LSM perf test till the support for LSM is restored. # tags: ["evict-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: evict-lsm-1.wtperf maxruns: 1 wtarg: -ops ['"read"'] - func: "upload-perf-test-stats" vars: perf-test-name: evict-lsm-1.wtperf ########################################### # Performance Tests for log consolidation # ########################################### - name: perf-test-log tags: ["log-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: log.wtperf maxruns: 1 wtarg: -ops ['"update", "min_max_update_throughput"'] - func: "upload-perf-test-stats" vars: perf-test-name: log.wtperf - name: perf-test-log-small-files tags: ["log-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: log.wtperf maxruns: 1 wtarg: -args ['"-C log=(enabled,file_max=1M)"'] -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: log.wtperf - name: perf-test-log-no-checkpoints tags: ["log-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: log.wtperf maxruns: 1 wtarg: -args ['"-C checkpoint=(wait=0)"'] -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: log.wtperf - name: perf-test-log-no-prealloc tags: ["log-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: log.wtperf maxruns: 1 wtarg: -args ['"-C log=(enabled,file_max=1M,prealloc=false)"'] -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: log.wtperf - name: perf-test-log-zero-fill tags: ["log-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: log.wtperf maxruns: 1 wtarg: -args ['"-C log=(enabled,file_max=1M,zero_fill=true)"'] -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: log.wtperf - name: perf-test-log-many-threads tags: ["log-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: log.wtperf maxruns: 1 wtarg: -args ['"-C log=(enabled,file_max=1M),session_max=256", "-o threads=((count=128,updates=1))"'] -ops ['"update"'] - func: "upload-perf-test-stats" vars: perf-test-name: log.wtperf ########################################### # Performance Long Tests # ########################################### - name: perf-test-long-500m-btree-populate tags: ["long-perf"] depends_on: - name: compile commands: - command: timeout.update params: exec_timeout_secs: 7200 timeout_secs: 7200 - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: 500m-btree-populate.wtperf maxruns: 1 wtarg: -args ['"-C create,statistics=(fast),statistics_log=(json,wait=1,sources=[file:])"'] -ops ['"load", "warnings", "max_latency_insert"'] - func: "upload-perf-test-stats" vars: perf-test-name: 500m-btree-populate.wtperf - func: "upload artifact" vars: upload_filename: WT_TEST.tgz upload_source_dir: wiredtiger/cmake_build/bench/wtperf/WT_TEST_0_0/ # Call cleanup function to avoid duplicated artifact upload in the post-task stage. - func: "cleanup" - name: perf-test-long-500m-btree-50r50u tags: ["long-perf"] depends_on: - name: perf-test-long-500m-btree-populate commands: - command: timeout.update params: exec_timeout_secs: 10800 timeout_secs: 10800 # Fetch the compile artifacts. - func: "fetch artifacts" # Fetch the database created by perf-test-long-500m-btree-populate task. - func: "fetch artifacts" vars: dependent_task: perf-test-long-500m-btree-populate destination: "wiredtiger/cmake_build/bench/wtperf/WT_TEST_0_0" - func: "run-perf-test" vars: perf-test-name: 500m-btree-50r50u.wtperf maxruns: 1 no_create: true wtarg: -args ['"-C create,statistics=(fast),statistics_log=(json,wait=1,sources=[file:])"'] -ops ['"read", "update", "warnings", "max_latency_read_update"'] - func: "upload-perf-test-stats" vars: perf-test-name: 500m-btree-50r50u.wtperf - func: "cleanup" - name: perf-test-long-500m-btree-50r50u-backup tags: ["long-perf"] depends_on: - name: perf-test-long-500m-btree-populate commands: - command: timeout.update params: exec_timeout_secs: 10800 timeout_secs: 10800 # Fetch the compile artifacts. - func: "fetch artifacts" # Fetch the database created by perf-test-long-500m-btree-populate task. - func: "fetch artifacts" vars: dependent_task: perf-test-long-500m-btree-populate destination: "wiredtiger/cmake_build/bench/wtperf/WT_TEST_0_0" - func: "run-perf-test" vars: perf-test-name: 500m-btree-50r50u-backup.wtperf maxruns: 1 no_create: true wtarg: -args ['"-C create,statistics=(fast),statistics_log=(json,wait=1,sources=[file:])"'] -ops ['"read", "update", "warnings", "max_latency_read_update"'] - func: "upload-perf-test-stats" vars: perf-test-name: 500m-btree-50r50u-backup.wtperf - func: "cleanup" - name: perf-test-long-500m-btree-80r20u tags: ["long-perf"] depends_on: - name: perf-test-long-500m-btree-populate commands: - command: timeout.update params: exec_timeout_secs: 10800 timeout_secs: 10800 # Fetch the compile artifacts. - func: "fetch artifacts" # Fetch the database created by perf-test-long-500m-btree-populate task. - func: "fetch artifacts" vars: dependent_task: perf-test-long-500m-btree-populate destination: "wiredtiger/cmake_build/bench/wtperf/WT_TEST_0_0" - func: "run-perf-test" vars: perf-test-name: 500m-btree-80r20u.wtperf maxruns: 1 no_create: true wtarg: -args ['"-C create,statistics=(fast),statistics_log=(json,wait=1,sources=[file:])"'] -ops ['"read", "update", "warnings", "max_latency_read_update"'] - func: "upload-perf-test-stats" vars: perf-test-name: 500m-btree-80r20u.wtperf - func: "cleanup" - name: perf-test-long-500m-btree-rdonly tags: ["long-perf"] depends_on: - name: perf-test-long-500m-btree-populate commands: - command: timeout.update params: exec_timeout_secs: 10800 timeout_secs: 10800 # Fetch the compile artifacts. - func: "fetch artifacts" # Fetch the database created by perf-test-long-500m-btree-populate task. - func: "fetch artifacts" vars: dependent_task: perf-test-long-500m-btree-populate destination: "wiredtiger/cmake_build/bench/wtperf/WT_TEST_0_0" - func: "run-perf-test" vars: perf-test-name: 500m-btree-rdonly.wtperf maxruns: 1 no_create: true wtarg: -args ['"-C create,statistics=(fast),statistics_log=(json,wait=1,sources=[file:])"'] -ops ['"read", "warnings", "max_latency_read_update", "min_max_read_throughput"'] - func: "upload-perf-test-stats" vars: perf-test-name: 500m-btree-rdonly.wtperf - func: "cleanup" - name: perf-test-long-checkpoint-stress tags: ["long-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: perf-test-name: checkpoint-stress.wtperf maxruns: 1 wtarg: -args ['"-C create,statistics=(fast),statistics_log=(json,wait=1,sources=[file:])"'] -ops ['"update", "checkpoint"'] - func: "upload-perf-test-stats" vars: perf-test-name: checkpoint-stress.wtperf - name: many-dhandle-stress depends_on: - name: compile commands: - func: "fetch artifacts" - func: "run-perf-test" vars: test_type: workgen exec_path: ${python_binary} perf-test-path: ../../../bench/workgen/runner perf-test-name: many-dhandle-stress.py maxruns: 1 wtarg: -ops ['"max_latency_create", "max_latency_drop", "max_latency_drop_diff", "max_latency_insert_micro_sec", "max_latency_read_micro_sec", "max_latency_update_micro_sec", "warning_idle", "warning_idle_create", "warning_idle_drop", "warning_insert", "warning_operations", "warning_read", "warning_update"'] - func: "upload-perf-test-stats" vars: perf-test-name: many-dhandle-stress.py - func: "validate-expected-stats" vars: stat_file: './test_stats/evergreen_out_many-dhandle-stress.py.json' comparison_op: "lt" expected-stats: '{"Warning Idle (drop)": 50, "Latency drop(in sec.) Max1": 500, "Latency warnings (read, insert, update)": 500}' - name: bench-wt2853-perf-test-row tags: ["wt2853-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "wt2853_perf test" vars: wt2853_perf_args: "-t r" - func: "upload test stats" vars: test_path: bench/wt2853_perf/wt2853_perf - name: bench-wt2853-perf-test-col tags: ["wt2853-perf"] depends_on: - name: compile commands: - func: "fetch artifacts" - func: "wt2853_perf test" vars: wt2853_perf_args: "-t c" - func: "upload test stats" vars: test_path: bench/wt2853_perf/wt2853_perf ####################################### # Antithesis Integration # ####################################### - name: debug-have-diagnostic tags: ["antithesis"] commands: - func: "get project" - func: "compile wiredtiger" - func: "build and push antithesis container" - name: release-with-debug-have-diagnostic tags: ["antithesis"] commands: - func: "get project" - func: "compile wiredtiger" vars: CMAKE_BUILD_TYPE: -DCMAKE_BUILD_TYPE=RelWithDebInfo HAVE_DIAGNOSTIC: -DHAVE_DIAGNOSTIC=1 - func: "build and push antithesis container" ####################################### # Buildvariants # ####################################### buildvariants: - name: ubuntu2004 display_name: "! Ubuntu 20.04" run_on: - ubuntu2004-test expansions: test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" python_binary: '/opt/mongodbtoolchain/v4/bin/python3' smp_command: -j $(echo "`grep -c ^processor /proc/cpuinfo` * 2" | bc) cmake_generator: Ninja make_command: ninja data_validation_stress_test_args: -t r -m -W 3 -D -p -n 100000 -k 100000 -C cache_size=100MB tasks: - name: ".pull_request !.pull_request_compilers" - name: ".unit_test_long" distros: ubuntu2004-large - name: compile - name: doc-compile - name: make-check-test - name: configure-combinations - name: syscall-linux - name: checkpoint-filetypes-test - name: unit-test-zstd - name: unit-test-random-seed - name: unit-test-hook-tiered - name: unit-test-hook-tiered-timestamp - name: unit-test-hook-timestamp - name: test-prepare-hs03-hook-timestamp - name: spinlock-gcc-test - name: spinlock-pthread-adaptive-test - name: ftruncate-test - name: long-test - name: unit-test-extra-long distros: ubuntu2004-large - name: static-wt-build-test - name: linux-directio distros: ubuntu2004-build - name: format-mirror-test - name: format-smoke-test - name: format-failure-configs-test - name: ".data-validation-stress-test" - name: unittest-test - name: s3-tiered-storage-extensions-test - name: azure-gcp-tiered-storage-extensions-test - name: bench-tiered-push-pull - name: compile-nonstandalone - name: make-check-nonstandalone - name: unit-test-nonstandalone - name: unit-test-extra-long-nonstandalone distros: ubuntu2004-large - name: ".data-validation-stress-test-nonstandalone" - name: unittest-assertions - name: ".tiered_unittest" - name: bench-tiered-push-pull-s3 - name: csuite-timestamp-abort-test-s3 - name: unit-test-hook-tiered-s3 - name: ubuntu2004-asan display_name: "! Ubuntu 20.04 ASAN" run_on: - ubuntu2004-test expansions: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/clang.cmake CMAKE_BUILD_TYPE: -DCMAKE_BUILD_TYPE=ASan CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build ASAN_OPTIONS="detect_leaks=1:abort_on_error=1:disable_coredump=0:unmap_shadow_on_exit=1" LSAN_OPTIONS="print_suppressions=0:suppressions=$WT_TOPDIR/test/evergreen/asan_leaks.supp" ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-10/bin/llvm-symbolizer TESTUTIL_BYPASS_ASAN=1 LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so:$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so PATH=/opt/mongodbtoolchain/v4/bin:$PATH LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib tasks: - name: ".pull_request !.pull_request_compilers !.python !.tiered_unittest" - name: examples-c-test - name: format-asan-smoke-test # Very minimal set without any extensions - name: ubuntu2004-minimal display_name: "! Ubuntu 20.04 Minimal" batchtime: 480 # 3 times a day run_on: - ubuntu2004-test expansions: posix_configure_flags: -DENABLE_PYTHON=0 -DENABLE_LZ4=0 -DENABLE_SNAPPY=0 -DENABLE_ZLIB=0 -DENABLE_ZSTD=0 ENABLE_CPPSUITE: -DENABLE_CPPSUITE=0 smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja tasks: - name: compile - name: make-check-test - name: fops - name: unittest-test - name: examples-c-test - name: ubuntu2004-msan display_name: "! Ubuntu 20.04 MSAN" run_on: - ubuntu2004-test expansions: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_stable_clang.cmake CMAKE_BUILD_TYPE: -DCMAKE_BUILD_TYPE=MSan smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja test_env_vars: MSAN_OPTIONS="abort_on_error=1:disable_coredump=0:print_stacktrace=1" MSAN_SYMBOLIZER_PATH=/opt/mongodbtoolchain/v4/bin/llvm-symbolizer LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so PATH=/opt/mongodbtoolchain/v4/bin:$PATH WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR # We don't run C++ memory sanitized testing as it creates false positives. check_args: -LE cppsuite tasks: - name: clang-analyzer - name: compile - name: compile-production-disable-shared - name: compile-production-disable-static - name: examples-c-production-disable-shared-test - name: examples-c-production-disable-static-test - name: format-stress-pull-request-test - name: make-check-test - name: ubuntu2004-ubsan display_name: "! Ubuntu 20.04 UBSAN" run_on: - ubuntu2004-test expansions: CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/clang.cmake CMAKE_BUILD_TYPE: -DCMAKE_BUILD_TYPE=UBSan CC_OPTIMIZE_LEVEL: -DCC_OPTIMIZE_LEVEL=-O1 CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja test_env_vars: UBSAN_OPTIONS="detect_leaks=1:disable_coredump=0:external_symbolizer_path=/usr/lib/llvm-10/bin/llvm-symbolizer:abort_on_error=1:print_stacktrace=1" PATH=/opt/mongodbtoolchain/v4/bin:$PATH WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so:$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so tasks: - name: clang-analyzer - name: compile - name: compile-production-disable-shared - name: compile-production-disable-static - name: examples-c-production-disable-shared-test - name: examples-c-production-disable-static-test - name: format-stress-pull-request-test - name: make-check-test - name: cppsuite-operations-test-default - name: cppsuite-hs-cleanup-default - name: cppsuite-burst-inserts-default - name: ubuntu2004-compilers display_name: "! Ubuntu 20.04 Compilers" run_on: - ubuntu2004-wt-build expansions: CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" python_binary: '/opt/mongodbtoolchain/v4/bin/python3' smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so tasks: - name: ".pull_request_compilers" - name: ubuntu2004-stress-tests display_name: Ubuntu 20.04 Stress tests run_on: - ubuntu2004-test expansions: smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja test_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so:$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" python_binary: '/opt/mongodbtoolchain/v4/bin/python3' tasks: - name: ".stress-test-1" - name: ".stress-test-2" - name: ".stress-test-3" - name: ".stress-test-4" - name: ".stress-test-no-barrier" - name: ".stress-test-no-barrier-sanitizer" - name: ".stress-test-sanitizer-1" - name: ".stress-test-sanitizer-2" - name: ".stress-test-sanitizer-3" - name: ".stress-test-sanitizer-4" - name: format-abort-recovery-stress-test - name: ".stress-test-1-nonstandalone" - name: ".stress-test-2-nonstandalone" - name: ".stress-test-3-nonstandalone" - name: ".stress-test-4-nonstandalone" - name: ".stress-test-no-barrier-nonstandalone" - name: format-abort-recovery-stress-test-nonstandalone - name: format-predictable-test # FIXME-WT-10822 # - name: format-tiered-test - name: schema-abort-predictable-test - name: checkpoint-filetypes-predictable-test # When running the Python tests on this variant tcmalloc must be preloaded otherwise the wiredtiger library # fails to load and resolve its dependency. - name: ubuntu2004-stress-tests-arm64 display_name: Ubuntu 20.04 Stress tests (ARM64) run_on: - ubuntu2004-arm64-large expansions: smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja test_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libeatmydata.so:$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" python_binary: '/opt/mongodbtoolchain/v4/bin/python3' tasks: - name: ".stress-test-1" - name: ".stress-test-2" - name: ".stress-test-3" - name: ".stress-test-4" - name: ".stress-test-no-barrier" - name: format-abort-recovery-stress-test - name: ".stress-test-1-nonstandalone" - name: ".stress-test-2-nonstandalone" - name: ".stress-test-3-nonstandalone" - name: ".stress-test-4-nonstandalone" - name: ".stress-test-no-barrier-nonstandalone" - name: format-abort-recovery-stress-test-nonstandalone - name: cppsuite-stress-tests-ubuntu display_name: "Cppsuite Stress Tests Ubuntu 20.04" batchtime: 720 # twice a day run_on: # We run on medium as small has too small a disk. - ubuntu2004-medium expansions: test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so cmake_generator: Ninja make_command: ninja CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" tasks: - name: compile - name: compile-nonstandalone - name: ".cppsuite-stress-test" - name: ".cppsuite-stress-test-nonstandalone" - name: cppsuite-stress-tests-arm64 display_name: "Cppsuite Stress Tests ARM64" batchtime: 720 # twice a day run_on: - ubuntu2004-arm64-large expansions: test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so cmake_generator: Ninja make_command: ninja CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" tasks: - name: compile - name: compile-nonstandalone - name: ".cppsuite-stress-test" - name: ".cppsuite-stress-test-nonstandalone" - name: package display_name: "~ Package" batchtime: 1440 # 1 day run_on: - ubuntu2004-test tasks: - name: package - name: linux-no-ftruncate display_name: Linux no ftruncate batchtime: 1440 # 1 day run_on: - ubuntu2004-test expansions: test_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libeatmydata.so WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR smp_command: -j $(grep -c ^processor /proc/cpuinfo) make_command: ninja cmake_generator: Ninja python_binary: '/opt/mongodbtoolchain/v4/bin/python3' tasks: - name: compile-linux-no-ftruncate - name: make-check-linux-no-ftruncate-test - name: unit-linux-no-ftruncate-test - name: format-linux-no-ftruncate - name: rhel80 display_name: RHEL 8.0 run_on: - rhel80-test expansions: test_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH LD_PRELOAD=/usr/local/lib/libeatmydata.so WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR smp_command: -j $(grep -c ^processor /proc/cpuinfo) cmake_generator: "Unix Makefiles" make_command: make python_binary: '/opt/mongodbtoolchain/v4/bin/python3' CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/gcc.cmake tasks: - name: compile - name: make-check-test - name: fops - name: time-shift-sensitivity-test - name: linux-directio distros: rhel80-build - name: syscall-linux - name: checkpoint-filetypes-test - name: unit-test-zstd - name: unit-test-extra-long distros: rhel80-large - name: spinlock-gcc-test - name: spinlock-pthread-adaptive-test - name: wtperf-test - name: ftruncate-test - name: long-test - name: configure-combinations - name: windows-64 display_name: "! Windows 64-bit" run_on: - windows-64-vs2017-test expansions: # Remove the default configurations for the toolchain and install prefix. CMAKE_TOOLCHAIN_FILE: CMAKE_INSTALL_PREFIX: python_binary: '/cygdrive/c/Python39/python' configure_env_vars: PATH=/cygdrive/c/Python39:/cygdrive/c/Python39/Scripts:$PATH test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build PATH=/cygdrive/c/Python39:/cygdrive/c/Python39/Scripts:$PATH PYTHONPATH=($WT_TOPDIR/lang/python/wiredtiger):$(cygpath -w $WT_TOPDIR/lang/python) tasks: - name: compile - name: make-check-test - name: ".unit_test" - name: fops - name: unittest-test - name: macos-1100 display_name: "macOS 11.00" run_on: - macos-1100 batchtime: 120 # 2 hours expansions: # The cmake toolchain file is set to the mongodb toolchain gcc by default. # Remove that configuration here and let MacOS use the default Xcode toolchain instead. # We'll explicitly use the python3 in /usr/bin, we use the same in configuring cmake. CMAKE_TOOLCHAIN_FILE: CC_OPTIMIZE_LEVEL: -DCC_OPTIMIZE_LEVEL=-O0 python_binary: '/usr/bin/python3' smp_command: -j $(sysctl -n hw.logicalcpu) cmake_generator: "Unix Makefiles" make_command: make test_env_vars: WT_BUILDDIR=$(git rev-parse --show-toplevel)/cmake_build DYLD_LIBRARY_PATH=$WT_BUILDDIR # Must disable TCMALLOC as it may be picked up locally and its not on all hosts. posix_configure_flags: -DENABLE_TCMALLOC=0 tasks: - name: compile - name: make-check-test # FIXME: WT-9575 # Using a special version of unit test for macOS to reduce the concurrency level. - name: unit-test-macos - name: fops - name: memory-model-test-mac batchtime: 40320 # 28 days - name: macos-1100-arm64 display_name: "macOS 11.00 ARM64" run_on: - macos-1100-arm64 batchtime: 40320 # 28 days tasks: - name: memory-model-test-mac - name: little-endian display_name: "~ Little-endian (x86)" run_on: - ubuntu1804-large batchtime: 4320 # 3 days expansions: python_binary: '/opt/mongodbtoolchain/v4/bin/python3' smp_command: -j $(grep -c ^processor /proc/cpuinfo) test_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR make_command: ninja cmake_generator: Ninja # Must disable ZSTD as its not available on the big endian platform (we generate the data files used for those tests here). posix_configure_flags: -DENABLE_ZSTD=0 tasks: - name: compile - name: generate-datafile-little-endian - name: verify-datafile-little-endian - name: verify-datafile-from-big-endian - name: big-endian display_name: "~ Big-endian (s390x/zSeries)" run_on: - rhel80-zseries-build batchtime: 4320 # 3 days expansions: python_binary: '/opt/mongodbtoolchain/v4/bin/python3' smp_command: -j $(grep -c ^processor /proc/cpuinfo) test_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR make_command: ninja cmake_generator: Ninja posix_configure_flags: -DENABLE_ZSTD=0 tasks: - name: compile - name: generate-datafile-big-endian - name: verify-datafile-big-endian - name: verify-datafile-from-little-endian - name: rhel8-ppc display_name: "~ RHEL8 PPC" run_on: - rhel81-power8-small batchtime: 120 # 2 hours expansions: format_test_setting: ulimit -c unlimited test_env_vars: WT_BUILDDIR=$(git rev-parse --show-toplevel)/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_stable_clang.cmake ENABLE_CPPSUITE: -DENABLE_CPPSUITE=0 python_binary: '/opt/mongodbtoolchain/v4/bin/python3' # Use quarter of the vCPUs to avoid OOM kill failure and disk issues on this variant. smp_command: -j $(echo $(grep -c ^processor /proc/cpuinfo) / 4 | bc) cmake_generator: Ninja make_command: ninja posix_configure_flags: -DENABLE_STRICT=0 tasks: - name: compile - name: unit-test - name: format-smoke-test - name: format-asan-smoke-test - name: format-wtperf-test - name: ".stress-test-ppc-1" - name: ".stress-test-ppc-2" - name: rhel8-zseries display_name: "~ RHEL8 zSeries" run_on: - rhel80-zseries-test batchtime: 120 # 2 hours expansions: test_env_vars: WT_BUILDDIR=$(git rev-parse --show-toplevel)/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR python_binary: '/opt/mongodbtoolchain/v4/bin/python3' # Use half number of vCPU to avoid OOM kill failure smp_command: -j $(echo $(grep -c ^processor /proc/cpuinfo) / 2 | bc) cmake_generator: Ninja make_command: ninja tasks: - name: compile - name: unit-test - name: format-smoke-test - name: ".stress-test-zseries-1" - name: ".stress-test-zseries-2" - name: ".stress-test-zseries-3" - name: ubuntu2004-arm64 display_name: "~ Ubuntu 20.04 ARM64" run_on: - ubuntu2004-arm64-small batchtime: 1440 # 24 hours expansions: test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR python_binary: '/opt/mongodbtoolchain/v4/bin/python3' smp_command: -j $(echo "`grep -c ^processor /proc/cpuinfo` * 2" | bc) cmake_generator: Ninja make_command: ninja tasks: - name: compile - name: make-check-test - name: unit-test - name: fops - name: linux-directio - name: checkpoint-filetypes-test - name: unit-test-zstd - name: unit-test-extra-long distros: ubuntu2004-arm64-large - name: spinlock-gcc-test - name: spinlock-pthread-adaptive-test - name: wtperf-test - name: ftruncate-test - name: long-test - name: configure-combinations - name: format-smoke-test - name: s3-tiered-storage-extensions-test - name: compile-nonstandalone - name: make-check-nonstandalone - name: unit-test-nonstandalone - name: unit-test-extra-long-nonstandalone distros: ubuntu2004-arm64-large - name: memory-model-test batchtime: 40320 # 28 days - name: amazon2-arm64 display_name: "Amazon Linux 2 ARM64" run_on: - amazon2-arm64-small batchtime: 1440 # 24 hours expansions: configure_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH compile_env_vars: PATH=/opt/mongodbtoolchain/v4/bin:$PATH test_env_vars: WT_TOPDIR=$(git rev-parse --show-toplevel) WT_BUILDDIR=$WT_TOPDIR/cmake_build LD_LIBRARY_PATH=$WT_BUILDDIR:$WT_TOPDIR/TCMALLOC_LIB/lib LD_PRELOAD=$WT_TOPDIR/TCMALLOC_LIB/lib/libtcmalloc.so python_binary: '/opt/mongodbtoolchain/v4/bin/python3' smp_command: -j $(echo "`grep -c ^processor /proc/cpuinfo` * 2" | bc) cmake_generator: "Unix Makefiles" make_command: make CMAKE_PREFIX_PATH: -DCMAKE_PREFIX_PATH="$(pwd)/TCMALLOC_LIB" tasks: - name: compile - name: make-check-test - name: unit-test - name: fops - name: linux-directio - name: checkpoint-filetypes-test - name: unit-test-zstd - name: unit-test-extra-long distros: amazon2-arm64-large - name: spinlock-gcc-test - name: spinlock-pthread-adaptive-test - name: wtperf-test - name: ftruncate-test - name: long-test - name: format-smoke-test - name: s3-tiered-storage-extensions-test - name: compile-nonstandalone - name: make-check-nonstandalone - name: unit-test-nonstandalone - name: unit-test-extra-long-nonstandalone distros: amazon2-arm64-large # Antithesis build and push - name: ubuntu2004-antithesis display_name: "~ Ubuntu 20.04 Antithesis" run_on: - ubuntu2004-test expansions: posix_configure_flags: -DENABLE_ANTITHESIS=1 -DENABLE_STRICT=0 CMAKE_TOOLCHAIN_FILE: -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchains/mongodbtoolchain_stable_clang.cmake make_command: ninja tasks: - name: ".antithesis" cron: 0 0 * * 4 # once a week (Thursday midnight UTC) patchable: false