2015-08-06 19:27:42 +02:00
|
|
|
stepback: false
|
|
|
|
command_type: system
|
|
|
|
|
|
|
|
pre:
|
|
|
|
|
|
|
|
post:
|
2016-11-01 16:33:26 +01:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
working_dir: work
|
|
|
|
script: |
|
|
|
|
source ./dsienv.sh
|
2017-11-15 22:22:54 +01:00
|
|
|
make_artifact.sh
|
2016-11-01 16:33:26 +01:00
|
|
|
- command: s3.put
|
|
|
|
params:
|
|
|
|
aws_key: ${aws_key}
|
|
|
|
aws_secret: ${aws_secret}
|
2018-01-26 13:43:36 +01:00
|
|
|
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}
|
2016-11-01 16:33:26 +01:00
|
|
|
bucket: mciuploads
|
|
|
|
permissions: public-read
|
|
|
|
content_type: ${content_type|application/x-gzip}
|
2018-01-26 13:43:36 +01:00
|
|
|
display_name: Dsi Artifacts - Execution ${execution}
|
2015-10-08 23:56:57 +02:00
|
|
|
- command: attach.results
|
|
|
|
params:
|
2016-07-11 21:45:06 +02:00
|
|
|
file_location: work/report.json
|
2017-11-15 22:22:54 +01:00
|
|
|
- func: "destroy cluster"
|
2016-08-02 18:32:47 +02:00
|
|
|
- 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
|
2018-12-15 01:52:41 +01:00
|
|
|
${python|/opt/mongodbtoolchain/v3/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}
|
2016-08-02 18:32:47 +02:00
|
|
|
fi
|
2015-08-06 19:27:42 +02:00
|
|
|
|
|
|
|
functions:
|
|
|
|
"prepare environment":
|
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
script: |
|
|
|
|
rm -rf ./*
|
|
|
|
mkdir src
|
2016-07-11 21:45:06 +02:00
|
|
|
mkdir work
|
2016-05-27 17:22:04 +02:00
|
|
|
- command: manifest.load
|
2016-05-02 19:42:24 +02:00
|
|
|
- command: git.get_project
|
2015-08-06 19:27:42 +02:00
|
|
|
params:
|
2016-05-02 19:42:24 +02:00
|
|
|
directory: src
|
|
|
|
revisions: # for each module include revision as <module_name> : ${<module_name>_rev}
|
|
|
|
dsi: ${dsi_rev}
|
2016-11-25 13:05:22 +01:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
working_dir: work
|
|
|
|
script: |
|
|
|
|
cat > bootstrap.yml <<EOF
|
2018-02-27 21:43:12 +01:00
|
|
|
infrastructure_provisioning: ${cluster}
|
2016-11-25 13:05:22 +01:00
|
|
|
platform: ${platform}
|
2018-02-27 21:43:12 +01:00
|
|
|
mongodb_setup: ${setup}
|
2016-11-25 13:05:22 +01:00
|
|
|
storageEngine: ${storageEngine}
|
2018-02-27 21:43:12 +01:00
|
|
|
test_control: ${test}.longevity
|
2016-11-25 13:05:22 +01:00
|
|
|
production: true
|
2018-01-25 21:38:01 +01:00
|
|
|
workloads_dir: ../src/workloads/workloads
|
|
|
|
ycsb_dir: ../src/YCSB/YCSB
|
2017-11-15 22:22:54 +01:00
|
|
|
|
|
|
|
# compositions of expansions
|
|
|
|
mongodb_binary_archive: "https://s3.amazonaws.com/mciuploads/${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz"
|
2016-11-25 13:05:22 +01:00
|
|
|
EOF
|
|
|
|
|
|
|
|
cat > runtime.yml <<EOF
|
|
|
|
# evergreen default expansions
|
|
|
|
is_patch: ${is_patch}
|
|
|
|
task_id: ${task_id}
|
|
|
|
task_name: ${task_name}
|
|
|
|
execution: ${execution}
|
|
|
|
build_id: ${build_id}
|
|
|
|
build_variant: ${build_variant}
|
|
|
|
version_id: ${version_id}
|
|
|
|
workdir: ${workdir}
|
|
|
|
revision: ${revision}
|
|
|
|
project: ${project}
|
|
|
|
branch_name: ${branch_name}
|
|
|
|
|
|
|
|
# sys-perf expansions
|
|
|
|
# Shouldn't be needed: testList: ${testList}
|
|
|
|
ext: ${ext}
|
|
|
|
script_flags : ${script_flags}
|
|
|
|
dsi_rev: ${dsi_rev}
|
|
|
|
EOF
|
2015-08-06 19:27:42 +02:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
silent: true
|
2016-11-25 13:05:22 +01:00
|
|
|
working_dir: work
|
2015-08-06 19:27:42 +02:00
|
|
|
script: |
|
2016-11-25 13:05:22 +01:00
|
|
|
# AWS ssh secret key
|
|
|
|
echo "${ec2_pem}" > aws_ssh_key.pem
|
|
|
|
chmod 400 aws_ssh_key.pem
|
|
|
|
|
|
|
|
cat > runtime_secret.yml <<EOF
|
|
|
|
# Note that inside system_perf.yml we have ${aws_key} & ${aws_secret}, which are used for
|
|
|
|
# Evergreen resources. The below are used for dsi resources, and are NOT the same!
|
|
|
|
aws_access_key: "${terraform_key}"
|
|
|
|
aws_secret_key: "${terraform_secret}"
|
|
|
|
perf_jira_user: "${perf_jira_user}"
|
|
|
|
perf_jira_pw: "${perf_jira_pw}"
|
|
|
|
EOF
|
|
|
|
chmod 400 runtime_secret.yml
|
2016-07-11 21:45:06 +02:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
working_dir: work
|
|
|
|
script: |
|
2017-02-14 13:32:34 +01:00
|
|
|
set -e
|
2016-07-11 21:45:06 +02:00
|
|
|
virtualenv ./venv
|
|
|
|
source ./venv/bin/activate
|
|
|
|
pip install -r ../src/dsi/dsi/requirements.txt
|
2017-06-09 11:35:45 +02:00
|
|
|
python ../src/dsi/dsi/bin/bootstrap.py
|
2016-07-11 21:45:06 +02:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
script: |
|
|
|
|
set -v
|
2017-02-14 13:32:34 +01:00
|
|
|
set -e
|
2016-07-11 21:45:06 +02:00
|
|
|
source work/dsienv.sh
|
2017-11-15 22:22:54 +01:00
|
|
|
setup-dsi-env.sh
|
2017-06-09 11:35:45 +02:00
|
|
|
ls -a work
|
2015-08-06 19:27:42 +02:00
|
|
|
|
2017-11-15 22:22:54 +01:00
|
|
|
"deploy cluster":
|
2015-08-06 19:27:42 +02:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
2016-07-11 21:45:06 +02:00
|
|
|
working_dir: work
|
2015-08-06 19:27:42 +02:00
|
|
|
script: |
|
2015-12-18 00:23:13 +01:00
|
|
|
set -e
|
2017-06-09 11:35:45 +02:00
|
|
|
set -v
|
2016-07-11 21:45:06 +02:00
|
|
|
source ./dsienv.sh
|
2017-08-01 20:53:36 +02:00
|
|
|
source ./venv/bin/activate
|
2017-11-15 22:22:54 +01:00
|
|
|
infrastructure_provisioning.py
|
2018-01-18 16:20:28 +01:00
|
|
|
workload_setup.py
|
2018-01-29 23:43:45 +01:00
|
|
|
mongodb_setup.py
|
2015-12-18 00:23:13 +01:00
|
|
|
|
2015-08-06 19:27:42 +02:00
|
|
|
"run test":
|
|
|
|
- command: shell.exec
|
2017-11-15 22:22:54 +01:00
|
|
|
type: test
|
2015-08-06 19:27:42 +02:00
|
|
|
params:
|
2016-07-11 21:45:06 +02:00
|
|
|
working_dir: work
|
2015-08-06 19:27:42 +02:00
|
|
|
script: |
|
|
|
|
set -e
|
|
|
|
set -v
|
2016-07-11 21:45:06 +02:00
|
|
|
source ./dsienv.sh
|
|
|
|
source ./venv/bin/activate
|
2017-11-15 22:22:54 +01:00
|
|
|
test_control.py
|
2015-08-06 19:27:42 +02:00
|
|
|
- command: "json.send"
|
|
|
|
params:
|
|
|
|
name: "perf"
|
2016-07-11 21:45:06 +02:00
|
|
|
file: "work/perf.json"
|
2015-08-06 19:27:42 +02:00
|
|
|
|
|
|
|
"destroy cluster":
|
|
|
|
- command: shell.exec
|
|
|
|
# destroy the cluster
|
|
|
|
params:
|
2016-07-11 21:45:06 +02:00
|
|
|
working_dir: work
|
2015-08-06 19:27:42 +02:00
|
|
|
script: |
|
2015-12-18 00:23:13 +01:00
|
|
|
set -e
|
2015-08-06 19:27:42 +02:00
|
|
|
set -o verbose
|
2017-06-09 11:35:45 +02:00
|
|
|
# Longevity runs so rarely, we simply teardown the cluster when done.
|
2017-08-01 20:53:36 +02:00
|
|
|
# Note that nowadays infrastructure_teardown.py is actually copying the terraform.tfstate into /data/infrastructure_provisioning
|
2017-06-09 11:35:45 +02:00
|
|
|
# but as of this writing the rhel70-perf-longevity distro didn't actually use the teardown hook.
|
|
|
|
source ./dsienv.sh
|
2017-08-01 20:53:36 +02:00
|
|
|
source ./venv/bin/activate
|
2017-11-15 22:22:54 +01:00
|
|
|
infrastructure_teardown.py
|
2015-08-06 19:27:42 +02:00
|
|
|
echo "Cluster DESTROYED."
|
2017-06-09 11:35:45 +02:00
|
|
|
echo
|
2015-08-06 19:27:42 +02:00
|
|
|
echo "All perf results"
|
|
|
|
cd ..
|
2016-07-11 21:45:06 +02:00
|
|
|
cat perf.json | egrep "name|ops_per_sec"
|
2015-08-06 19:27:42 +02:00
|
|
|
|
2015-10-08 23:56:57 +02:00
|
|
|
"analyze":
|
|
|
|
- command: shell.exec
|
2019-02-21 23:07:06 +01:00
|
|
|
type: test
|
2015-10-08 23:56:57 +02:00
|
|
|
params:
|
2016-07-11 21:45:06 +02:00
|
|
|
working_dir: work
|
2015-10-08 23:56:57 +02:00
|
|
|
script: |
|
|
|
|
set -o errexit
|
|
|
|
set -o verbose
|
2016-09-16 22:19:24 +02:00
|
|
|
TAG="3.2.1-Baseline"
|
|
|
|
PROJECT="mongo-longevity"
|
2017-11-20 17:10:52 +01:00
|
|
|
OVERRIDEFILE="../src/dsi/dsi/analysis/${branch_name}/longevity_override.json"
|
2018-05-24 18:46:42 +02:00
|
|
|
python -u ../src/dsi/dsi/analysis/post_run_check.py ${script_flags} --reports-analysis reports --perf-file perf.json --rev ${revision} --refTag $TAG --overrideFile $OVERRIDEFILE --project_id $PROJECT --task_name ${task_name} --variant ${build_variant}
|
2015-10-08 23:56:57 +02:00
|
|
|
|
2015-08-06 19:27:42 +02:00
|
|
|
tasks:
|
|
|
|
- name: compile
|
|
|
|
commands:
|
2016-05-27 17:22:04 +02:00
|
|
|
- command: manifest.load
|
2015-08-06 19:27:42 +02:00
|
|
|
- command: git.get_project
|
|
|
|
params:
|
|
|
|
directory: src
|
2016-08-02 18:32:47 +02:00
|
|
|
- command: shell.exec
|
2015-08-06 19:27:42 +02:00
|
|
|
params:
|
2016-08-02 18:32:47 +02:00
|
|
|
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.
|
2018-12-15 01:52:41 +01:00
|
|
|
MONGO_VERSION=$MONGO_VERSION USE_SCONS_CACHE=${use_scons_cache|false} ${python|/opt/mongodbtoolchain/v3/bin/python2} buildscripts/generate_compile_expansions.py --out compile_expansions.yml
|
2016-08-02 18:32:47 +02:00
|
|
|
# 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
|
2015-08-06 19:27:42 +02:00
|
|
|
- command: shell.exec
|
|
|
|
params:
|
|
|
|
working_dir: src
|
|
|
|
script: |
|
|
|
|
set -o errexit
|
|
|
|
set -o verbose
|
2018-12-15 01:52:41 +01:00
|
|
|
${python|/opt/mongodbtoolchain/v3/bin/python2} ./buildscripts/scons.py ${compile_flags|} ${scons_cache_args|} mongo${extension} mongod${extension} mongos${extension} MONGO_VERSION=${version}
|
2015-08-06 19:27:42 +02:00
|
|
|
mkdir -p mongodb/bin
|
2017-11-15 22:22:54 +01:00
|
|
|
mv mongo${extension|} mongodb/bin
|
|
|
|
mv mongod${extension|} mongodb/bin
|
|
|
|
mv mongos${extension|} mongodb/bin
|
2015-08-06 19:27:42 +02:00
|
|
|
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
|
2016-12-05 22:50:49 +01:00
|
|
|
remote_file: ${project}/${version_id}/${revision}/${platform}/mongod-${version_id}.tar.gz
|
2015-08-06 19:27:42 +02:00
|
|
|
bucket: mciuploads
|
|
|
|
permissions: public-read
|
|
|
|
content_type: ${content_type|application/x-gzip}
|
|
|
|
display_name: mongodb.tar.gz
|
|
|
|
|
|
|
|
- name: shard_cluster_test
|
|
|
|
depends_on:
|
|
|
|
- name: compile
|
2015-12-18 00:23:13 +01:00
|
|
|
exec_timeout_secs: 216000
|
2015-11-06 02:19:13 +01:00
|
|
|
commands:
|
|
|
|
- func: "prepare environment"
|
2017-02-14 13:32:34 +01:00
|
|
|
vars:
|
|
|
|
storageEngine: "wiredTiger"
|
|
|
|
test: "ycsb"
|
2017-11-15 22:22:54 +01:00
|
|
|
- func: "deploy cluster"
|
2015-11-06 02:19:13 +01:00
|
|
|
- func: "run test"
|
2015-12-18 00:23:13 +01:00
|
|
|
- func: "analyze"
|
2016-09-16 22:19:24 +02:00
|
|
|
vars:
|
|
|
|
script_flags: --ycsb-throughput-analysis reports
|
|
|
|
- func: "destroy cluster"
|
2015-11-06 02:19:13 +01:00
|
|
|
|
2016-05-02 19:42:24 +02:00
|
|
|
#######################################
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
2017-11-15 22:22:54 +01:00
|
|
|
#######################################
|
|
|
|
# Linux Buildvariants #
|
|
|
|
#######################################
|
|
|
|
|
2015-08-06 19:27:42 +02:00
|
|
|
buildvariants:
|
|
|
|
- name: linux-wt-shard
|
|
|
|
display_name: Linux WT Shard
|
2018-10-08 19:56:57 +02:00
|
|
|
# We set an exceptionally large batchtime because the intention is for builds on this Evergreen
|
|
|
|
# project to only be triggered manually.
|
|
|
|
batchtime: 524160 # 52 weeks
|
2016-05-02 19:42:24 +02:00
|
|
|
modules: &modules
|
|
|
|
- dsi
|
2015-08-06 19:27:42 +02:00
|
|
|
expansions:
|
2018-12-15 01:52:41 +01:00
|
|
|
compile_flags: -j$(grep -c ^processor /proc/cpuinfo) CC=/opt/mongodbtoolchain/v3/bin/gcc CXX=/opt/mongodbtoolchain/v3/bin/g++ OBJCOPY=/opt/mongodbtoolchain/v3/bin/objcopy
|
2017-02-14 13:32:34 +01:00
|
|
|
setup: shard-longevity
|
2015-08-06 19:27:42 +02:00
|
|
|
cluster: longevity
|
|
|
|
numShard: 3
|
|
|
|
storageEngine: wiredTiger
|
2016-08-02 18:32:47 +02:00
|
|
|
use_scons_cache: true
|
2016-11-01 16:33:26 +01:00
|
|
|
project: &project longevity
|
2018-10-03 17:05:12 +02:00
|
|
|
platform: linux
|
2015-08-06 19:27:42 +02:00
|
|
|
run_on:
|
2016-04-06 15:57:04 +02:00
|
|
|
- "rhel70-perf-longevity"
|
2015-08-06 19:27:42 +02:00
|
|
|
tasks:
|
|
|
|
- name: compile
|
|
|
|
distros:
|
2016-06-23 18:56:05 +02:00
|
|
|
- rhel70
|
2015-08-06 19:27:42 +02:00
|
|
|
- name: shard_cluster_test
|