diff options
| author | Apollon Oikonomopoulos <apoikos@debian.org> | 2018-03-22 12:04:55 +0200 |
|---|---|---|
| committer | Apollon Oikonomopoulos <apoikos@debian.org> | 2018-03-22 12:04:55 +0200 |
| commit | c49e99631589113663b1a3ac691870421965a315 (patch) | |
| tree | ac8127a5a6816f169a6656511bf131a35af2f74a /etc | |
| parent | d982a88efa79f510c03f1c6c8c63360680ebbf88 (diff) | |
New upstream version 3.4.14upstream/3.4.14
Diffstat (limited to 'etc')
| -rw-r--r-- | etc/drivers_nightly.yml | 14 | ||||
| -rw-r--r-- | etc/evergreen.yml | 400 | ||||
| -rw-r--r-- | etc/longevity.yml | 115 | ||||
| -rw-r--r-- | etc/perf.yml | 17 | ||||
| -rw-r--r-- | etc/system_perf.yml | 403 |
5 files changed, 282 insertions, 667 deletions
diff --git a/etc/drivers_nightly.yml b/etc/drivers_nightly.yml index f039112ea85..464f844ac57 100644 --- a/etc/drivers_nightly.yml +++ b/etc/drivers_nightly.yml @@ -3,7 +3,7 @@ ##################################################### ### Instructions for Adding a Driver ### -# The Major sections are: +## The Major sections are: # VARIABLES # FUNCTIONS (MongoDB and Drivers) @@ -218,8 +218,9 @@ functions: - command: shell.exec type: test params: - working_dir: "src/${DRIVER_WORKING_DIRECTORY}" + working_dir: src script: | + cd ${DRIVER_WORKING_DIRECTORY} ${PREPARE_SHELL} echo $DRIVERS_TOOLS echo $MONGO_ORCHESTRATION_HOME @@ -318,8 +319,9 @@ functions: "setup drivers environment": - command: shell.exec params: - working_dir: "src/${DRIVER_WORKING_DIRECTORY}" + working_dir: src script: | + cd "${DRIVER_WORKING_DIRECTORY}" # Get the current unique version of this checkout if [ "${is_patch}" = "true" ]; then CURRENT_VERSION=$(git describe)-patch-${version_id} @@ -433,10 +435,7 @@ tasks: if [ `which strip` ]; then echo "found strip" find . -maxdepth 1 -type f -iname "mongo*" -exec strip {} \; - strip mongo/mongo fi - # On RHEL, the mongo shell binary is in a mongo directory - mv mongo/mongo ./mongodb-binaries/bin/ || true find . -maxdepth 1 -type f -iname "mongo*" -exec mv {} ./mongodb-binaries/bin/ \; ${compress} mongodb-binaries.${ext|tgz} mongodb-binaries/ @@ -584,7 +583,6 @@ axes: display_name: "Python 2.6" variables: ### There is no python toolchain on RHEL 6.2, using system python - ### PYTHON_BINARY: "/opt/python/2.6/bin/python" PYTHON_BINARY: "/usr/bin/python" DRIVER_WORKING_DIRECTORY: "mongo-python-driver" DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-python-driver/xunit-results/TEST-*.xml" @@ -629,7 +627,7 @@ modules: - name: mongo-python-driver repo: git@github.com:mongodb/mongo-python-driver.git - branch: evergreen + branch: master ####################################### # BUILDVARIANTS # diff --git a/etc/evergreen.yml b/etc/evergreen.yml index fae0563fbde..520a49b77f5 100644 --- a/etc/evergreen.yml +++ b/etc/evergreen.yml @@ -113,7 +113,7 @@ variables: - enterprise-debian71-64 - enterprise-debian81-64 - enterprise-linux-64-amazon-ami - - enterprise-osx-107 + - enterprise-osx-108 - enterprise-rhel-62-64-bit - enterprise-rhel-62-64-bit-coverage - enterprise-rhel-62-64-bit-inmem @@ -145,17 +145,15 @@ variables: - linux-64-ephemeralForTest - linux-64-lsm - linux-64-repeated-execution - - osx-107 - - osx-107-debug - - osx-107-ssl + - osx-108 + - osx-108-debug + - osx-108-ssl - rhel62 - rhel70 - - solaris-64-bit - suse11 - suse12 - ubuntu1204 - ubuntu1404 - - ubuntu1404-rocksdb - ubuntu1604 - ubuntu1604-arm64 - ubuntu1604-asan @@ -238,9 +236,6 @@ functions: if [ "Windows_NT" = "$OS" ]; then typeperf -qx PhysicalDisk | grep Disk | grep -v _Total > disk_counters.txt typeperf -cf disk_counters.txt -si 5 -o mongo-diskstats - # Solaris: iostat -T d option for timestamp. - elif iostat -T d -Mx > /dev/null 2>&1; then - iostat -T d -Mx 5 > mongo-diskstats # Linux: iostat -t option for timestamp. elif iostat -tdmx > /dev/null 2>&1; then iostat -tdmx 5 > mongo-diskstats @@ -285,11 +280,8 @@ functions: get_pids() { proc_pids=$(pgrep $1); } get_process_info() { proc_name=$(ps -p $1 -o comm=); - # prstat is available on Solaris - if [ ! -z $(which prstat 2> /dev/null) ]; then - proc_threads=$(prstat -p $1 1 1 | grep $1 | cut -f2 -d "/"); # /proc is available on Linux platforms - elif [ -f /proc/$1/status ]; then + if [ -f /proc/$1/status ]; then ${set_sudo} proc_threads=$($sudo grep Threads /proc/$1/status | sed "s/\s//g" | cut -f2 -d ":"); else @@ -365,19 +357,6 @@ functions: mv mongodb*/mongo.{debug,dSYM,pdb} mongodb*/mongod.{debug,dSYM,pdb} mongodb*/mongos.{debug,dSYM,pdb} . 2>/dev/null || true rm -r mongodb*/*.{debug,dSYM,pdb} mongo-debugsymbols.tgz 2>/dev/null || true - "build rocksdb" : - command: shell.exec - params: - script: | - set -o errexit - set -o verbose - if [ "${build_rocksdb|}" = "true" ]; then - rm -rf rocksdb - git clone https://github.com/facebook/rocksdb.git - cd rocksdb - make CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ static_lib - fi - "build new tools" : command: shell.exec params: @@ -441,6 +420,13 @@ functions: set -o errexit set -o verbose + # Set the TMPDIR environment variable to be a directory in the task's working + # directory so that temporary files created by processes spawned by resmoke.py get + # cleaned up after the task completes. This also ensures the spawned processes + # aren't impacted by limited space in the mount point for the /tmp directory. + export TMPDIR="${workdir}/tmp" + mkdir -p $TMPDIR + # check if virtualenv is set up if [ -d "venv" ]; then if [ "Windows_NT" = "$OS" ]; then @@ -524,7 +510,7 @@ functions: path_value="$path_value:${task_path_suffix}" fi - ${resmoke_wrapper} PATH="$path_value" ${san_symbolizer} ${san_options} ${rlp_environment} ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/resmoke.py ${resmoke_args} $extra_args ${test_flags} --log=buildlogger --reportFile=report.json + ${resmoke_wrapper} PATH="$path_value" ${san_symbolizer} ${lang_environment} ${san_options} ${rlp_environment} ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/resmoke.py ${resmoke_args} $extra_args ${test_flags} --log=buildlogger --reportFile=report.json "do jepsen setup" : @@ -852,10 +838,18 @@ functions: script: | set -o errexit + # Override the aws credentials with the kitchen specific credentials + cat <<EOF > ~/.aws/credentials + [default] + aws_access_key_id = ${kitchen_aws_key} + aws_secret_access_key = ${kitchen_aws_secret} + EOF + export KITCHEN_ARTIFACTS_URL="https://s3.amazonaws.com/mciuploads/${project}/${build_variant}/${revision}/artifacts/${build_id}.tgz" export KITCHEN_SECURITY_GROUP="${kitchen_security_group}" export KITCHEN_SSH_KEY_ID="${kitchen_ssh_key_id}" export KITCHEN_SUBNET="${kitchen_subnet}" + export KITCHEN_VPC="${kitchen_vpc}" for i in {1..3} do @@ -1125,6 +1119,12 @@ post: if [ ! -f $new_binary_file ]; then mv $binary_file_location $new_binary_file fi + # On Windows if a .pdb symbol file exists, include it in the archive. + pdb_file=$(echo $binary_file_location | sed "s/\.exe/.pdb/") + if [ -f $pdb_file ]; then + new_pdb_file=unittest_binaries/$(echo $pdb_file | sed "s/.*\///") + mv $pdb_file $new_pdb_file + fi done done - command: archive.targz_pack @@ -1239,14 +1239,12 @@ tasks: directory: src revisions: # for each module include revision as <module_name> : ${<module_name>_rev} enterprise: ${enterprise_rev} - rocksdb: ${rocksdb_rev} - command: git.apply_patch params: directory: src - func: "get buildnumber" - func: "setup credentials" - func: "build new tools" # noop if ${newtools} is not "true" - - func: "build rocksdb" # noop if ${build_rocksdb} is not "true" - command: shell.exec params: working_dir: src @@ -1295,14 +1293,6 @@ tasks: ${strip_command|/usr/bin/strip} mongobridge fi - # If this is a scheduled build, we check for changes against the last scheduled commit. - if [ "${is_patch}" != "true" ]; then - burn_in_args="--checkEvergreen" - fi - - # Capture a list of new and modified tests. - ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/burn_in_tests.py --branch=${branch_name} --buildVariant=${build_variant} --testListOutfile=jstests/new_tests.json --noExec $burn_in_args - # On windows we need to make sure the paths in unittests.txt are compatible with cygwin tar sed 's|\\|/|g' build/unittests.txt > build/unittests-tarlist.txt ${tar|tar} -czvf mongodb-unittests.tgz -T build/unittests-tarlist.txt build/unittests.txt @@ -1421,7 +1411,6 @@ tasks: directory: src revisions: # for each module include revision as <module_name> : ${<module_name>_rev} enterprise: ${enterprise_rev} - rocksdb: ${rocksdb_rev} - command: git.apply_patch params: directory: src @@ -1440,7 +1429,38 @@ tasks: depends_on: - name: compile commands: + - command: git.get_project + # The repository is cloned in a directory distinct from src for the modified test detection + # because the extraction of the artifacts performed in the 'do setup' causes + # 'git diff --name-only' to see all tests as modified on Windows (git 1.9.5). See SERVER-30634. + params: + directory: burn_in_tests_clonedir + revisions: # for each module include revision as <module_name> : ${<module_name>_rev} + enterprise: ${enterprise_rev} + - command: shell.exec - func: "do setup" + - func: "set up virtualenv" + - command: shell.exec + params: + working_dir: burn_in_tests_clonedir + script: | + set -o errexit + # Create a symbolic link to the venv in the src directory so activate_virtualenv can use it + # if it exists. + ln -s ../src/venv venv + ${activate_virtualenv} + set -o verbose + # If this is a scheduled build, we check for changes against the last scheduled commit. + if [ "${is_patch}" != "true" ]; then + burn_in_args="--checkEvergreen" + fi + # Copy the dbtest executable from the src dir because burn_in_tests.py calls it to get the + # list of dbtest suites. + cp ../src/dbtest${exe} . + # Capture a list of new and modified tests. + ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/burn_in_tests.py --branch=${branch_name} --buildVariant=${build_variant} --testListOutfile=jstests/new_tests.json --noExec $burn_in_args + # Copy the results to the src dir. + cp jstests/new_tests.json ../src/jstests/new_tests.json - func: "do multiversion setup" - func: "run tests" vars: @@ -2717,6 +2737,17 @@ tasks: run_multiple_jobs: true - <<: *task_template + name: write_concern_majority_passthrough_WT + depends_on: + - name: jsCore_WT + commands: + - func: "do setup" + - func: "run tests" + vars: + resmoke_args: --suites=write_concern_majority_passthrough --storageEngine=wiredTiger + run_multiple_jobs: true + +- <<: *task_template name: replica_sets commands: - func: "do setup" @@ -3097,7 +3128,7 @@ tasks: /usr/local/bin/notary-client.py --key-name "server-3.4" --auth-token-file ${workdir}/src/signing_auth_token --comment "Evergreen Automatic Signing ${revision} - ${build_variant} - ${branch_name}" --notary-url http://notary-service.build.10gen.cc:5000 --skip-missing mongodb-${push_name}-${push_arch}-${suffix}.${ext|tgz} mongodb-shell-${push_name}-${push_arch}-${suffix}.${ext|tgz} mongodb-${push_name}-${push_arch}-debugsymbols-${suffix}.${ext|tgz} mongodb-win32-${push_arch}-${suffix}.msi mongodb-src-${src_suffix}.${ext|tar.gz} if [ "${has_packages|}" = "true" ]; then - CURATOR_RELEASE="88f34a9f1c79db7ea9597b6e85eb5995d03714ba" + CURATOR_RELEASE="ea8d75dcc1a587111e7418e2428fb67e267af9fe" curl -L -O http://boxes.10gen.com/build/curator/curator-dist-rhel70-$CURATOR_RELEASE.tar.gz tar -zxvf curator-dist-rhel70-$CURATOR_RELEASE.tar.gz ./curator repo --config ./etc/repo_config.yaml --distro ${packager_distro} --edition ${repo_edition} --version ${version} --arch ${packager_arch} --packages repo @@ -3513,11 +3544,6 @@ modules: prefix: src/mongo/db/modules branch: v3.4 -- name: rocksdb - repo: git@github.com:mongodb-partners/mongo-rocks.git - prefix: src/mongo/db/modules - branch: v3.4 - ####################################### # Buildvariants # ####################################### @@ -3650,6 +3676,7 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push - name: linux-64-repeated-execution @@ -3767,6 +3794,7 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: linux-64-duroff display_name: Linux (No Journal) @@ -4159,6 +4187,7 @@ buildvariants: push_bucket: downloads.mongodb.org push_name: linux push_arch: x86_64-ubuntu1604 + lang_environment: LANG=C compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 -j$(grep -c ^processor /proc/cpuinfo) --release CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy multiversion_platform_arch: "ubuntu1604" multiversion_edition: "targeted" @@ -4283,6 +4312,7 @@ buildvariants: push_arch: arm64-enterprise-ubuntu1604 compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 -j$(grep -c ^processor /proc/cpuinfo) CCFLAGS="-march=armv8-a+crc -mtune=generic" --release CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy num_jobs_available: $(grep -c ^processor /proc/cpuinfo) + max_jobs: 8 # Avoid starting too many mongod's on ARM test servers variant_excluded_flags: requires_mmapv1 has_packages: true packager_script: packager-enterprise.py @@ -4370,6 +4400,7 @@ buildvariants: push_arch: arm64-ubuntu1604 compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 -j$(grep -c ^processor /proc/cpuinfo) --release CCFLAGS="-march=armv8-a+crc -mtune=generic" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy num_jobs_available: $(grep -c ^processor /proc/cpuinfo) + max_jobs: 8 # Avoid starting too many mongod's on ARM test servers variant_excluded_flags: requires_mmapv1 has_packages: true packager_script: packager.py @@ -4381,62 +4412,8 @@ buildvariants: - name: compile distros: - ubuntu1604-arm64-large - - name: aggregation_WT - - name: aggregation_auth - - name: auth_WT - name: dbtest_WT - - name: failpoints - - name: failpoints_auth - - name: gle_auth_WT - - name: gle_auth_write_cmd_WT - - name: gle_auth_basics_passthrough_WT - - name: gle_auth_basics_passthrough_write_cmd_WT - - name: sharding_gle_auth_basics_passthrough_WT - - name: sharding_gle_auth_basics_passthrough_write_cmd_WT - name: jsCore_WT - - name: jsCore_compatibility_WT - - name: jsCore_decimal_WT - - name: jstestfuzz_WT - - name: jstestfuzz_concurrent_WT - - name: jstestfuzz_concurrent_replication_WT - - name: jstestfuzz_concurrent_sharded_WT - - name: jstestfuzz_replication_WT - - name: jstestfuzz_sharded_WT - - name: mongosTest - - name: noPassthrough_WT - - name: noPassthroughWithMongod_WT - - name: bulk_gle_passthrough_WT - - name: parallel_WT - - name: parallel_compatibility_WT - - name: concurrency_WT - distros: - # There is a known performance issue with the ubuntu1604-arm64-1.linaro.build.10gen.cc host - # that's part of the ubuntu1604-arm64-large pool. We run the concurrency tests only on the - # hosts from the ubuntu1604-arm64-small pool to work around this issue. - - ubuntu1604-arm64-small - - name: concurrency_replication_WT - distros: - - ubuntu1604-arm64-small - - name: concurrency_sharded_WT - distros: - - ubuntu1604-arm64-small - - name: concurrency_simultaneous_WT - distros: - - ubuntu1604-arm64-small - - name: replica_sets_WT - - name: replica_sets_auth - - name: replica_sets_jscore_passthrough_WT - - name: master_slave_WT - - name: master_slave_auth - - name: master_slave_jscore_passthrough_WT - - name: sharding_WT - - name: sharding_auth - - name: slow1_WT - - name: serial_run_WT - - name: sharding_jscore_passthrough_WT - - name: ssl - - name: sslSpecial - - name: tool_WT - name: unittests - name: push distros: @@ -4529,6 +4506,7 @@ buildvariants: - ubuntu1604-zseries-large - ubuntu1604-zseries-small batchtime: 1440 # 1 day + stepback: false expansions: gorootvars: PATH=/opt/mongodbtoolchain/v2/bin:$PATH tooltags: -gccgoflags "$(pkg-config --libs --cflags libssl libcrypto libsasl2)" -tags 'sasl ssl' @@ -4536,7 +4514,7 @@ buildvariants: push_bucket: downloads.10gen.com push_name: linux push_arch: s390x-enterprise-ubuntu1604 - compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 --release -j$(grep -c ^processor /proc/cpuinfo) CCFLAGS="-march=z196 -mtune=zEC12" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy + compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 --release -j3 CCFLAGS="-march=z196 -mtune=zEC12" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy num_jobs_available: 2 variant_excluded_flags: requires_mmapv1 has_packages: true @@ -4621,6 +4599,7 @@ buildvariants: - name: sslSpecial - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - ubuntu1604-test @@ -5055,6 +5034,7 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - rhel70-small @@ -5194,6 +5174,9 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT + distros: + - windows-64-vs2015-large - name: enterprise-windows-64 display_name: "* Enterprise Windows" @@ -5447,8 +5430,8 @@ buildvariants: # OSX buildvariants # ########################################### -- name: osx-107 - display_name: OS X 10.7 +- name: osx-108 + display_name: OS X 10.8 run_on: - macos-1012 batchtime: 1440 # 1 day @@ -5457,8 +5440,8 @@ buildvariants: push_bucket: downloads.mongodb.org push_name: osx push_arch: x86_64 - gorootvars: CGO_CFLAGS=-mmacosx-version-min=10.7 CGO_LDFLAGS=-mmacosx-version-min=10.7 - compile_flags: --allocator=system -j$(sysctl -n hw.logicalcpu) --release --osx-version-min=10.7 --libc++ + gorootvars: CGO_CFLAGS=-mmacosx-version-min=10.8 CGO_LDFLAGS=-mmacosx-version-min=10.8 + compile_flags: --allocator=system -j$(sysctl -n hw.logicalcpu) --release --osx-version-min=10.8 --libc++ python: python2.7 num_jobs_available: 1 build_mongoreplay: true @@ -5547,8 +5530,8 @@ buildvariants: distros: - rhel70-small -- name: osx-107-ssl - display_name: SSL OS X 10.7 +- name: osx-108-ssl + display_name: SSL OS X 10.8 run_on: - macos-1012 batchtime: 1440 # 1 day @@ -5558,8 +5541,8 @@ buildvariants: push_name: osx-ssl push_arch: x86_64 tooltags: "-tags ssl" - gorootvars: CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.7 CGO_LDFLAGS=-mmacosx-version-min=10.7 - compile_flags: --ssl --allocator=system -j$(sysctl -n hw.logicalcpu) --release --osx-version-min=10.7 --libc++ CPPPATH=/opt/mongodbtoolchain/v2/include + gorootvars: CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.8 CGO_LDFLAGS=-mmacosx-version-min=10.8 + compile_flags: --ssl --allocator=system -j$(sysctl -n hw.logicalcpu) --release --osx-version-min=10.8 --libc++ CPPPATH=/opt/mongodbtoolchain/v2/include python: python2.7 num_jobs_available: 1 build_mongoreplay: true @@ -5644,12 +5627,13 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - rhel70-small -- name: osx-107-debug - display_name: "* OS X 10.7 DEBUG" +- name: osx-108-debug + display_name: "* OS X 10.8 DEBUG" run_on: - macos-1012 expansions: @@ -5658,8 +5642,8 @@ buildvariants: push_name: osx-debug push_arch: x86_64 num_jobs_available: 1 - gorootvars: CGO_CFLAGS=-mmacosx-version-min=10.7 CGO_LDFLAGS=-mmacosx-version-min=10.7 - compile_flags: --dbg=on --opt=on --allocator=system -j$(sysctl -n hw.logicalcpu) --osx-version-min=10.7 --libc++ + gorootvars: CGO_CFLAGS=-mmacosx-version-min=10.8 CGO_LDFLAGS=-mmacosx-version-min=10.8 + compile_flags: --dbg=on --opt=on --allocator=system -j$(sysctl -n hw.logicalcpu) --osx-version-min=10.8 --libc++ python: python2.7 build_mongoreplay: true tasks: @@ -5689,8 +5673,8 @@ buildvariants: - name: tool_WT - name: unittests -- name: enterprise-osx-107 - display_name: Enterprise OS X 10.7 +- name: enterprise-osx-108 + display_name: Enterprise OS X 10.8 modules: - enterprise run_on: @@ -5702,8 +5686,8 @@ buildvariants: push_name: osx push_arch: x86_64-enterprise tooltags: "-tags 'ssl sasl'" - gorootvars: CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.7 CGO_LDFLAGS=-mmacosx-version-min=10.7 - compile_flags: --ssl --allocator=system -j$(sysctl -n hw.logicalcpu) --release --osx-version-min=10.7 --libc++ CPPPATH=/opt/mongodbtoolchain/v2/include + gorootvars: CGO_CPPFLAGS=-I/opt/mongodbtoolchain/v2/include CGO_CFLAGS=-mmacosx-version-min=10.8 CGO_LDFLAGS=-mmacosx-version-min=10.8 + compile_flags: --ssl --allocator=system -j$(sysctl -n hw.logicalcpu) --release --osx-version-min=10.8 --libc++ CPPPATH=/opt/mongodbtoolchain/v2/include python: python2.7 num_jobs_available: 1 build_mongoreplay: true @@ -5961,6 +5945,9 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT + distros: + - rhel62-large - name: package distros: - ubuntu1604-packer @@ -6113,6 +6100,7 @@ buildvariants: - name: ssl - name: sslSpecial - name: unittests + - name: write_concern_majority_passthrough_WT - name: enterprise-rhel-70-64-bit display_name: Enterprise RHEL 7.0 @@ -6526,6 +6514,7 @@ buildvariants: - name: sslSpecial - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - rhel70-small @@ -6628,6 +6617,7 @@ buildvariants: - name: sslSpecial - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - rhel70-small @@ -6763,6 +6753,7 @@ buildvariants: # - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - rhel62-small @@ -6921,6 +6912,7 @@ buildvariants: push_path: linux push_bucket: downloads.10gen.com push_name: linux + lang_environment: LANG=C push_arch: x86_64-enterprise-ubuntu1604 compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 --release -j$(grep -c ^processor /proc/cpuinfo) CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy num_jobs_available: $(grep -c ^processor /proc/cpuinfo) @@ -7053,6 +7045,7 @@ buildvariants: - suse12-zseries-build - suse12-zseries-test batchtime: 1440 # 1 day + stepback: false expansions: gorootvars: PATH=/opt/mongodbtoolchain/v2/bin:$PATH tooltags: -gccgoflags "$(pkg-config --libs --cflags libssl libsasl2)" -tags 'sasl ssl' @@ -7060,7 +7053,7 @@ buildvariants: push_bucket: downloads.10gen.com push_name: linux push_arch: s390x-enterprise-suse12 - compile_flags: --ssl MONGO_DISTMOD=suse12 --release -j$(( $(grep -c ^processor /proc/cpuinfo) / 2 )) CCFLAGS="-march=z196 -mtune=zEC12" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy + compile_flags: --ssl MONGO_DISTMOD=suse12 --release -j3 CCFLAGS="-march=z196 -mtune=zEC12" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy num_jobs_available: $(grep -c ^processor /proc/cpuinfo) variant_excluded_flags: requires_mmapv1 has_packages: true @@ -7142,6 +7135,7 @@ buildvariants: - name: sslSpecial - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - suse12-test @@ -7327,6 +7321,7 @@ buildvariants: run_on: - suse11-zseries-build batchtime: 1440 # 1 day + stepback: false expansions: gorootvars: PATH=/opt/mongodbtoolchain/v2/bin:$PATH tooltags: -gccgoflags "$(pkg-config --libs --cflags libssl libsasl2)" -tags 'sasl ssl' @@ -7334,7 +7329,7 @@ buildvariants: push_bucket: downloads.10gen.com push_name: linux push_arch: s390x-enterprise-suse11 - compile_flags: --ssl MONGO_DISTMOD=suse11 --release -j$(grep -c ^processor /proc/cpuinfo) CCFLAGS="-march=z9-109 -mtune=z10" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy --use-s390x-crc32=off + compile_flags: --ssl MONGO_DISTMOD=suse11 --release -j3 CCFLAGS="-march=z9-109 -mtune=z10" CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy --use-s390x-crc32=off num_jobs_available: $(grep -c ^processor /proc/cpuinfo) variant_excluded_flags: requires_mmapv1 has_packages: true @@ -7413,6 +7408,7 @@ buildvariants: - name: sslSpecial - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: push distros: - suse11-test @@ -7535,94 +7531,6 @@ buildvariants: ########################################### -# Solaris buildvariants # -########################################### - -- name: solaris-64-bit - display_name: "* Solaris" - run_on: - - solaris - expansions: - push_path: sunos5 - push_bucket: downloads.mongodb.org - push_name: sunos5 - push_arch: x86_64 - gorootvars: PATH=/opt/mongodbtoolchain/v2/bin:$PATH - tooltags: -gccgoflags "-lsocket -lnsl" - compile_flags: CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy -j$(kstat cpu | sort -u | grep -c "^module") --release CCFLAGS="-m64" LINKFLAGS="-m64 -static-libstdc++ -static-libgcc" OBJCOPY=/opt/mongodbtoolchain/bin/objcopy - num_jobs_available: $(( $(kstat cpu | sort -u | grep -c "^module") / 2 )) - use_scons_cache: true - tasks: - - name: compile - - name: aggregation - - name: aggregation_WT - - name: auth - - name: auth_WT - - name: bulk_gle_passthrough - - name: bulk_gle_passthrough_WT - - name: concurrency - - name: concurrency_WT - - name: concurrency_replication - - name: concurrency_replication_WT - - name: concurrency_sharded - - name: concurrency_sharded_WT - - name: concurrency_simultaneous - - name: concurrency_simultaneous_WT - - name: dbtest - - name: dbtest_WT - - name: disk - - name: durability - - name: failpoints - - name: httpinterface - - name: jsCore - - name: jsCore_compatibility - - name: jsCore_compatibility_WT - - name: jsCore_decimal - - name: jsCore_decimal_WT - - name: jsCore_WT - - name: jstestfuzz - - name: jstestfuzz_WT - - name: jstestfuzz_replication - - name: jstestfuzz_replication_WT - - name: jstestfuzz_sharded - - name: jstestfuzz_sharded_WT - - name: mmap - - name: mongosTest - - name: noPassthrough - - name: noPassthroughWithMongod - - name: noPassthroughWithMongod_WT - - name: noPassthrough_WT - - name: parallel - - name: parallel_compatibility - - name: parallel_compatibility_WT - - name: parallel_WT - - name: replica_sets - - name: replica_sets_WT - - name: replica_sets_jscore_passthrough - - name: replica_sets_jscore_passthrough_WT - - name: master_slave - - name: master_slave_WT - - name: master_slave_jscore_passthrough - - name: master_slave_jscore_passthrough_WT - - name: sharding - - name: sharded_collections_jscore_passthrough - - name: sharded_collections_jscore_passthrough_WT - - name: sharding_jscore_passthrough - - name: sharding_jscore_passthrough_WT - - name: sharding_jscore_passthrough_wire_ops_WT - - name: sharding_WT - - name: slow1 - - name: slow1_WT - - name: serial_run - - name: serial_run_WT - - name: tool - - name: tool_WT - - name: unittests - - name: push - distros: - - rhel70-small - -########################################### # Debian buildvariants # ########################################### @@ -8075,6 +7983,7 @@ buildvariants: - name: sslSpecial - name: tool - name: unittests + - name: write_concern_majority_passthrough_WT - name: linux-64-ephemeralForTest display_name: Linux (ephemeralForTest) @@ -8232,6 +8141,7 @@ buildvariants: - name: sslSpecial - name: tool - name: unittests + - name: write_concern_majority_passthrough_WT - name: enterprise-rhel-72-s390x-inmem display_name: Enterprise RHEL 7.2 s390x (inMemory) DEBUG @@ -8319,75 +8229,7 @@ buildvariants: - name: sslSpecial - name: tool - name: unittests - -- name: ubuntu1404-rocksdb - display_name: Ubuntu 14.04 (RocksDB) - modules: - - rocksdb - run_on: - - ubuntu1404-test - batchtime: 1440 # 1 day - expansions: - build_rocksdb: true - compile_flags: -j$(grep -c ^processor /proc/cpuinfo) --dbg=off --opt=on CPPPATH=$(readlink -f ../rocksdb/include/) LIBPATH=$(readlink -f ../rocksdb/) LIBS=rocksdb CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy VARIANT_DIR=release --runtime-hardening=off - num_jobs_available: $(grep -c ^processor /proc/cpuinfo) - test_flags: --storageEngine=rocksdb - use_scons_cache: true - build_mongoreplay: true - tasks: - - name: compile - distros: - - ubuntu1404-build - - name: aggregation - - name: aggregation_WT - - name: aggregation_auth - - name: auth - - name: dbtest - # - name: disk - # - name: durability - # - name: dur_jscore_passthrough - - name: failpoints - - name: failpoints_auth - - name: gle_auth - - name: gle_auth_write_cmd - - name: gle_auth_basics_passthrough - - name: gle_auth_basics_passthrough_write_cmd - - name: sharding_gle_auth_basics_passthrough - - name: sharding_gle_auth_basics_passthrough_write_cmd - - name: jsCore - - name: jsCore_auth - - name: jsCore_compatibility - - name: jstestfuzz - - name: jstestfuzz_concurrent_WT - - name: jstestfuzz_concurrent_replication_WT - - name: jstestfuzz_concurrent_sharded_WT - - name: jstestfuzz_replication - - name: jstestfuzz_sharded - - name: noPassthrough - - name: noPassthroughWithMongod - - name: bulk_gle_passthrough - - name: parallel - - name: parallel_compatibility - - name: concurrency - - name: concurrency_replication - - name: concurrency_sharded - # We use machines with more RAM to avoid OOM issues when validating collections. - distros: - - ubuntu1404-build - - name: concurrency_simultaneous - - name: replica_sets - - name: replica_sets_auth - - name: replica_sets_jscore_passthrough - - name: master_slave - - name: master_slave_WT - - name: master_slave_auth - - name: master_slave_jscore_passthrough - - name: sharding - - name: sharding_auth - - name: slow1 - - name: serial_run - - name: sharding_jscore_passthrough - - name: unittests + - name: write_concern_majority_passthrough_WT ########################################### # Experimental buildvariants # @@ -8405,6 +8247,7 @@ buildvariants: tooltags: "-tags 'ssl'" # We need llvm-symbolizer in the PATH for ASAN for clang-3.7 or later. variant_path_suffix: /usr/lib/llvm-3.8/bin + lang_environment: LANG=C san_options: LSAN_OPTIONS="suppressions=etc/lsan.suppressions" ASAN_OPTIONS=detect_leaks=1 compile_flags: CC=/usr/bin/clang-3.8 CXX=/usr/bin/clang++-3.8 CPPDEFINES="_GLIBCXX_USE_CXX11_ABI=0" --dbg=on --opt=on --allocator=system --sanitize=address --ssl -j$(grep -c ^processor /proc/cpuinfo) --nostrip VARIANT_DIR=build multiversion_platform_arch: "ubuntu1604" @@ -8538,6 +8381,7 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: ubuntu1604-asan display_name: ~ ASAN SSL Ubuntu 16.04 @@ -8549,6 +8393,7 @@ buildvariants: tooltags: "-tags 'ssl'" # We need llvm-symbolizer in the PATH for ASAN for clang-3.7 or later. variant_path_suffix: /usr/lib/llvm-3.8/bin + lang_environment: LANG=C san_options: LSAN_OPTIONS="suppressions=etc/lsan.suppressions" ASAN_OPTIONS=detect_leaks=1 compile_flags: CC=/usr/bin/clang-3.8 CXX=/usr/bin/clang++-3.8 CPPDEFINES="_GLIBCXX_USE_CXX11_ABI=0" --opt=on --allocator=system --sanitize=address --ssl -j$(grep -c ^processor /proc/cpuinfo) --nostrip VARIANT_DIR=build num_jobs_available: $(($(grep -c ^processor /proc/cpuinfo) / 3)) # Avoid starting too many mongod's under ASAN build. @@ -8580,6 +8425,7 @@ buildvariants: variant_path_suffix: /usr/lib/llvm-3.8/bin gorootvars: GOROOT=/opt/go PATH="/opt/go/bin:$PATH" tooltags: "-tags 'ssl sasl'" + lang_environment: LANG=C san_options: UBSAN_OPTIONS="print_stacktrace=1" compile_flags: CC=/usr/bin/clang-3.8 CXX=/usr/bin/clang++-3.8 --dbg=on --opt=on --allocator=system --sanitize=undefined --ssl -j$(grep -c ^processor /proc/cpuinfo) --nostrip CXXFLAGS="-nostdlib -nostdinc++" LIBPATH=/opt/mongodbtoolchain/v2/lib/gcc/x86_64-mongodb-linux/5.4.0 CPPPATH="/opt/mongodbtoolchain/v2/include/c++/5.4.0/ /opt/mongodbtoolchain/v2/include/c++/5.4.0/x86_64-mongodb-linux" CPPDEFINES="_GLIBCXX_USE_CXX11_ABI=0" VARIANT_DIR=build multiversion_platform_arch: "ubuntu1604" @@ -8712,6 +8558,7 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: enterprise-ubuntu-dynamic-1604-64-bit display_name: "* Shared Library Enterprise Ubuntu 16.04" @@ -8720,6 +8567,7 @@ buildvariants: expansions: gorootvars: GOROOT=/opt/go PATH="/opt/go/bin:$PATH" tooltags: "-tags 'ssl sasl'" + lang_environment: LANG=C compile_flags: --ssl MONGO_DISTMOD=ubuntu1604 -j$(grep -c ^processor /proc/cpuinfo) CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy --link-model=dynamic num_jobs_available: $(grep -c ^processor /proc/cpuinfo) use_scons_cache: true @@ -8861,6 +8709,7 @@ buildvariants: - name: tool - name: tool_WT - name: unittests + - name: write_concern_majority_passthrough_WT - name: initsync-3dot2-rhel-62 display_name: "~ Initial Sync 3.2 Enterprise RHEL 6.2" @@ -8962,3 +8811,6 @@ buildvariants: - rhel62-large - name: slow1 - name: slow1_WT + - name: write_concern_majority_passthrough_WT + distros: + - rhel62-large diff --git a/etc/longevity.yml b/etc/longevity.yml index f6da942e0c1..9cdf9502fa7 100644 --- a/etc/longevity.yml +++ b/etc/longevity.yml @@ -9,45 +9,22 @@ post: params: working_dir: work script: | - set -v source ./dsienv.sh - $DSI_PATH/bin/make_artifact.sh + make_artifact.sh - command: s3.put params: aws_key: ${aws_key} aws_secret: ${aws_secret} - local_file: work/reports.tgz - remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/${task_name}-${build_id}.${ext|tgz} + local_file: work/dsi-artifacts.tgz + remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/dsi-artifacts-${task_name}-${build_id}-${execution}.${ext|tgz} bucket: mciuploads permissions: public-read content_type: ${content_type|application/x-gzip} - display_name: test-log - - command: s3.put - params: - aws_key: ${aws_key} - aws_secret: ${aws_secret} - local_file: work/reports/graphs/timeseries-p1.html - remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/timeseries-p1-${task_name}-${build_id}.html - bucket: mciuploads - permissions: public-read - content_type: text/html - display_name: timeseries-p1.html + display_name: Dsi Artifacts - Execution ${execution} - command: attach.results params: file_location: work/report.json - - command: shell.exec - # destroy the cluster - params: - working_dir: work - script: | - set -e - set -o verbose - # call terraform destroy twice to avoid AWS timeout - yes yes | ./terraform destroy --var-file=cluster.json - yes yes | ./terraform destroy --var-file=cluster.json - # clean all file to be safe - rm -rf * - echo "Cluster DESTROYED." + - func: "destroy cluster" - command: shell.exec params: working_dir: src @@ -79,12 +56,17 @@ functions: working_dir: work script: | cat > bootstrap.yml <<EOF - cluster_type: ${cluster} + infrastructure_provisioning: ${cluster} platform: ${platform} - setup: ${setup} + mongodb_setup: ${setup} storageEngine: ${storageEngine} - test: ${test}.longevity + test_control: ${test}.longevity production: true + workloads_dir: ../src/workloads/workloads + ycsb_dir: ../src/YCSB/YCSB + + # compositions of expansions + mongodb_binary_archive: "https://s3.amazonaws.com/mciuploads/${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz" EOF cat > runtime.yml <<EOF @@ -106,11 +88,6 @@ functions: ext: ${ext} script_flags : ${script_flags} dsi_rev: ${dsi_rev} - compare_task: ${compare_task} - workloads_rev: ${workloads_rev} - - # compositions of expansions - mongodb_binary_archive: "https://s3.amazonaws.com/mciuploads/${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz" EOF - command: shell.exec params: @@ -133,8 +110,6 @@ functions: - command: shell.exec params: working_dir: work - # setup execution environment - # configure environment script: | set -e virtualenv ./venv @@ -147,35 +122,25 @@ functions: set -v set -e source work/dsienv.sh - $DSI_PATH/bin/setup-dsi-env.sh + setup-dsi-env.sh ls -a work - "infrastructure provisioning": + "deploy cluster": - command: shell.exec - # call infrastructure-provisioning.sh. This will either create a cluster, or update tags on existing instances. params: working_dir: work script: | set -e set -v source ./dsienv.sh - export PRODUCTION=true - $DSI_PATH/bin/infrastructure_provisioning.sh ${cluster} - - "configure mongodb cluster": - - command: shell.exec - # bring up the mongod - params: - working_dir: work - script: | - set -e - set -o verbose - source ./dsienv.sh source ./venv/bin/activate - $DSI_PATH/bin/mongodb_setup.py && echo "${setup} MongoDB Cluster STARTED." + infrastructure_provisioning.py + workload_setup.py + mongodb_setup.py "run test": - command: shell.exec + type: test params: working_dir: work script: | @@ -183,9 +148,7 @@ functions: set -v source ./dsienv.sh source ./venv/bin/activate - echo "Run test for ${test}-${storageEngine} with setup ${setup}" - $DSI_PATH/bin/run_test.py ${storageEngine} ${test} ${cluster} - echo "Complete test for ${test} with setup ${setup}!" + test_control.py - command: "json.send" params: name: "perf" @@ -199,27 +162,18 @@ functions: script: | set -e set -o verbose - source ./dsienv.sh # Longevity runs so rarely, we simply teardown the cluster when done. - # Note that nowadays infrastructure_teardown.sh is actually copying the terraform.tfstate into /data/infrastructure_provisioning + # Note that nowadays infrastructure_teardown.py is actually copying the terraform.tfstate into /data/infrastructure_provisioning # but as of this writing the rhel70-perf-longevity distro didn't actually use the teardown hook. source ./dsienv.sh - $DSI_PATH/bin/infrastructure_teardown.sh + source ./venv/bin/activate + infrastructure_teardown.py echo "Cluster DESTROYED." echo echo "All perf results" cd .. cat perf.json | egrep "name|ops_per_sec" - "make test log artifact": - - command: shell.exec - params: - working_dir: work - script: | - set -v - source ./dsienv.sh - $DSI_PATH/bin/make_artifact.sh - "analyze": - command: json.get_history params: @@ -242,8 +196,8 @@ functions: set -o verbose TAG="3.2.1-Baseline" PROJECT="mongo-longevity" - OVERRIDEFILE="../src/dsi/dsi/analysis/v3.4/longevity_override.json" - python -u ../src/dsi/dsi/analysis/post_run_check.py ${script_flags} --reports-analysis reports --perf-file reports/perf.json --rev ${revision} -f history.json -t tags.json --refTag $TAG --overrideFile $OVERRIDEFILE --project_id $PROJECT --task_name ${task_name} --variant ${build_variant} + OVERRIDEFILE="../src/dsi/dsi/analysis/${branch_name}/longevity_override.json" + python -u ../src/dsi/dsi/analysis/post_run_check.py ${script_flags} --reports-analysis reports --perf-file perf.json --rev ${revision} -f history.json -t tags.json --refTag $TAG --overrideFile $OVERRIDEFILE --project_id $PROJECT --task_name ${task_name} --variant ${build_variant} tasks: - name: compile @@ -313,13 +267,8 @@ tasks: vars: storageEngine: "wiredTiger" test: "ycsb" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "ycsb" - - func: "make test log artifact" - func: "analyze" vars: script_flags: --ycsb-throughput-analysis reports @@ -334,13 +283,8 @@ tasks: vars: storageEngine: "mmapv1" test: "ycsb" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "ycsb" - - func: "make test log artifact" - func: "analyze" vars: script_flags: --ycsb-throughput-analysis reports @@ -359,6 +303,11 @@ modules: branch: master + +####################################### +# Linux Buildvariants # +####################################### + buildvariants: - name: linux-wt-shard display_name: Linux WT Shard diff --git a/etc/perf.yml b/etc/perf.yml index 3dbc7baa61d..db116a42887 100644 --- a/etc/perf.yml +++ b/etc/perf.yml @@ -86,7 +86,7 @@ functions: set -v chmod +x mongod chmod +x mongo - git clone https://github.com/mongodb/mongo-perf perf + git clone git@github.com:mongodb/mongo-perf.git perf cd perf git describe --tags - command: shell.exec @@ -158,11 +158,9 @@ functions: script: | set -o errexit source ./venv/bin/activate - REFTAGS="3.4.2-Baseline 3.2.12-Baseline 3.0.14-Baseline" # These are project specific + REFTAGS="3.4.9-Baseline 3.2.17-Baseline 3.0.15-Baseline" # These are project specific # Project Opts are project specific, but don't match expansion from elsewhere. - # We could change dsi/analysis/v3.4 to dsi/analysis/perf-3.4 in DSI to get dsi/analysis/${project}/perf_override.json - # Note project_id performance doesn't match string perf used elsewhere for ${project} - PROJECT_OPTS="--overrideFile ../dsi/analysis/v3.4/perf_override.json --project_id performance" + PROJECT_OPTS="--overrideFile ../dsi/analysis/${branch_name}/perf_override.json --project_id performance" python -u ../dsi/analysis/dashboard_gen.py --rev ${revision} -f history.json -t tags.json --refTag $REFTAGS $PROJECT_OPTS --variant ${build_variant} --task ${task_name} --jira-user ${perf_jira_user} --jira-password ${perf_jira_pw} || true - command: "json.send" params: @@ -182,8 +180,8 @@ functions: # appropriate flags if it's `true`. reports_analysis_flags="--reports-analysis . --perf-file perf/perf.json" cmd_flags=$([ "${reports_analysis}" = "true" ] && echo "$reports_analysis_flags" || echo "") - REFTAG="3.2.12-Baseline" - OVERRIDE="../dsi/analysis/v3.4/perf_override.json" # Note use of v3.4 here cannot use ${project} + REFTAG="3.2.17-Baseline" + OVERRIDE="../dsi/analysis/${branch_name}/perf_override.json" python ../dsi/analysis/perf_regression_check.py $cmd_flags -f history.json --rev ${revision} -t tags.json --refTag $REFTAG --overrideFile $OVERRIDE --variant ${build_variant} --task ${task_name} --threshold 0.10 --threadThreshold 0.15 "run perf tests": - command: shell.exec @@ -196,6 +194,7 @@ functions: source ./venv/bin/activate pip install argparse - command: shell.exec + type : test params: working_dir: src script: | @@ -495,7 +494,7 @@ buildvariants: - name: linux-wt-repl display_name: 1-Node ReplSet Linux inMemory - batchtime: 360 # 6 hours + batchtime: 90 # 1.5 hours expansions: mongod_exec_wrapper: *exec_wrapper perf_exec_wrapper: *perf_wrapper @@ -511,7 +510,7 @@ buildvariants: - name: linux-mmap-repl display_name: 1-Node ReplSet Linux MMAPv1 - batchtime: 360 # 6 hours + batchtime: 90 # 1.5 hours expansions: mongod_exec_wrapper: *exec_wrapper perf_exec_wrapper: *perf_wrapper diff --git a/etc/system_perf.yml b/etc/system_perf.yml index 79f2a3d1a89..137bc2b4a13 100644 --- a/etc/system_perf.yml +++ b/etc/system_perf.yml @@ -10,37 +10,41 @@ post: working_dir: work script: | source ./dsienv.sh - $DSI_PATH/bin/make_artifact.sh + make_artifact.sh - command: s3.put params: aws_key: ${aws_key} aws_secret: ${aws_secret} - local_file: work/reports.tgz - remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/${task_name}-${build_id}.${ext|tgz} + local_file: work/dsi-artifacts.tgz + remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/dsi-artifacts-${task_name}-${build_id}-${execution}.${ext|tgz} bucket: mciuploads permissions: public-read content_type: ${content_type|application/x-gzip} - display_name: test-log + display_name: Dsi Artifacts - Execution ${execution} - command: s3.put params: aws_key: ${aws_key} aws_secret: ${aws_secret} - local_file: work/reports/graphs/timeseries-p1.html - remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/timeseries-p1-${task_name}-${build_id}.html + local_file: src/workloads/workloads/jsdoc/jsdocs-redirect.html + remote_file: ${project}/${build_variant}/${revision}/${task_id}/${version_id}/logs/workloads-${task_name}-${build_id}.html bucket: mciuploads permissions: public-read content_type: text/html - display_name: timeseries-p1.html + display_name: workloads documentation - command: attach.results params: file_location: work/report.json + - command: "json.send" + params: + name: "perf" + file: "work/perf.json" - command: shell.exec params: working_dir: work script: | source ./dsienv.sh if [ -e /data/infrastructure_provisioning/terraform/provisioned.${cluster} ]; then - $DSI_PATH/bin/mark_idle.sh + mark_idle.sh fi - command: shell.exec @@ -75,12 +79,15 @@ functions: working_dir: work script: | cat > bootstrap.yml <<EOF - cluster_type: ${cluster} + infrastructure_provisioning: ${cluster} platform: ${platform} - setup: ${setup} + mongodb_setup: ${setup} storageEngine: ${storageEngine} - test: ${test} + test_control: ${test} production: true + mongodb_binary_archive: "https://s3.amazonaws.com/mciuploads/${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz" + workloads_dir: ../src/workloads/workloads + ycsb_dir: ../src/YCSB/YCSB EOF cat > runtime.yml <<EOF @@ -102,11 +109,7 @@ functions: ext: ${ext} script_flags : ${script_flags} dsi_rev: ${dsi_rev} - compare_task: ${compare_task} workloads_rev: ${workloads_rev} - - # compositions of expansions - mongodb_binary_archive: "https://s3.amazonaws.com/mciuploads/${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz" EOF - command: shell.exec params: @@ -136,44 +139,32 @@ functions: virtualenv ./venv source ./venv/bin/activate pip install -r ../src/dsi/dsi/requirements.txt - python ../src/dsi/dsi/bin/bootstrap.py --production - ls - pwd + python ../src/dsi/dsi/bin/bootstrap.py - command: shell.exec params: script: | set -v set -e source work/dsienv.sh - $DSI_PATH/bin/setup-dsi-env.sh + setup-dsi-env.sh ls -a work - "infrastructure provisioning": + "deploy cluster": - command: shell.exec - # call infrastructure-provisioning.sh. This will either create a cluster, or update tags on existing instances. params: working_dir: work script: | set -e set -v source ./dsienv.sh - export PRODUCTION=true - $DSI_PATH/bin/infrastructure_provisioning.sh ${cluster} - - "configure mongodb cluster": - - command: shell.exec - # bring up the mongod - params: - working_dir: work - script: | - set -e - set -o verbose - source ./dsienv.sh source ./venv/bin/activate - $DSI_PATH/bin/mongodb_setup.py && echo "${setup} MongoDB Cluster STARTED." + infrastructure_provisioning.py + workload_setup.py + mongodb_setup.py "run test": - command: shell.exec + type: test params: working_dir: work script: | @@ -181,21 +172,12 @@ functions: set -v source ./dsienv.sh source ./venv/bin/activate - echo "Run test for ${test}-${storageEngine} with setup ${setup}" - $DSI_PATH/bin/run_test.py ${storageEngine} ${test} ${cluster} + test_control.py - command: "json.send" params: name: "perf" file: "work/perf.json" - "make test log artifact": - - command: shell.exec - params: - working_dir: work - script: | - source ./dsienv.sh - $DSI_PATH/bin/make_artifact.sh - "analyze": - command: json.get_history params: @@ -216,8 +198,8 @@ functions: silent: true script: | set -o errexit - TAGS="3.2.15-Baseline" - OVERRIDEFILE="../src/dsi/dsi/analysis/v3.4/system_perf_override.json" + TAGS="3.2.17-Baseline 3.4.9-Baseline" + OVERRIDEFILE="../src/dsi/dsi/analysis/${branch_name}/system_perf_override.json" python -u ../src/dsi/dsi/analysis/dashboard_gen.py --rev ${revision} -f history.json -t tags.json --refTag $TAGS --overrideFile $OVERRIDEFILE --project_id sys-perf --variant ${build_variant} --task ${task_name} --jira-user ${perf_jira_user} --jira-password ${perf_jira_pw} || true - command: "json.send" params: @@ -231,48 +213,9 @@ functions: script: | set -o errexit set -o verbose - TAG="3.2.15-Baseline" - OVERRIDEFILE="../src/dsi/dsi/analysis/v3.4/system_perf_override.json" - python -u ../src/dsi/dsi/analysis/post_run_check.py ${script_flags} --reports-analysis reports --perf-file reports/perf.json --rev ${revision} -f history.json -t tags.json --refTag $TAG --overrideFile $OVERRIDEFILE --project_id sys-perf --variant ${build_variant} --task ${task_name} - - "compare": - - command: shell.exec - params: - script: | - set -o verbose - rm -rf ./src ./work - mkdir src - mkdir work - - command: manifest.load - - command: git.get_project - params: - directory: src - revisions: # for each module include revision as <module_name> : ${<module_name>_rev} - dsi: ${dsi_rev} - - command: json.get - params: - task: ${compare_task} - variant : ${variant1} - file: "work/standalone.json" - name: "perf" - - command: json.get - params: - task: ${compare_task} - variant : ${variant2} - file: "work/oplog.json" - name: "perf" - - command: shell.exec - type : test - params: - working_dir: work - script: | - set -o errexit - set -o verbose - python -u ../src/dsi/dsi/analysis/compare.py -b standalone.json -c oplog.json - - command: "json.send" - params: - name: "perf" - file: "work/perf.json" + TAG="3.2.17-Baseline" + OVERRIDEFILE="../src/dsi/dsi/analysis/${branch_name}/system_perf_override.json" + python -u ../src/dsi/dsi/analysis/post_run_check.py ${script_flags} --reports-analysis reports --perf-file perf.json --rev ${revision} -f history.json -t tags.json --refTag $TAG --overrideFile $OVERRIDEFILE --project_id sys-perf --variant ${build_variant} --task ${task_name} ####################################### # Tasks # @@ -323,8 +266,17 @@ tasks: then echo "Fetching JS test DB correctness checks from directory jstests/hooks" cp -a jstests/hooks/* mongodb/jstests/hooks + + echo "Now adding our own special run_validate_collections.js wrapper" + mv mongodb/jstests/hooks/run_validate_collections.js mongodb/jstests/hooks/run_validate_collections.actual.js + + cat << EOF > mongodb/jstests/hooks/run_validate_collections.js + print("NOTE: run_validate_collections.js will skip the oplog!"); + TestData = { skipValidationNamespaces: ['local.oplog.rs'] }; + load('jstests/hooks/run_validate_collections.actual.js'); + EOF fi - tar cvf mongodb.tar mongodb + tar cf mongodb.tar mongodb gzip mongodb.tar - command: s3.put params: @@ -341,25 +293,20 @@ tasks: depends_on: - name: compile variant: linux-standalone + priority: 5 commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "ycsb" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "ycsb" - - func: "make test log artifact" - func: "analyze" vars: script_flags: --ycsb-throughput-analysis reports - name: industry_benchmarks_MMAPv1 + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -368,20 +315,46 @@ tasks: vars: storageEngine: "mmapv1" test: "ycsb" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" + - func: "deploy cluster" + - func: "run test" + - func: "analyze" vars: - storageEngine: "mmapv1" + script_flags: --ycsb-throughput-analysis reports + +- name: industry_benchmarks_wmajority_WT + priority: 5 + depends_on: + - name: compile + variant: linux-standalone + commands: + - func: "prepare environment" + vars: + storageEngine: "wiredTiger" + test: "ycsb-wmajority" + - func: "deploy cluster" - func: "run test" + - func: "analyze" + vars: + script_flags: --ycsb-throughput-analysis reports + +- name: industry_benchmarks_wmajority_MMAPv1 + priority: 5 + depends_on: + - name: compile + variant: linux-standalone + commands: + - func: "prepare environment" vars: storageEngine: "mmapv1" - test: "ycsb" - - func: "make test log artifact" + test: "ycsb-wmajority" + - func: "deploy cluster" + - func: "run test" - func: "analyze" vars: script_flags: --ycsb-throughput-analysis reports - name: core_workloads_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -390,18 +363,12 @@ tasks: vars: storageEngine: "wiredTiger" test: "core" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "core" - - func: "make test log artifact" - func: "analyze" - name: core_workloads_MMAPv1 + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -410,18 +377,12 @@ tasks: vars: storageEngine: "mmapv1" test: "core" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "mmapv1" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "core" - - func: "make test log artifact" - func: "analyze" - name: non_sharded_workloads_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -430,18 +391,12 @@ tasks: vars: storageEngine: "wiredTiger" test: "non_sharded" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "non_sharded" - - func: "make test log artifact" - func: "analyze" - name: non_sharded_workloads_MMAPv1 + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -450,18 +405,12 @@ tasks: vars: storageEngine: "mmapv1" test: "non_sharded" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "mmapv1" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "non_sharded" - - func: "make test log artifact" - func: "analyze" - name: mongos_workloads_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -470,18 +419,12 @@ tasks: vars: storageEngine: "wiredTiger" test: "mongos" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "mongos" - - func: "make test log artifact" - func: "analyze" - name: mongos_workloads_MMAPv1 + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -491,18 +434,12 @@ tasks: vars: storageEngine: "mmapv1" test: "mongos" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "mmapv1" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "mongos" - - func: "make test log artifact" - func: "analyze" - name: move_chunk_workloads_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -511,18 +448,12 @@ tasks: vars: storageEngine: "wiredTiger" test: "move_chunk" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "move_chunk" - - func: "make test log artifact" - func: "analyze" - name: move_chunk_workloads_MMAPv1 + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -531,18 +462,12 @@ tasks: vars: storageEngine: "mmapv1" test: "move_chunk" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "mmapv1" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "move_chunk" - - func: "make test log artifact" - func: "analyze" - name: secondary_performance_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -550,21 +475,15 @@ tasks: - func: "prepare environment" vars: storageEngine: "wiredTiger" + # Unfortunately the dash/underscore style is different for mongodb_setup and test_control test: "secondary_performance" - setup: "replica-2node" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" - setup: "replica-2node" + setup: "secondary-performance" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "secondary_performance" - - func: "make test log artifact" - func: "analyze" - name: secondary_performance_MMAPv1 + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -572,85 +491,15 @@ tasks: - func: "prepare environment" vars: storageEngine: "mmapv1" + # Unfortunately the dash/underscore style is different for mongodb_setup and test_control test: "secondary_performance" - setup: "replica-2node" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "mmapv1" - setup: "replica-2node" + setup: "secondary-performance" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "secondary_performance" - - func: "make test log artifact" - - func: "analyze" - -- name: industry_benchmarks_WT_oplog_comp - depends_on: - - name: industry_benchmarks_WT - variant: linux-standalone - status : "*" - - name: industry_benchmarks_WT - variant: linux-1-node-replSet - status: "*" - commands: - - func: "compare" - vars: - compare_task: "industry_benchmarks_WT" - variant1: "linux-standalone" - variant2: "linux-1-node-replSet" - - func: "analyze" - -- name: industry_benchmarks_MMAPv1_oplog_comp - depends_on: - - name: industry_benchmarks_MMAPv1 - variant: linux-standalone - status: "*" - - name: industry_benchmarks_MMAPv1 - variant: linux-1-node-replSet - status: "*" - commands: - - func: "compare" - vars: - compare_task: "industry_benchmarks_MMAPv1" - variant1: "linux-standalone" - variant2: "linux-1-node-replSet" - - func: "analyze" - -- name: core_workloads_WT_oplog_comp - depends_on: - - name: core_workloads_WT - variant: linux-standalone - status: "*" - - name: core_workloads_WT - variant: linux-1-node-replSet - status: "*" - commands: - - func: "compare" - vars: - compare_task: "core_workloads_WT" - variant1: "linux-standalone" - variant2: "linux-1-node-replSet" - - func: "analyze" - -- name: core_workloads_MMAPv1_oplog_comp - depends_on: - - name: core_workloads_MMAPv1 - variant: linux-standalone - status: "*" - - name: core_workloads_MMAPv1 - variant: linux-1-node-replSet - status: "*" - commands: - - func: "compare" - vars: - compare_task: "core_workloads_MMAPv1" - variant1: "linux-standalone" - variant2: "linux-1-node-replSet" - func: "analyze" - name: initialsync_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -658,19 +507,13 @@ tasks: - func: "prepare environment" vars: storageEngine: "wiredTiger" - test: "initialSync" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + test: "initialsync" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "initialSync" - - func: "make test log artifact" - func: "analyze" - name: initialsync_MMAPv1 + priority: 5 depends_on: - name: compile variant : linux-standalone @@ -678,19 +521,13 @@ tasks: - func: "prepare environment" vars: storageEngine: "mmapv1" - test: "initialSync" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "mmapv1" + test: "initialsync" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "mmapv1" - test: "initialSync" - - func: "make test log artifact" - func: "analyze" - name: initialsync-logkeeper_WT + priority: 5 depends_on: - name: compile variant: linux-standalone @@ -700,18 +537,10 @@ tasks: vars: storageEngine: "wiredTiger" test: "initialsync-logkeeper" - - func: "infrastructure provisioning" - - func: "configure mongodb cluster" - vars: - storageEngine: "wiredTiger" + - func: "deploy cluster" - func: "run test" - vars: - storageEngine: "wiredTiger" - test: "initialsync-logkeeper" - - func: "make test log artifact" - func: "analyze" - ####################################### # Modules # ####################################### @@ -798,6 +627,8 @@ buildvariants: - name: industry_benchmarks_WT - name: core_workloads_WT - name: industry_benchmarks_MMAPv1 + - name: industry_benchmarks_wmajority_WT + - name: industry_benchmarks_wmajority_MMAPv1 - name: core_workloads_MMAPv1 - name: mongos_workloads_WT - name: mongos_workloads_MMAPv1 @@ -820,6 +651,8 @@ buildvariants: - name: industry_benchmarks_WT - name: core_workloads_WT - name: industry_benchmarks_MMAPv1 + - name: industry_benchmarks_wmajority_WT + - name: industry_benchmarks_wmajority_MMAPv1 - name: core_workloads_MMAPv1 - name: secondary_performance_WT - name: secondary_performance_MMAPv1 @@ -858,19 +691,3 @@ buildvariants: - "rhel70-perf-initialsync-logkeeper" tasks: - name: initialsync-logkeeper_WT - -- name: linux-oplog-compare - display_name: Linux Oplog Compare - batchtime: 10080 # 7 days - modules: *modules - expansions: - compile_flags: -j$(grep -c ^processor /proc/cpuinfo) CC=/opt/mongodbtoolchain/v2/bin/gcc CXX=/opt/mongodbtoolchain/v2/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v2/bin/objcopy - use_scons_cache: true - project: *project - run_on: - - "rhel70-perf-single" - tasks: - - name: industry_benchmarks_WT_oplog_comp - - name: core_workloads_WT_oplog_comp - - name: industry_benchmarks_MMAPv1_oplog_comp - - name: core_workloads_MMAPv1_oplog_comp |
