1#####################################################
2#               Drivers Nightly Tests               #
3#####################################################
4
5### Instructions for Adding a Driver ###
6# The Major sections are:
7
8# VARIABLES
9# FUNCTIONS (MongoDB and Drivers)
10# TASKS (MongoDB and Drivers)
11# AXES (Drivers)
12# MODULES (MongoDB and Drivers)
13# BUILDVARIANTS (MongoDB and Drivers)
14
15# The Major sections of this config file have a space that handles the Mongodb setup, compile and test.
16# And a section that handles the same for drivers after MongoDB and compiled, tested, and pushed.
17
18# To Add a Driver:
19
20# Add your repo to the MODULES section
21# Add your Driver-specific AXES and variables
22# Add your Driver-specific Matrix at the bottom of this file
23# Update the Driver-specific variables in the 'run driver tests' function if needed
24
25stepback: true
26command_type: system
27
28# Files that match an ignore-list pattern will not trigger a build, if they're the only modified
29# files in the patch.
30ignore:
31  - ".*"
32  - "!.clang-format"
33  - "!.eslintrc.yml"
34  - "*.md"
35  - "*.rst"
36  - "*.txt"
37  - "/distsrc/**"
38  - "/docs/**"
39  - "/etc/*.yml"
40  - "!/etc/drivers_nightly.yml"
41  - "README"
42
43#######################################
44#            VARIABLES                #
45#######################################
46variables:
47
48# Used when the tests it runs depend only on mongod, mongos, the mongo shell and the tools.
49- &task_template
50  name: template
51  depends_on:
52  - name: compile
53  commands:
54  - func: "do setup"
55  - func: "run mongo tests"
56    vars:
57      resmoke_args: --help
58      run_multiple_jobs: false
59      max_jobs: 0  # If set in combination with run_multiple_jobs, will cap the number of jobs used.
60
61# Used to list modules to retrieve from GitHub and apply patches if necessary.
62- &git_get_project
63  command: git.get_project
64  params:
65    directory: src
66    revisions: # for each module include revision as <module_name> : ${<module_name>_rev}
67      enterprise: ${enterprise_rev}
68      mongo-java-driver: ${mongo-java-driver_rev}
69      mongo-python-driver: ${mongo-python-driver_rev}
70      drivers-evergreen-tools: ${drivers-evergreen-tools_rev}
71
72- &generate_compile_expansions
73  command: shell.exec
74  params:
75    working_dir: src
76    script: |
77      set -o errexit
78      set -o verbose
79
80      # We get the raw version string (r1.2.3-45-gabcdef) from git
81      MONGO_VERSION=$(git describe)
82      # If this is a patch build, we add the patch version id to the version string so we know
83      # this build was a patch, and which evergreen task it came from
84      if [ "${is_patch|}" = "true" ]; then
85        MONGO_VERSION="$MONGO_VERSION-patch-${version_id}"
86      fi
87
88      # This script converts the generated version string into a sanitized version string for
89      # use by scons and uploading artifacts as well as information about for the scons cache.
90      MONGO_VERSION=$MONGO_VERSION SCONS_CACHE_MODE=${scons_cache_mode|nolinked} USE_SCONS_CACHE=${use_scons_cache|false} ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/generate_compile_expansions.py --out compile_expansions.yml
91
92- &apply_compile_expansions
93  command: expansions.update
94  params:
95    file: src/compile_expansions.yml
96
97#######################################
98#            FUNCTIONS                #
99#######################################
100
101### MONGODB COMPILE & TEST FUNCTIONS ###
102
103functions:
104
105  "fetch and extract binaries" : &fetch_extract_binaries
106    command: shell.exec
107    params:
108      working_dir: src
109      script: |
110        set -o errexit
111        set -o verbose
112
113        curl -s https://s3.amazonaws.com/mciuploads/drivers-nightly/${platform}/${revision}/binaries/mongo-${revision}.${ext} --output mongodb-binaries.${ext}
114        # When we call git_get_project and check out our source code, it creates a directory called 'mongo',
115        # this isn't needed and interferes with our shell binary 'mongo' when we try to copy it.
116        # To prevent this, we just remove the 'mongo' directory first, then we do our copy.
117        mv mongo mongo-old || true
118        ${decompress} mongodb-binaries.${ext|tgz}
119        chmod +x mongodb*/bin/*
120        mv mongodb*/bin/* .
121
122  "get buildnumber" : &get_buildnumber
123    command: keyval.inc
124    params:
125      key: "v3.6"
126      destination: "builder_num"
127
128  "setup credentials" : &setup_credentials
129    command: shell.exec
130    params:
131      working_dir: src
132      silent: true
133      script: |
134        cat > mci.buildlogger <<END_OF_CREDS
135        slavename='${slave}'
136        passwd='${passwd}'
137        builder='MCI_${build_variant}'
138        build_num=${builder_num}
139        build_phase='${task_name}_${execution}'
140        END_OF_CREDS
141
142  "do setup" :
143  - *git_get_project
144  - *fetch_extract_binaries
145  - *get_buildnumber
146  - *setup_credentials
147
148
149  ### FOR MONGODB TESTS ###
150  "set up virtualenv" :
151    command: shell.exec
152    type: test
153    params:
154        working_dir: src
155        script: |
156          # exit immediately if virtualenv is not found
157          set -o errexit
158          set -o verbose
159
160          virtualenv --system-site-packages ./venv
161
162  "run mongo tests" :
163    command: shell.exec
164    type: test
165    params:
166      working_dir: src
167      script: |
168        set -o errexit
169        set -o verbose
170
171        # check if virtualenv is set up
172        if [ -d "venv" ]; then
173          if [ "Windows_NT" = "$OS" ]; then
174            . ./venv/Scripts/activate
175          else
176            . ./venv/bin/activate
177          fi
178        fi
179
180        extra_args=""
181        processor_architecture=$(uname -m)
182        num_jobs_available=${num_jobs_available|1}
183
184        if [ ${max_jobs|0} -gt 0 ] && [ ${max_jobs|0} -lt $num_jobs_available ]; then
185          extra_args="$extra_args --jobs=${max_jobs}"
186        else
187          extra_args="$extra_args --jobs=$num_jobs_available"
188        fi
189
190        ${python|/opt/mongodbtoolchain/v2/bin/python2} buildscripts/resmoke.py ${resmoke_args} $extra_args ${test_flags} --log=buildlogger --reportFile=report.json
191
192  "cleanup environment" :
193    command: shell.exec
194    params:
195      script: |
196        set -o errexit
197        set -o verbose
198
199        rm -rf src /data/db/* mongo-diskstats* mongo-coredumps.tgz ~/.aws
200        pkill -9 orchest
201
202  ### DRIVERS FUNCTIONS ###
203
204  "bootstrap mongo-orchestration":
205    - command: shell.exec
206      params:
207        script: |
208          ${PREPARE_SHELL}
209          echo "{ \"releases\": { \"default\": \"$MONGODB_BINARIES\" }}" > $MONGO_ORCHESTRATION_HOME/orchestration.config
210          MONGODB_VERSION="nightly" MONGODB_DOWNLOAD_URL=${MONGODB_DOWNLOAD_URL} TOPOLOGY=${TOPOLOGY} AUTH=${AUTH} SSL=${SSL} sh ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh
211    # run-orchestration generates expansion file with the MONGODB_URI for the cluster
212    - command: expansions.update
213      params:
214        file: mo-expansion.yml
215
216  "run driver tests":
217    - command: shell.exec
218      type: test
219      params:
220        working_dir: "src"
221        script: |
222          cd ${DRIVER_WORKING_DIRECTORY}
223          ${PREPARE_SHELL}
224          echo $DRIVERS_TOOLS
225          echo $MONGO_ORCHESTRATION_HOME
226          echo $MONGODB_BINARIES
227          echo $UPLOAD_BUCKET
228          echo $PROJECT_DIRECTORY
229
230          echo $TMPDIR
231          echo $PATH
232          echo $PROJECT
233
234          # If there are extra dependencies, we set them up here first
235          file="${PROJECT_DIRECTORY}/.evergreen/install-dependencies.sh"
236          # Don't use ${file} syntax here because evergreen treats it as an empty expansion.
237          [ -f "$file" ] && sh $file || echo "$file not available, skipping"
238
239          ### DRIVER-SPECIFIC VARIABLES HERE
240          PYTHON_BINARY="${PYTHON_BINARY}" \
241          JDK="${JDK}" \
242          AUTH="${AUTH}" SSL="${SSL}" MONGODB_URI="${MONGODB_URI}" TOPOLOGY="${TOPOLOGY}" .evergreen/run-tests.sh
243
244  "fix absolute paths":
245    - command: shell.exec
246      params:
247        script: |
248          ${PREPARE_SHELL}
249          for filename in $(find ${DRIVERS_TOOLS} -name \*.json); do
250            perl -p -i -e "s|ABSOLUTE_PATH_REPLACEMENT_TOKEN|${DRIVERS_TOOLS}|g" $filename
251          done
252
253  "windows fix":
254    - command: shell.exec
255      params:
256        script: |
257          # Make sure we are on Windows, otherwise don't run
258          if [ "Windows_NT" == "$OS" ]; then # Magic variable in cygwin
259            ${PREPARE_SHELL}
260            for i in $(find ${DRIVERS_TOOLS}/.evergreen ${PROJECT_DIRECTORY}/.evergreen -name \*.sh); do
261              cat $i | tr -d '\r' > $i.new
262              mv $i.new $i
263            done
264            # Copy client certificate because symlinks do not work on Windows.
265            cp ${DRIVERS_TOOLS}/.evergreen/x509gen/client.pem ${MONGO_ORCHESTRATION_HOME}/lib/client.pem
266          fi
267
268  "make files executable":
269    - command: shell.exec
270      params:
271        script: |
272          ${PREPARE_SHELL}
273          for i in $(find ${DRIVERS_TOOLS}/.evergreen ${PROJECT_DIRECTORY}/.evergreen -name \*.sh); do
274            chmod +x $i
275          done
276
277  "init test-results":
278    - command: shell.exec
279      params:
280        script: |
281          ${PREPARE_SHELL}
282          echo '{"results": [{ "status": "FAIL", "test_file": "Build", "log_raw": "No test-results.json found was created"  } ]}' > ${PROJECT_DIRECTORY}/test-results.json
283
284  "upload xml test results":
285    - command: attach.xunit_results
286      params:
287        file: "${DRIVER_TEST_UPLOAD_DIRECTORY}"
288
289
290   ### UPLOAD MONGODB AND ORCHESTRATION LOGS ###
291  "upload mo artifacts":
292    - command: shell.exec
293      params:
294        script: |
295          ${PREPARE_SHELL}
296          find $MONGO_ORCHESTRATION_HOME -name \*.log | xargs tar czf ${PROJECT_DIRECTORY}/mongodb-logs.tar.gz
297    - command: s3.put
298      params:
299        aws_key: ${aws_key}
300        aws_secret: ${aws_secret}
301        local_file: ${PROJECT_DIRECTORY}/mongodb-logs.tar.gz
302        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-mongodb-logs.tar.gz
303        bucket: mciuploads
304        permissions: public-read
305        content_type: ${content_type|application/x-gzip}
306        display_name: "mongodb-logs.tar.gz"
307    - command: s3.put
308      params:
309        aws_key: ${aws_key}
310        aws_secret: ${aws_secret}
311        local_file: ${DRIVERS_TOOLS}/.evergreen/orchestration/server.log
312        remote_file: ${UPLOAD_BUCKET}/${build_variant}/${revision}/${version_id}/${build_id}/logs/${task_id}-${execution}-orchestration.log
313        bucket: mciuploads
314        permissions: public-read
315        content_type: ${content_type|text/plain}
316        display_name: "orchestration.log"
317
318  "setup drivers environment":
319    - command: shell.exec
320      params:
321        working_dir: "src"
322        script: |
323           cd ${DRIVER_WORKING_DIRECTORY}
324           # Get the current unique version of this checkout
325           if [ "${is_patch}" = "true" ]; then
326              CURRENT_VERSION=$(git describe)-patch-${version_id}
327           else
328              CURRENT_VERSION=latest
329           fi
330
331           export DRIVERS_TOOLS="$(pwd)/../drivers-evergreen-tools"
332
333           # Python has cygwin path problems on Windows. Detect prospective mongo-orchestration home directory
334           if [ "Windows_NT" == "$OS" ]; then # Magic variable in cygwin
335              export DRIVERS_TOOLS=$(cygpath -m $DRIVERS_TOOLS)
336           fi
337
338           echo "TESTING PLATFORM ${PLATFORM}"
339
340           export MONGO_ORCHESTRATION_HOME="$DRIVERS_TOOLS/.evergreen/orchestration"
341           export MONGODB_BINARIES="$DRIVERS_TOOLS/mongodb/bin"
342           export UPLOAD_BUCKET="${project}"
343           export PROJECT_DIRECTORY="$(pwd)"
344           export MONGODB_DOWNLOAD_URL="https://s3.amazonaws.com/mciuploads/drivers-nightly/${PLATFORM}/${revision}/binaries/mongo-${revision}.${FILE_EXT}"
345
346           cat <<EOT > expansion.yml
347           CURRENT_VERSION: "$CURRENT_VERSION"
348           DRIVERS_TOOLS: "$DRIVERS_TOOLS"
349           MONGO_ORCHESTRATION_HOME: "$MONGO_ORCHESTRATION_HOME"
350           MONGODB_BINARIES: "$MONGODB_BINARIES"
351           UPLOAD_BUCKET: "$UPLOAD_BUCKET"
352           PROJECT_DIRECTORY: "$PROJECT_DIRECTORY"
353           MONGODB_DOWNLOAD_URL: "$MONGODB_DOWNLOAD_URL"
354           PREPARE_SHELL: |
355              set -o errexit
356              set -o xtrace
357              export DRIVERS_TOOLS="$DRIVERS_TOOLS"
358              export MONGO_ORCHESTRATION_HOME="$MONGO_ORCHESTRATION_HOME"
359              export MONGODB_BINARIES="$MONGODB_BINARIES"
360              export UPLOAD_BUCKET="$UPLOAD_BUCKET"
361              export PROJECT_DIRECTORY="$PROJECT_DIRECTORY"
362              export MONGODB_DOWNLOAD_URL="$MONGODB_DOWNLOAD_URL"
363
364              export TMPDIR="$MONGO_ORCHESTRATION_HOME/db"
365              export PATH="$MONGODB_BINARIES:$PATH"
366              export PROJECT="${project}"
367           EOT
368           # See what we've done
369           cat expansion.yml
370
371    # Load the expansion file to make an evergreen variable with the current unique version
372    - command: expansions.update
373      params:
374        file: src/${DRIVER_WORKING_DIRECTORY}/expansion.yml
375
376### PRE ###
377pre:
378  - func: "cleanup environment"
379
380### POST ###
381post:
382  - command: attach.results
383    params:
384      file_location: src/report.json
385  - func: "upload mo artifacts"
386  - func: "upload xml test results"
387  # Cleanup steps.
388  - command: shell.exec
389    params:
390      working_dir: src
391      script: |
392        # removes files from the (local) scons cache when it's over a
393        # threshold, to the $prune_ratio percentage. Ideally override
394        # these default values in the distro config in evergreen.
395
396        if [ -d "${scons_cache_path}" ]; then
397            ${python|python} buildscripts/scons_cache_prune.py --cache-dir '${scons_cache_path}' --cache-size ${scons_cache_size|200} --prune-ratio ${scons_prune_ratio|0.8}
398        fi
399  - func: "cleanup environment"
400
401#######################################
402#               TASKS                 #
403#######################################
404
405tasks:
406
407### MONGO COMPILE & TEST TASKS ###
408
409- name: compile
410  depends_on: []
411  commands:
412    - command: manifest.load
413    - *git_get_project
414    - func: "get buildnumber"
415    - func: "setup credentials"
416    - *generate_compile_expansions
417    # Then we load the generated version data into the agent so we can use it in task definitions
418    - *apply_compile_expansions
419
420    - command: shell.exec
421      type: test
422      params:
423        working_dir: src
424        script: |
425          set -o errexit
426          set -o verbose
427
428          rm -rf ${install_directory|/data/mongo-install-directory}
429
430          ${compile_env|} ${python|/opt/mongodbtoolchain/v2/bin/python2} ./buildscripts/scons.py ${compile_flags|} ${scons_cache_args|} core unittests MONGO_VERSION=${version}
431
432          # Pack up the binaries
433          mkdir -p mongodb-binaries/bin
434          if [ `which strip` ]; then
435            echo "found strip"
436            find . -maxdepth 1 -type f -iname "mongo*" -exec strip {} \;
437          fi
438          find . -maxdepth 1 -type f -iname "mongo*" -exec mv {} ./mongodb-binaries/bin/ \;
439          ${compress} mongodb-binaries.${ext|tgz} mongodb-binaries/
440
441    ### Run the unittests after the compile
442    - func: "run mongo tests"
443      vars:
444        resmoke_args: --suites=unittests
445        run_multiple_jobs: true
446    - command: s3.put
447      params:
448        aws_key: ${aws_key}
449        aws_secret: ${aws_secret}
450        local_file: src/mongodb-binaries.${ext|tgz}
451        remote_file: drivers-nightly/${platform}/${revision}/binaries/mongo-${revision}.${ext|tgz}
452        bucket: mciuploads
453        permissions: public-read
454        content_type: ${content_type|application/x-gzip}
455        display_name: Binaries
456
457- <<: *task_template
458  name: jsCore_WT
459  commands:
460  - func: "do setup"
461  - func: "run mongo tests"
462    vars:
463      resmoke_args: --suites=core --storageEngine=wiredTiger
464      run_multiple_jobs: true
465
466### DRIVER TEST TASKS ###
467- name: "test-nightly-standalone"
468  depends_on:
469   - variant: ".compile-variant"
470     name: "jsCore_WT"
471  tags: ["nightly", "standalone"]
472  commands:
473    - *git_get_project
474    - func: "setup drivers environment"
475      vars:
476        VERSION: "nightly"
477        TOPOLOGY: "server"
478    - func: "windows fix"
479    - func: "fix absolute paths"
480    - func: "init test-results"
481    - func: "make files executable"
482    - func: "bootstrap mongo-orchestration"
483    - func: "run driver tests"
484
485- name: "test-nightly-replica_set"
486  depends_on:
487    - variant: ".compile-variant"
488      name: "jsCore_WT"
489  tags: ["nightly", "replica_set"]
490  commands:
491    - *git_get_project
492    - func: "setup drivers environment"
493      vars:
494        VERSION: "nightly"
495        TOPOLOGY: "replica_set"
496    - func: "windows fix"
497    - func: "fix absolute paths"
498    - func: "init test-results"
499    - func: "make files executable"
500    - func: "bootstrap mongo-orchestration"
501    - func: "run driver tests"
502
503- name: "test-nightly-sharded_cluster"
504  depends_on:
505    - variant: ".compile-variant"
506      name: "jsCore_WT"
507  tags: ["nightly", "sharded_cluster"]
508  commands:
509    - *git_get_project
510    - func: "setup drivers environment"
511      vars:
512        VERSION: "nightly"
513        TOPOLOGY: "sharded_cluster"
514    - func: "windows fix"
515    - func: "fix absolute paths"
516    - func: "init test-results"
517    - func: "make files executable"
518    - func: "bootstrap mongo-orchestration"
519    - func: "run driver tests"
520
521#######################################
522#                AXES                 #
523#######################################
524axes:
525  ### GENERAL FOR ALL DRIVERS TESTS ###
526  - id: os
527    display_name: OS
528    values:
529      - id: "rhel62"
530        display_name: "RHEL 6.2"
531        run_on: rhel62-test
532        variables:
533          PLATFORM: "linux"
534          FILE_EXT: "tgz"
535      - id: "windows64"
536        display_name: "Windows 64"
537        run_on: windows-64-vs2015-test
538        variables:
539          PLATFORM: "windows64"
540          FILE_EXT: "zip"
541  - id: auth
542    display_name: Authentication
543    values:
544      - id: "auth"
545        display_name: Auth
546        variables:
547           AUTH: "auth"
548      - id: "noauth"
549        display_name: NoAuth
550        variables:
551           AUTH: "noauth"
552  - id: ssl
553    display_name: SSL
554    values:
555      - id: "ssl"
556        display_name: SSL
557        variables:
558           SSL: "ssl"
559      - id: "nossl"
560        display_name: NoSSL
561        variables:
562           SSL: "nossl"
563
564  ### DRIVER-SPECIFIC AXES ###
565  ### DRIVERS TEAM, ADD YOUR AXES VARIABLES HERE ###
566
567  ### Java ###
568  - id: jdk
569    display_name: JDK
570    values:
571      - id: "jdk8"
572        display_name: JDK8
573        variables:
574           JDK: "jdk8"
575           DRIVER_WORKING_DIRECTORY: "mongo-java-driver"
576           DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-java-driver/*/build/test-results/TEST-*.xml"
577  ### Python ###
578  - id: python-linux
579    display_name: "Python"
580    values:
581      - id: "2.6"
582        display_name: "Python 2.6"
583        variables:
584           PYTHON_BINARY: "/opt/python/2.6/bin/python"
585           DRIVER_WORKING_DIRECTORY: "mongo-python-driver"
586           DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-python-driver/xunit-results/TEST-*.xml"
587      - id: "2.7"
588        display_name: "Python 2.7"
589        variables:
590           PYTHON_BINARY: "/opt/python/2.7/bin/python"
591           DRIVER_WORKING_DIRECTORY: "mongo-python-driver"
592           DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-python-driver/xunit-results/TEST-*.xml"
593      - id: "3.6"
594        display_name: "Python 3.6"
595        variables:
596           PYTHON_BINARY: "/opt/python/3.6/bin/python3"
597           DRIVER_WORKING_DIRECTORY: "mongo-python-driver"
598           DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-python-driver/xunit-results/TEST-*.xml"
599  - id: python-windows
600    display_name: "Windows Visual Studio 2010 Python"
601    values:
602      - id: "2.7"
603        display_name: "Python 2.7"
604        variables:
605           PYTHON_BINARY: "/cygdrive/c/python/Python27/python.exe"
606           DRIVER_WORKING_DIRECTORY: "mongo-python-driver"
607           DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-python-driver/xunit-results/TEST-*.xml"
608      - id: "3.6"
609        display_name: "Python 3.6"
610        variables:
611           PYTHON_BINARY: "/cygdrive/c/python/Python36/python.exe"
612           DRIVER_WORKING_DIRECTORY: "mongo-python-driver"
613           DRIVER_TEST_UPLOAD_DIRECTORY: "src/mongo-python-driver/xunit-results/TEST-*.xml"
614
615#######################################
616#               MODULES               #
617#######################################
618
619# If a module is added it must be added to the manifest
620# be sure to add the module to 'git.get_project' revisions parameter
621# DRIVERS add your own git repo / branch here and add up top in 'git.get_project'
622modules:
623- name: enterprise
624  repo: git@github.com:10gen/mongo-enterprise-modules.git
625  prefix: src/mongo/db/modules
626  branch: v3.6
627
628# Shared by all drivers projects
629- name: drivers-evergreen-tools
630  repo: git@github.com:mongodb-labs/drivers-evergreen-tools.git
631  branch: master
632
633### DRIVER REPOS ###
634### DRIVERS ADD YOUR GIT REPO HERE ###
635- name: mongo-java-driver
636  repo: git@github.com:mongodb/mongo-java-driver.git
637  branch: master
638
639- name: mongo-python-driver
640  repo: git@github.com:mongodb/mongo-python-driver.git
641  branch: master
642
643#######################################
644#            BUILDVARIANTS            #
645#######################################
646
647buildvariants:
648
649### MONGO COMPILE VARIANTS ###
650
651### Linux Compile Variant ###
652- name: rhel62
653  display_name: RHEL 6.2 MongoDB Compile
654  modules:
655  - enterprise
656  run_on:
657  - rhel62-small
658  expansions:
659    platform: linux
660    compile_flags: --ssl MONGO_DISTMOD=rhel62 -j$(grep -c ^processor /proc/cpuinfo) --release --variables-files=etc/scons/mongodbtoolchain_gcc.vars
661    multiversion_platform_arch: "rhel62"
662    multiversion_edition: "targeted"
663    num_jobs_available: $(grep -c ^processor /proc/cpuinfo)
664    use_scons_cache: true
665    ### build_mongoreplay: true
666    ext: tgz
667  tags: ["compile-variant"]
668  tasks:
669  - name: compile
670    distros:
671    - rhel62-large
672  - name: jsCore_WT
673
674### Windows compile variant ###
675- name: enterprise-windows-64
676  display_name: "Enterprise Windows MongoDB Compile"
677  modules:
678  - enterprise
679  run_on:
680  - windows-64-vs2015-compile
681  expansions:
682    platform: "windows64"
683    exe: ".exe"
684    content_type: application/zip
685    compile_flags: --ssl MONGO_DISTMOD=windows-64 --release CPPPATH="c:/openssl/include c:/sasl/include c:/snmp/include c:/curl/include" LIBPATH="c:/openssl/lib c:/sasl/lib c:/snmp/lib c:/curl/lib" -j$(( $(grep -c ^processor /proc/cpuinfo) / 4 )) --dynamic-windows --win-version-min=ws08r2 VARIANT_DIR=win32
686    num_jobs_available: $(grep -c ^processor /proc/cpuinfo)
687    ext: zip
688    use_scons_cache: true
689    python: python
690  tags: ["compile-variant"]
691  tasks:
692  - name: compile
693    distros:
694    - windows-64-vs2015-large
695  - name: jsCore_WT
696
697### DRIVER Test Variants
698### DRIVERS add your matrix or test variant here
699
700### Python 2.7 Linux Matrix Secure
701- matrix_name: "python-driver-2.7-linux-secure"
702  matrix_spec: {auth: "auth", ssl: "ssl", os: "rhel62", python-linux: "2.7" }
703  display_name: "Python Driver ${os} ${python-linux} ${auth} ${ssl}"
704  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
705  tasks:
706     - name: "test-nightly-replica_set"
707     - name: "test-nightly-sharded_cluster"
708     - name: "test-nightly-standalone"
709
710### Python 2.7 Linux Matrix Insecure
711- matrix_name: "python-driver-2.7-linux-insecure"
712  matrix_spec: {auth: "noauth", ssl: "nossl", os: "rhel62", python-linux: "2.7" }
713  display_name: "Python Driver ${os} ${python-linux} ${auth} ${ssl}"
714  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
715  tasks:
716     - name: "test-nightly-replica_set"
717     - name: "test-nightly-sharded_cluster"
718     - name: "test-nightly-standalone"
719
720### Python 3.6 Linux Matrix Secure
721- matrix_name: "python-driver-3.6-linux-secure"
722  matrix_spec: {auth: "auth", ssl: "ssl", os: "rhel62", python-linux: "3.6" }
723  display_name: "Python Driver ${os} ${python-linux} ${auth} ${ssl}"
724  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
725  tasks:
726     - name: "test-nightly-replica_set"
727     - name: "test-nightly-sharded_cluster"
728     - name: "test-nightly-standalone"
729
730### Python 3.6 Linux Matrix Insecure
731- matrix_name: "python-driver-3.6-linux-insecure"
732  matrix_spec: {auth: "noauth", ssl: "nossl", os: "rhel62", python-linux: "3.6" }
733  display_name: "Python Driver ${os} ${python-linux} ${auth} ${ssl}"
734  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
735  tasks:
736     - name: "test-nightly-replica_set"
737     - name: "test-nightly-sharded_cluster"
738     - name: "test-nightly-standalone"
739
740### Python 2.7 Windows Matrix Secure
741- matrix_name: "python-driver-2.7-windows-secure"
742  matrix_spec: {auth: "auth", ssl: "ssl", os: "windows64", python-windows: "2.7" }
743  display_name: "Python Driver ${os} ${python-windows} ${auth} ${ssl}"
744  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
745  tasks:
746     - name: "test-nightly-replica_set"
747     - name: "test-nightly-sharded_cluster"
748     - name: "test-nightly-standalone"
749
750### Python 2.7 Windows Matrix Insecure
751- matrix_name: "python-driver-2.7-windows-insecure"
752  matrix_spec: {auth: "noauth", ssl: "nossl", os: "windows64", python-windows: "2.7" }
753  display_name: "Python Driver ${os} ${python-windows} ${auth} ${ssl}"
754  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
755  tasks:
756     - name: "test-nightly-replica_set"
757     - name: "test-nightly-sharded_cluster"
758     - name: "test-nightly-standalone"
759
760### Python 3.6 Windows Matrix Secure
761- matrix_name: "python-driver-3.6-windows-secure"
762  matrix_spec: {auth: "auth", ssl: "ssl", os: "windows64", python-windows: "3.6" }
763  display_name: "Python Driver ${os} ${python-windows} ${auth} ${ssl}"
764  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
765  tasks:
766     - name: "test-nightly-replica_set"
767     - name: "test-nightly-sharded_cluster"
768     - name: "test-nightly-standalone"
769
770### Python 3.6 Windows Matrix Insecure
771- matrix_name: "python-driver-3.6-windows-insecure"
772  matrix_spec: {auth: "noauth", ssl: "nossl", os: "windows64", python-windows: "3.6" }
773  display_name: "Python Driver ${os} ${python-windows} ${auth} ${ssl}"
774  modules: [ "mongo-python-driver", "drivers-evergreen-tools" ]
775  tasks:
776     - name: "test-nightly-replica_set"
777     - name: "test-nightly-sharded_cluster"
778     - name: "test-nightly-standalone"
779
780### Java Linux Matrix Secure
781- matrix_name: "java-driver-linux-secure"
782  matrix_spec: {auth: "auth", ssl: "ssl", os: "rhel62", jdk: "jdk8" }
783  display_name: "Java Driver ${os} ${jdk} ${auth} ${ssl}"
784  modules: [ "mongo-java-driver", "drivers-evergreen-tools" ]
785  tasks:
786     - name: "test-nightly-replica_set"
787     - name: "test-nightly-sharded_cluster"
788     - name: "test-nightly-standalone"
789
790### Java Linux Matrix Insecure
791- matrix_name: "java-driver-linux-insecure"
792  matrix_spec: {auth: "noauth", ssl: "nossl", os: "rhel62", jdk: "jdk8" }
793  display_name: "Java Driver ${os} ${jdk} ${auth} ${ssl}"
794  modules: [ "mongo-java-driver", "drivers-evergreen-tools" ]
795  tasks:
796     - name: "test-nightly-replica_set"
797     - name: "test-nightly-sharded_cluster"
798     - name: "test-nightly-standalone"
799