stepback: false command_type: system pre: post: - command: shell.exec params: working_dir: work script: | source ./dsienv.sh $DSI_PATH/bin/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} 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 - command: attach.results params: file_location: work/report.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 fi - command: shell.exec params: working_dir: src script: | # removes files from the (local) scons cache when it's over a # threshold, to the $prune_ratio percentage. Ideally override # these default values in the distro config in evergreen. if [ -d "${scons_cache_path}" ]; then ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/scons_cache_prune.py --cache-dir ${scons_cache_path} --cache-size ${scons_cache_size|200} --prune-ratio ${scons_prune_ratio|0.8} fi functions: "prepare environment": - command: shell.exec params: script: | rm -rf ./* mkdir src mkdir work mkdir bin pwd ls - command: manifest.load - command: git.get_project params: directory: src revisions: # for each module include revision as : ${_rev} dsi: ${dsi_rev} workloads: ${workloads_rev} YCSB: ${YCSB_rev} - command: shell.exec params: working_dir: work script: | cat > bootstrap.yml < runtime.yml < aws_ssh_key.pem chmod 400 aws_ssh_key.pem cat > runtime_secret.yml < : ${_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" ####################################### # Tasks # ####################################### tasks: - name: compile commands: - command: manifest.load - command: git.get_project params: directory: src - command: shell.exec params: working_dir: src script: | set -o errexit set -o verbose # We get the raw version string (r1.2.3-45-gabcdef) from git MONGO_VERSION=$(git describe) # If this is a patch build, we add the patch version id to the version string so we know # this build was a patch, and which evergreen task it came from if [ "${is_patch|}" = "true" ]; then MONGO_VERSION="$MONGO_VERSION-patch-${version_id}" fi # This script converts the generated version string into a sanitized version string for # use by scons and uploading artifacts as well as information about for the scons cache. echo $MONGO_VERSION | USE_SCONS_CACHE=${use_scons_cache|false} ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/generate_compile_expansions.py | tee compile_expansions.yml # Then we load the generated version data into the agent so we can use it in task definitions - command: expansions.update params: file: src/compile_expansions.yml - command: shell.exec params: working_dir: src script: | set -o errexit set -o verbose ${python|/opt/mongodbtoolchain/v2/bin/python2} ./buildscripts/scons.py ${compile_flags|} ${scons_cache_args|} mongo${extension} mongod${extension} mongos${extension} MONGO_VERSION=${version} mkdir -p mongodb/bin mkdir -p mongodb/jstests/hooks mv mongo${extension|} mongodb/bin mv mongod${extension|} mongodb/bin mv mongos${extension|} mongodb/bin if [ -d jstests/hooks ] then echo "Fetching JS test DB correctness checks from directory jstests/hooks" cp -a jstests/hooks/* mongodb/jstests/hooks fi tar cvf mongodb.tar mongodb gzip mongodb.tar - command: s3.put params: aws_key: ${aws_key} aws_secret: ${aws_secret} local_file: src/mongodb.tar.gz remote_file: ${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz bucket: mciuploads permissions: public-read content_type: ${content_type|application/x-gzip} display_name: mongodb.tar.gz - name: industry_benchmarks_WT depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "ycsb" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - 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 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "ycsb" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" - func: "run test" vars: storageEngine: "mmapv1" test: "ycsb" - func: "make test log artifact" - func: "analyze" vars: script_flags: --ycsb-throughput-analysis reports - name: core_workloads_WT depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "core" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - func: "run test" vars: storageEngine: "wiredTiger" test: "core" - func: "make test log artifact" - func: "analyze" - name: core_workloads_MMAPv1 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "core" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" - func: "run test" vars: storageEngine: "mmapv1" test: "core" - func: "make test log artifact" - func: "analyze" - name: non_sharded_workloads_WT depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "non_sharded" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - func: "run test" vars: storageEngine: "wiredTiger" test: "non_sharded" - func: "make test log artifact" - func: "analyze" - name: non_sharded_workloads_MMAPv1 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "non_sharded" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" - func: "run test" vars: storageEngine: "mmapv1" test: "non_sharded" - func: "make test log artifact" - func: "analyze" - name: mongos_workloads_WT depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "mongos" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - func: "run test" vars: storageEngine: "wiredTiger" test: "mongos" - func: "make test log artifact" - func: "analyze" - name: mongos_workloads_MMAPv1 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "mongos" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" - func: "run test" vars: storageEngine: "mmapv1" test: "mongos" - func: "make test log artifact" - func: "analyze" - name: move_chunk_workloads_WT depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "move_chunk" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - func: "run test" vars: storageEngine: "wiredTiger" test: "move_chunk" - func: "make test log artifact" - func: "analyze" - name: move_chunk_workloads_MMAPv1 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "move_chunk" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" - func: "run test" vars: storageEngine: "mmapv1" test: "move_chunk" - func: "make test log artifact" - func: "analyze" - name: secondary_performance_WT depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "secondary_performance" setup: "replica-2node" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" setup: "replica-2node" - func: "run test" vars: storageEngine: "wiredTiger" test: "secondary_performance" - func: "make test log artifact" - func: "analyze" - name: secondary_performance_MMAPv1 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "secondary_performance" setup: "replica-2node" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" setup: "replica-2node" - 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 depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "initialSync" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - func: "run test" vars: storageEngine: "wiredTiger" test: "initialSync" - func: "make test log artifact" - func: "analyze" - name: initialsync_MMAPv1 depends_on: - name: compile variant : linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" test: "initialSync" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" - func: "run test" vars: storageEngine: "mmapv1" test: "initialSync" - func: "make test log artifact" - func: "analyze" - name: initialsync_WT_dr depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" setup: "replica-2node.dr" test: "initialSync" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" setup: "replica-2node.dr" - func: "run test" vars: storageEngine: "wiredTiger" test: "initialSync" - func: "make test log artifact" - func: "analyze" - name: initialsync_MMAPv1_dr depends_on: - name: compile variant: linux-standalone commands: - func: "prepare environment" vars: storageEngine: "mmapv1" setup: "replica-2node.dr" test: "initialSync" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "mmapv1" setup: "replica-2node.dr" - func: "run test" vars: storageEngine: "mmapv1" test: "initialSync" - func: "make test log artifact" - func: "analyze" - name: initialsync-logkeeper_WT depends_on: - name: compile variant: linux-standalone exec_timeout_secs: 216000 # 2.5 days commands: - func: "prepare environment" vars: storageEngine: "wiredTiger" test: "initialsync-logkeeper" - func: "infrastructure provisioning" - func: "configure mongodb cluster" vars: storageEngine: "wiredTiger" - func: "run test" vars: storageEngine: "wiredTiger" test: "initialsync-logkeeper" - func: "make test log artifact" - func: "analyze" ####################################### # Modules # ####################################### # if a module is added and to be added to the manifest # be sure to add the module to git.get_project revisions parameter modules: - name: dsi repo: git@github.com:10gen/dsi.git prefix: dsi branch: master - name: workloads repo: git@github.com:10gen/workloads.git prefix: workloads branch: master - name: YCSB repo: git@github.com:mongodb-labs/YCSB.git prefix: YCSB branch: evergreen ####################################### # Linux Buildvariants # ####################################### buildvariants: - name: linux-1-node-replSet display_name: Linux 1-Node ReplSet batchtime: 1440 # 24 hours modules: &modules - dsi - workloads - YCSB 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 setup: single-replica cluster: single platform: linux use_scons_cache: true project: &project dsi run_on: - "rhel70-perf-single" tasks: - name: industry_benchmarks_WT - name: core_workloads_WT - name: industry_benchmarks_MMAPv1 - name: core_workloads_MMAPv1 - name: non_sharded_workloads_WT - name: non_sharded_workloads_MMAPv1 - name: linux-standalone display_name: Linux Standalone batchtime: 1440 # 24 hours 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 setup: standalone cluster: single platform: linux use_scons_cache: true project: *project run_on: - "rhel70-perf-single" tasks: - name: compile distros: - rhel70 - name: industry_benchmarks_WT - name: core_workloads_WT - name: industry_benchmarks_MMAPv1 - name: core_workloads_MMAPv1 - name: non_sharded_workloads_WT - name: non_sharded_workloads_MMAPv1 - name: linux-3-shard display_name: Linux 3-Shard Cluster 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 setup: shard cluster: shard platform: linux use_scons_cache: true project: *project run_on: - "rhel70-perf-shard" tasks: - name: industry_benchmarks_WT - name: core_workloads_WT - name: industry_benchmarks_MMAPv1 - name: core_workloads_MMAPv1 - name: mongos_workloads_WT - name: mongos_workloads_MMAPv1 - name: move_chunk_workloads_WT - name: move_chunk_workloads_MMAPv1 - name: linux-3-node-replSet display_name: Linux 3-Node ReplSet 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 setup: replica cluster: replica platform: linux project: *project run_on: - "rhel70-perf-replset" tasks: - name: industry_benchmarks_WT - name: core_workloads_WT - name: industry_benchmarks_MMAPv1 - name: core_workloads_MMAPv1 - name: secondary_performance_WT - name: secondary_performance_MMAPv1 - name: non_sharded_workloads_WT - name: non_sharded_workloads_MMAPv1 - name: linux-3-node-replSet-initialsync display_name: Linux 3-Node ReplSet Initial Sync 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 setup: replica-2node cluster: replica platform: linux use_scons_cache: true project: *project run_on: - "rhel70-perf-replset" tasks: - name: initialsync_WT - name: initialsync_MMAPv1 - name: initialsync_WT_dr - name: initialsync_MMAPv1_dr - name: linux-replSet-initialsync-logkeeper display_name: Linux ReplSet Initial Sync LogKeeper 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 setup: initialsync-logkeeper cluster: initialsync-logkeeper platform: linux use_scons_cache: true project: *project run_on: - "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