diff --git a/.evergreen/config.yml b/.evergreen/config.yml index bdae3b35ff..d550d744b6 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -38,8 +38,24 @@ functions: git submodule update --init --recursive + if [ ! -d .mod ]; then + mkdir -p .mod + cd .mod + git clone https://github.com/mongodb-labs/drivers-evergreen-tools + fi + + "fetch egos": + - command: shell.exec + params: + working_dir: "src" + script: | + set -ex + + curl -sfLo egos https://raw.githubusercontent.com/p-mongo/egos/master/egos + chmod +x ./egos + "create expansions": - # Make an evergreen exapansion file with dynamic values + # Make an evergreen exapanstion file with dynamic values - command: shell.exec params: working_dir: "src" @@ -78,7 +94,7 @@ functions: export PATH="$MONGODB_BINARIES:$PATH" export PROJECT="${project}" - export MONGODB_VERSION="${VERSION}" + export MONGODB_VERSION="${MONGODB_VERSION}" export TOPOLOGY="${TOPOLOGY}" export SINGLE_MONGOS="${SINGLE_MONGOS}" export AUTH="${AUTH}" @@ -99,6 +115,24 @@ functions: params: file: src/expansion.yml + bootstrap-mongo-orchestration: + - command: shell.exec + params: + shell: "bash" + script: | + set -x + ${PREPARE_SHELL} + + MONGODB_VERSION=${MONGODB_VERSION} \ + TOPOLOGY=${TOPOLOGY} \ + AUTH=${AUTH} \ + SSL=${SSL} \ + ORCHESTRATION_FILE=${ORCHESTRATION_FILE} \ + sh ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh + - command: expansions.update + params: + file: mo-expansion.yml + "exec script" : - command: shell.exec type: test @@ -259,7 +293,7 @@ functions: "upload test results": - command: attach.xunit_results params: - file: ./src/rspec.xml + file: ./src/tmp/*.xml "run tests": - command: shell.exec @@ -277,7 +311,10 @@ functions: DRIVER="${DRIVER}" \ TEST_I18N_FALLBACKS="${TEST_I18N_FALLBACKS}" \ FLE="${FLE}" \ - .evergreen/run-tests-docker.sh + AUTH="${AUTH}" \ + SSL="${SSL}" \ + APP_TESTS="${APP_TESTS}" \ + .evergreen/run-tests.sh "fix absolute paths": - command: shell.exec @@ -288,7 +325,13 @@ functions: perl -p -i -e "s|ABSOLUTE_PATH_REPLACEMENT_TOKEN|${DRIVERS_TOOLS}|g" $filename done - "install dependencies": + "setup system": + - command: subprocess.exec + params: + binary: bash + include_expansions_in_env: ["PROJECT_DIRECTORY"] + args: + - "${DRIVERS_TOOLS}/.evergreen/setup.sh" - command: shell.exec type: test params: @@ -302,13 +345,13 @@ pre: - func: "fetch source" - func: "create expansions" - func: "fix absolute paths" - - func: "install dependencies" + - func: "setup system" post: # Removed, causing timeouts # - func: "upload working dir" - func: "upload mo artifacts" - # - func: "upload test results" + - func: "upload test results" - func: "upload test results to s3" task_groups: @@ -359,6 +402,7 @@ task_groups: tasks: - name: "test" commands: + - func: bootstrap-mongo-orchestration - func: "run tests" - name: "test-full-atlas-task" commands: @@ -375,62 +419,62 @@ axes: - id: "mongodb-version" display_name: MongoDB Version values: + - id: "latest" + display_name: "MongoDB Latest" + variables: + MONGODB_VERSION: "latest" - id: "8.0" display_name: "MongoDB 8.0" variables: - VERSION: "8.0" + MONGODB_VERSION: "8.0" - id: "7.0" display_name: "MongoDB 7.0" variables: - VERSION: "7.0" + MONGODB_VERSION: "7.0" - id: "6.0" display_name: "MongoDB 6.0" variables: - VERSION: "6.0" + MONGODB_VERSION: "6.0" - id: "5.3" display_name: "MongoDB 5.3" variables: - VERSION: "5.3" + MONGODB_VERSION: "5.3" - id: "5.0" display_name: "MongoDB 5.0" variables: - VERSION: "5.0" + MONGODB_VERSION: "5.0" - id: "4.4" display_name: "MongoDB 4.4" variables: - VERSION: "4.4" + MONGODB_VERSION: "4.4" - id: "4.2" display_name: "MongoDB 4.2" variables: - VERSION: "4.2" + MONGODB_VERSION: "4.2" - id: "4.0" display_name: "MongoDB 4.0" variables: - VERSION: "4.0" + MONGODB_VERSION: "4.0" - id: "3.6" display_name: "MongoDB 3.6" variables: - VERSION: "3.6" + MONGODB_VERSION: "3.6" - id: "topology" display_name: Topology values: - - id: "standalone" + - id: "server" display_name: Standalone variables: - TOPOLOGY: "standalone" - - id: "replica-set" + TOPOLOGY: "server" + - id: "replica_set" display_name: Replica Set variables: - TOPOLOGY: "replica-set" - - id: "sharded-cluster" + TOPOLOGY: "replica_set" + - id: "sharded_cluster" display_name: Sharded Cluster variables: - TOPOLOGY: "sharded-cluster" - - id: "load-balanced" - display_name: Load Balanced - variables: - TOPOLOGY: "load-balanced" + TOPOLOGY: "sharded_cluster" - id: "auth" display_name: Authentication @@ -447,7 +491,7 @@ axes: - id: "ssl" display_name: SSL values: - - id: "ssl" + - id: "yes" display_name: SSL variables: SSL: "ssl" @@ -471,23 +515,36 @@ axes: display_name: ruby-3.1 variables: RVM_RUBY: "ruby-3.1" + - id: "ruby-3.2" + display_name: ruby-3.2 + variables: + RVM_RUBY: "ruby-3.2" + - id: "ruby-3.3" + display_name: ruby-3.3 + variables: + RVM_RUBY: "ruby-3.3" + - id: "ruby-head" + display_name: ruby-head + variables: + RVM_RUBY: "ruby-head" - id: "jruby" display_name: JRuby Version values: - - id: "jruby-9.3" - display_name: jruby-9.3 + - id: "jruby-9.4" + display_name: jruby-9.4 variables: - RVM_RUBY: "jruby-9.3" + RVM_RUBY: "jruby-9.4" - id: "os" display_name: OS values: + - id: ubuntu-22.04 + display_name: "Ubuntu 22.04" + run_on: ubuntu2204-small - id: ubuntu-20.04 display_name: "Ubuntu 20.04" run_on: ubuntu2004-small - variables: - DOCKER_DISTRO: ubuntu2004 - id: "driver" display_name: Driver Version @@ -540,6 +597,10 @@ axes: - id: "rails" display_name: Rails Version values: + - id: master + display_name: "Rails master" + variables: + RAILS: "master" - id: "6.0" display_name: "Rails 6.0" variables: @@ -552,6 +613,14 @@ axes: display_name: "Rails 7.0" variables: RAILS: "7.0" + - id: "7.1" + display_name: "Rails 7.1" + variables: + RAILS: "7.1" + - id: "8.0" + display_name: "Rails 8.0" + variables: + RAILS: "8.0" - id: "test-i18n-fallbacks" display_name: Test i18n fallbacks @@ -560,49 +629,186 @@ axes: display_name: "i18n-fallbacks" variables: TEST_I18N_FALLBACKS: yes + + - id: app-tests + display_name: Mongoid application tests + values: + - id: yes + display_name: Yes + variables: + APP_TESTS: yes + + - id: "fle" + display_name: FLE + values: + - id: "helper" + display_name: via LMC helper + variables: + FLE: helper + - id: "path" + display_name: via LMC path + variables: + FLE: path buildvariants: -- matrix_name: "mongodb-8.0" +- matrix_name: "ruby-3.2 + db-7.0" matrix_spec: - ruby: '*' + ruby: ["ruby-3.2"] driver: ["current"] - topology: '*' - mongodb-version: ['8.0'] - os: ubuntu-20.04 + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['7.0'] + os: ubuntu-22.04 display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" tasks: - name: "test" -- matrix_name: "jruby" +- matrix_name: "ruby-3.2 + db-6.0" matrix_spec: - jruby: '*' + ruby: ["ruby-3.2"] driver: ["current"] - topology: ['replica-set', 'sharded-cluster'] - mongodb-version: '8.0' - os: ubuntu-20.04 - display_name: "${jruby}, ${driver}, ${mongodb-version}, ${topology}" + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['6.0'] + os: ubuntu-22.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" tasks: - name: "test" -- matrix_name: "rails" +- matrix_name: "ruby-3.1" matrix_spec: ruby: ["ruby-3.1"] driver: ["current"] - mongodb-version: "8.0" - topology: "replica-set" - rails: '*' + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['6.0'] + os: ubuntu-22.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "ruby-3.0" + matrix_spec: + ruby: ["ruby-3.0"] + driver: ["current"] + topology: ['replica_set'] + mongodb-version: ['5.0'] os: ubuntu-20.04 - display_name: "${rails}, ${driver}, ${mongodb-version}" + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" tasks: - name: "test" -- matrix_name: "i18n-fallbacks" +- matrix_name: "ruby-2.7" matrix_spec: - ruby: "ruby-3.0" + ruby: ["ruby-2.7"] driver: ["current"] + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['4.4'] + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "driver-upcoming" + matrix_spec: + driver: [master, stable] + ruby: ["ruby-3.3"] + mongodb-version: "6.0" + topology: ['replica_set', 'sharded_cluster'] + os: ubuntu-22.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "driver-oldstable" + matrix_spec: + driver: [oldstable, min] + ruby: ["ruby-2.7"] mongodb-version: "4.4" - topology: "standalone" - test-i18n-fallbacks: yes + topology: ['replica_set', 'sharded_cluster'] + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "driver-min" + matrix_spec: + driver: [min] + ruby: ["ruby-2.7"] + mongodb-version: "4.4" + topology: "server" + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "bson-min" + matrix_spec: + driver: [bson-min] + ruby: ["ruby-2.7"] + mongodb-version: "5.0" + topology: "server" + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "rails-7" + matrix_spec: + ruby: ["ruby-3.3"] + driver: ["current"] + mongodb-version: "6.0" + topology: "server" + rails: ['7.0', '7.1'] + os: ubuntu-22.04 + fle: helper + display_name: "${rails}, ${driver}, ${mongodb-version} (FLE ${fle})" + tasks: + - name: "test" + +- matrix_name: "rails-6" + matrix_spec: + ruby: ["ruby-3.0"] + driver: ["current"] + mongodb-version: "6.0" + topology: "server" + rails: ['6.0', '6.1'] + os: ubuntu-22.04 + display_name: "${rails}, ${driver}, ${mongodb-version}" + tasks: + - name: "test" + +- matrix_name: app-tests-rails-7 + matrix_spec: + ruby: ["ruby-3.2", "ruby-3.3"] + driver: ["current"] + mongodb-version: '7.0' + topology: server + app-tests: yes + rails: ['7.0'] + os: ubuntu-22.04 + display_name: "app tests ${driver}, ${ruby}, ${rails}" + tasks: + - name: "test" + +- matrix_name: app-tests-rails-6 + matrix_spec: + ruby: ["ruby-2.7"] + driver: ["current"] + mongodb-version: '5.0' + topology: server + app-tests: yes + rails: ['6.0', '6.1'] os: ubuntu-20.04 - display_name: "i18n fallbacks ${rails}, ${driver}, ${mongodb-version}" + display_name: "app tests ${driver}, ${ruby}, ${rails}" tasks: - name: "test" + +- matrix_name: "auto-encryption" + matrix_spec: + ruby: ruby-3.1 + driver: current + topology: replica_set + mongodb-version: ['6.0'] + os: ubuntu-22.04 + rails: ['7.0'] + fle: helper + display_name: "FLE: ${rails}, ${driver}, ${mongodb-version}" + tasks: + - name: "test" diff --git a/.evergreen/config/axes.yml.erb b/.evergreen/config/axes.yml.erb index 15dbda32d1..323d58b3bc 100644 --- a/.evergreen/config/axes.yml.erb +++ b/.evergreen/config/axes.yml.erb @@ -2,62 +2,62 @@ axes: - id: "mongodb-version" display_name: MongoDB Version values: + - id: "latest" + display_name: "MongoDB Latest" + variables: + MONGODB_VERSION: "latest" - id: "8.0" display_name: "MongoDB 8.0" variables: - VERSION: "8.0" + MONGODB_VERSION: "8.0" - id: "7.0" display_name: "MongoDB 7.0" variables: - VERSION: "7.0" + MONGODB_VERSION: "7.0" - id: "6.0" display_name: "MongoDB 6.0" variables: - VERSION: "6.0" + MONGODB_VERSION: "6.0" - id: "5.3" display_name: "MongoDB 5.3" variables: - VERSION: "5.3" + MONGODB_VERSION: "5.3" - id: "5.0" display_name: "MongoDB 5.0" variables: - VERSION: "5.0" + MONGODB_VERSION: "5.0" - id: "4.4" display_name: "MongoDB 4.4" variables: - VERSION: "4.4" + MONGODB_VERSION: "4.4" - id: "4.2" display_name: "MongoDB 4.2" variables: - VERSION: "4.2" + MONGODB_VERSION: "4.2" - id: "4.0" display_name: "MongoDB 4.0" variables: - VERSION: "4.0" + MONGODB_VERSION: "4.0" - id: "3.6" display_name: "MongoDB 3.6" variables: - VERSION: "3.6" + MONGODB_VERSION: "3.6" - id: "topology" display_name: Topology values: - - id: "standalone" + - id: "server" display_name: Standalone variables: - TOPOLOGY: "standalone" - - id: "replica-set" + TOPOLOGY: "server" + - id: "replica_set" display_name: Replica Set variables: - TOPOLOGY: "replica-set" - - id: "sharded-cluster" + TOPOLOGY: "replica_set" + - id: "sharded_cluster" display_name: Sharded Cluster variables: - TOPOLOGY: "sharded-cluster" - - id: "load-balanced" - display_name: Load Balanced - variables: - TOPOLOGY: "load-balanced" + TOPOLOGY: "sharded_cluster" - id: "auth" display_name: Authentication @@ -74,7 +74,7 @@ axes: - id: "ssl" display_name: SSL values: - - id: "ssl" + - id: "yes" display_name: SSL variables: SSL: "ssl" @@ -98,23 +98,36 @@ axes: display_name: ruby-3.1 variables: RVM_RUBY: "ruby-3.1" + - id: "ruby-3.2" + display_name: ruby-3.2 + variables: + RVM_RUBY: "ruby-3.2" + - id: "ruby-3.3" + display_name: ruby-3.3 + variables: + RVM_RUBY: "ruby-3.3" + - id: "ruby-head" + display_name: ruby-head + variables: + RVM_RUBY: "ruby-head" - id: "jruby" display_name: JRuby Version values: - - id: "jruby-9.3" - display_name: jruby-9.3 + - id: "jruby-9.4" + display_name: jruby-9.4 variables: - RVM_RUBY: "jruby-9.3" + RVM_RUBY: "jruby-9.4" - id: "os" display_name: OS values: + - id: ubuntu-22.04 + display_name: "Ubuntu 22.04" + run_on: ubuntu2204-small - id: ubuntu-20.04 display_name: "Ubuntu 20.04" run_on: ubuntu2004-small - variables: - DOCKER_DISTRO: ubuntu2004 - id: "driver" display_name: Driver Version @@ -167,6 +180,10 @@ axes: - id: "rails" display_name: Rails Version values: + - id: master + display_name: "Rails master" + variables: + RAILS: "master" - id: "6.0" display_name: "Rails 6.0" variables: @@ -179,6 +196,14 @@ axes: display_name: "Rails 7.0" variables: RAILS: "7.0" + - id: "7.1" + display_name: "Rails 7.1" + variables: + RAILS: "7.1" + - id: "8.0" + display_name: "Rails 8.0" + variables: + RAILS: "8.0" - id: "test-i18n-fallbacks" display_name: Test i18n fallbacks @@ -187,3 +212,23 @@ axes: display_name: "i18n-fallbacks" variables: TEST_I18N_FALLBACKS: yes + + - id: app-tests + display_name: Mongoid application tests + values: + - id: yes + display_name: Yes + variables: + APP_TESTS: yes + + - id: "fle" + display_name: FLE + values: + - id: "helper" + display_name: via LMC helper + variables: + FLE: helper + - id: "path" + display_name: via LMC path + variables: + FLE: path diff --git a/.evergreen/config/commands.yml.erb b/.evergreen/config/commands.yml.erb index c7966e9791..8fde19baac 100644 --- a/.evergreen/config/commands.yml.erb +++ b/.evergreen/config/commands.yml.erb @@ -12,8 +12,24 @@ functions: git submodule update --init --recursive + if [ ! -d .mod ]; then + mkdir -p .mod + cd .mod + git clone https://github.com/mongodb-labs/drivers-evergreen-tools + fi + + "fetch egos": + - command: shell.exec + params: + working_dir: "src" + script: | + set -ex + + curl -sfLo egos https://raw.githubusercontent.com/p-mongo/egos/master/egos + chmod +x ./egos + "create expansions": - # Make an evergreen exapansion file with dynamic values + # Make an evergreen exapanstion file with dynamic values - command: shell.exec params: working_dir: "src" @@ -52,7 +68,7 @@ functions: export PATH="$MONGODB_BINARIES:$PATH" export PROJECT="${project}" - export MONGODB_VERSION="${VERSION}" + export MONGODB_VERSION="${MONGODB_VERSION}" export TOPOLOGY="${TOPOLOGY}" export SINGLE_MONGOS="${SINGLE_MONGOS}" export AUTH="${AUTH}" @@ -73,6 +89,24 @@ functions: params: file: src/expansion.yml + bootstrap-mongo-orchestration: + - command: shell.exec + params: + shell: "bash" + script: | + set -x + ${PREPARE_SHELL} + + MONGODB_VERSION=${MONGODB_VERSION} \ + TOPOLOGY=${TOPOLOGY} \ + AUTH=${AUTH} \ + SSL=${SSL} \ + ORCHESTRATION_FILE=${ORCHESTRATION_FILE} \ + sh ${DRIVERS_TOOLS}/.evergreen/run-orchestration.sh + - command: expansions.update + params: + file: mo-expansion.yml + "exec script" : - command: shell.exec type: test @@ -233,7 +267,7 @@ functions: "upload test results": - command: attach.xunit_results params: - file: ./src/rspec.xml + file: ./src/tmp/*.xml "run tests": - command: shell.exec @@ -251,7 +285,10 @@ functions: DRIVER="${DRIVER}" \ TEST_I18N_FALLBACKS="${TEST_I18N_FALLBACKS}" \ FLE="${FLE}" \ - .evergreen/run-tests-docker.sh + AUTH="${AUTH}" \ + SSL="${SSL}" \ + APP_TESTS="${APP_TESTS}" \ + .evergreen/run-tests.sh "fix absolute paths": - command: shell.exec @@ -262,7 +299,13 @@ functions: perl -p -i -e "s|ABSOLUTE_PATH_REPLACEMENT_TOKEN|${DRIVERS_TOOLS}|g" $filename done - "install dependencies": + "setup system": + - command: subprocess.exec + params: + binary: bash + include_expansions_in_env: ["PROJECT_DIRECTORY"] + args: + - "${DRIVERS_TOOLS}/.evergreen/setup.sh" - command: shell.exec type: test params: @@ -276,13 +319,13 @@ pre: - func: "fetch source" - func: "create expansions" - func: "fix absolute paths" - - func: "install dependencies" + - func: "setup system" post: # Removed, causing timeouts # - func: "upload working dir" - func: "upload mo artifacts" - # - func: "upload test results" + - func: "upload test results" - func: "upload test results to s3" task_groups: @@ -333,6 +376,7 @@ task_groups: tasks: - name: "test" commands: + - func: bootstrap-mongo-orchestration - func: "run tests" - name: "test-full-atlas-task" commands: diff --git a/.evergreen/config/variants.yml.erb b/.evergreen/config/variants.yml.erb index 1acd52ed96..bb0f57757b 100644 --- a/.evergreen/config/variants.yml.erb +++ b/.evergreen/config/variants.yml.erb @@ -1,46 +1,163 @@ buildvariants: -- matrix_name: "mongodb-8.0" +- matrix_name: "ruby-3.2 + db-7.0" matrix_spec: - ruby: '*' + ruby: ["ruby-3.2"] driver: ["current"] - topology: '*' - mongodb-version: ['8.0'] - os: ubuntu-20.04 + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['7.0'] + os: ubuntu-22.04 display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" tasks: - name: "test" -- matrix_name: "jruby" +- matrix_name: "ruby-3.2 + db-6.0" matrix_spec: - jruby: '*' + ruby: ["ruby-3.2"] driver: ["current"] - topology: ['replica-set', 'sharded-cluster'] - mongodb-version: '8.0' - os: ubuntu-20.04 - display_name: "${jruby}, ${driver}, ${mongodb-version}, ${topology}" + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['6.0'] + os: ubuntu-22.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" tasks: - name: "test" -- matrix_name: "rails" +- matrix_name: "ruby-3.1" matrix_spec: ruby: ["ruby-3.1"] driver: ["current"] - mongodb-version: "8.0" - topology: "replica-set" - rails: '*' + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['6.0'] + os: ubuntu-22.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "ruby-3.0" + matrix_spec: + ruby: ["ruby-3.0"] + driver: ["current"] + topology: ['replica_set'] + mongodb-version: ['5.0'] os: ubuntu-20.04 - display_name: "${rails}, ${driver}, ${mongodb-version}" + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" tasks: - name: "test" -- matrix_name: "i18n-fallbacks" +- matrix_name: "ruby-2.7" matrix_spec: - ruby: "ruby-3.0" + ruby: ["ruby-2.7"] driver: ["current"] + topology: ['server', 'replica_set', 'sharded_cluster'] + mongodb-version: ['4.4'] + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "driver-upcoming" + matrix_spec: + driver: [master, stable] + ruby: ["ruby-3.3"] + mongodb-version: "6.0" + topology: ['replica_set', 'sharded_cluster'] + os: ubuntu-22.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "driver-oldstable" + matrix_spec: + driver: [oldstable, min] + ruby: ["ruby-2.7"] mongodb-version: "4.4" - topology: "standalone" - test-i18n-fallbacks: yes + topology: ['replica_set', 'sharded_cluster'] + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "driver-min" + matrix_spec: + driver: [min] + ruby: ["ruby-2.7"] + mongodb-version: "4.4" + topology: "server" + os: ubuntu-20.04 + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "bson-min" + matrix_spec: + driver: [bson-min] + ruby: ["ruby-2.7"] + mongodb-version: "5.0" + topology: "server" os: ubuntu-20.04 - display_name: "i18n fallbacks ${rails}, ${driver}, ${mongodb-version}" + display_name: "${ruby}, ${driver}, ${mongodb-version}, ${topology}" + tasks: + - name: "test" + +- matrix_name: "rails-7" + matrix_spec: + ruby: ["ruby-3.3"] + driver: ["current"] + mongodb-version: "6.0" + topology: "server" + rails: ['7.0', '7.1'] + os: ubuntu-22.04 + fle: helper + display_name: "${rails}, ${driver}, ${mongodb-version} (FLE ${fle})" + tasks: + - name: "test" + +- matrix_name: "rails-6" + matrix_spec: + ruby: ["ruby-3.0"] + driver: ["current"] + mongodb-version: "6.0" + topology: "server" + rails: ['6.0', '6.1'] + os: ubuntu-22.04 + display_name: "${rails}, ${driver}, ${mongodb-version}" tasks: - name: "test" + +- matrix_name: app-tests-rails-7 + matrix_spec: + ruby: ["ruby-3.2", "ruby-3.3"] + driver: ["current"] + mongodb-version: '7.0' + topology: server + app-tests: yes + rails: ['7.0'] + os: ubuntu-22.04 + display_name: "app tests ${driver}, ${ruby}, ${rails}" + tasks: + - name: "test" + +- matrix_name: app-tests-rails-6 + matrix_spec: + ruby: ["ruby-2.7"] + driver: ["current"] + mongodb-version: '5.0' + topology: server + app-tests: yes + rails: ['6.0', '6.1'] + os: ubuntu-20.04 + display_name: "app tests ${driver}, ${ruby}, ${rails}" + tasks: + - name: "test" + +- matrix_name: "auto-encryption" + matrix_spec: + ruby: ruby-3.1 + driver: current + topology: replica_set + mongodb-version: ['6.0'] + os: ubuntu-22.04 + rails: ['7.0'] + fle: helper + display_name: "FLE: ${rails}, ${driver}, ${mongodb-version}" + tasks: + - name: "test" diff --git a/.evergreen/run-tests-atlas-full.sh b/.evergreen/run-tests-atlas-full.sh index f3114b8168..2c6f71a3b3 100755 --- a/.evergreen/run-tests-atlas-full.sh +++ b/.evergreen/run-tests-atlas-full.sh @@ -7,15 +7,25 @@ set -ex . `dirname "$0"`/functions.sh set_env_vars -set_env_python -set_env_ruby + +# Install rbenv and download the requested ruby version +arch=`host_distro` +rm -rf ~/.rbenv +git clone https://github.com/rbenv/rbenv.git ~/.rbenv +rm -rf ~/.rbenv/versions/ +curl --retry 3 -fL http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-toolchain/library/`host_distro`/$RVM_RUBY.tar.xz |tar -xC $HOME/.rbenv/ -Jf - +export PATH="$HOME/.rbenv/bin:$PATH" +eval "$(rbenv init - bash)" +export FULL_RUBY_VERSION=$(ls ~/.rbenv/versions | head -n1) +rbenv global $FULL_RUBY_VERSION export BUNDLE_GEMFILE=gemfiles/driver_master.gemfile bundle install ATLAS_URI=$MONGODB_URI \ EXAMPLE_TIMEOUT=600 \ - bundle exec rspec -fd spec/mongoid/search_indexable_spec.rb + bundle exec rspec -fd spec/mongoid/search_indexable_spec.rb \ + --format Rfc::Riff --format RspecJunitFormatter --out tmp/rspec.xml test_status=$? diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 533e55b32c..9e02fd829c 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -15,36 +15,39 @@ MRSS_ROOT=`dirname "$0"`/../spec/shared . $MRSS_ROOT/shlib/server.sh . `dirname "$0"`/functions.sh +# set_env.sh sets the TOOLCHAIN_VERSION variable to a default value based on +# the version spec/shared that's available. Here, we let the evergreen task +# override it, if necessary, to get a newer or older toolchain build. +if [ -n "$TOOLCHAIN_OVERRIDE" ]; then + TOOLCHAIN_VERSION=$TOOLCHAIN_OVERRIDE +fi + arch=`host_distro` set_fcv set_env_vars -set_env_python -set_env_ruby -if test -n "$APP_TESTS"; then - set_env_node +# Install rbenv and download the requested ruby version +rm -rf ~/.rbenv +git clone https://github.com/rbenv/rbenv.git ~/.rbenv +rm -rf ~/.rbenv/versions/ +curl --retry 3 -fL http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-toolchain/library/`host_distro`/$RVM_RUBY.tar.xz |tar -xC $HOME/.rbenv/ -Jf - +export PATH="$HOME/.rbenv/bin:$PATH" +eval "$(rbenv init - bash)" +export FULL_RUBY_VERSION=$(ls ~/.rbenv/versions | head -n1) +rbenv global $FULL_RUBY_VERSION + +export JAVA_HOME=/opt/java/jdk21 +export JAVACMD=$JAVA_HOME/bin/java + +if test "$FLE" = "helper"; then + sudo apt-get update && sudo apt-get install -y cmake fi -prepare_server $arch - -install_mlaunch_venv - -if test "$TOPOLOGY" = load-balanced; then - install_haproxy +if test -n "$APP_TESTS"; then + set_env_node fi -# Launching mongod under $MONGO_ORCHESTRATION_HOME -# makes its log available through log collecting machinery - -export dbdir="$MONGO_ORCHESTRATION_HOME"/db -mkdir -p "$dbdir" - -calculate_server_args -launch_server "$dbdir" - -uri_options="$URI_OPTIONS" - which bundle bundle --version @@ -99,24 +102,15 @@ fi export BUNDLE_GEMFILE -if test "$TOPOLOGY" = "sharded-cluster"; then - # We assume that sharded cluster has two mongoses - export MONGODB_URI="mongodb://localhost:27017,localhost:27018/?appName=test-suite&$uri_options" -else - export MONGODB_URI="mongodb://localhost:27017/?appName=test-suite&$uri_options" -fi - set +e if test -n "$TEST_CMD"; then eval $TEST_CMD elif test -n "$TEST_I18N_FALLBACKS"; then - bundle exec rspec spec/integration/i18n_fallbacks_spec.rb spec/mongoid/criteria_spec.rb spec/mongoid/contextual/mongo_spec.rb + bundle exec rspec spec/integration/i18n_fallbacks_spec.rb \ + spec/mongoid/criteria_spec.rb spec/mongoid/contextual/mongo_spec.rb \ + --format Rfc::Riff --format RspecJunitFormatter --out tmp/rspec.xml elif test -n "$APP_TESTS"; then - if test -z "$DOCKER_PRELOAD"; then - ./spec/shared/bin/install-node - fi - - bundle exec rspec spec/integration/app_spec.rb + bundle exec rspec spec/integration/app_spec.rb --format Rfc::Riff --format RspecJunitFormatter --out tmp/rspec.xml else bundle exec rake ci fi @@ -129,6 +123,4 @@ if test -f tmp/rspec-all.json; then mv tmp/rspec-all.json tmp/rspec.json fi -python3 -m mtools.mlaunch.mlaunch stop --dir "$dbdir" || true - exit ${test_status} diff --git a/.gitmodules b/.gitmodules index 805feb77d5..05f15e6b98 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "spec/shared"] path = spec/shared url = https://github.com/mongodb-labs/mongo-ruby-spec-shared +[submodule ".mod/drivers-evergreen-tools"] + path = .mod/drivers-evergreen-tools + url = https://github.com/mongodb-labs/drivers-evergreen-tools diff --git a/.mod/drivers-evergreen-tools b/.mod/drivers-evergreen-tools new file mode 160000 index 0000000000..f8ab2a54f7 --- /dev/null +++ b/.mod/drivers-evergreen-tools @@ -0,0 +1 @@ +Subproject commit f8ab2a54f774cab1e92bcf222949181baf8b2f1c diff --git a/gemfiles/standard.rb b/gemfiles/standard.rb index 39c5e65d1d..467055eefc 100644 --- a/gemfiles/standard.rb +++ b/gemfiles/standard.rb @@ -4,17 +4,13 @@ def standard_dependencies group :development do gem 'yard' - platform :mri do - # Debugger for VSCode. - if !ENV['CI'] && !ENV['DOCKER'] && RUBY_VERSION < '3.0' - gem 'debase' - gem 'ruby-debug-ide' - end - end + # Evergreen configuration generation + gem 'erubi' + gem 'tilt' end group :development, :test do - gem 'rspec-core', '~> 3.10' + gem 'rspec', '~> 3.12' platform :mri do gem 'byebug' @@ -29,11 +25,10 @@ def standard_dependencies gem 'timecop' gem 'rspec-retry' gem 'benchmark-ips' - gem 'rspec-expectations', '~> 3.7', '>= 3.8.4' - gem 'rspec-mocks-diag', '~> 3.0' gem 'fuubar' gem 'rfc' gem 'childprocess' + gem 'rspec_junit_formatter' platform :mri do gem 'timeout-interrupt' diff --git a/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb b/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb index 605f1eb8b0..17a4de06ad 100644 --- a/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +++ b/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb @@ -2,8 +2,7 @@ require "spec_helper" -describe "Fixnum" do - ruby_version_lt "2.4" +describe Fixnum do describe ".evolve" do diff --git a/spec/shared b/spec/shared index f1c563a36c..702f23f98b 160000 --- a/spec/shared +++ b/spec/shared @@ -1 +1 @@ -Subproject commit f1c563a36ce64541331fdbc9afe3c27d2b9e2463 +Subproject commit 702f23f98b4be12fae3cf4d235a27a7985272251