diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 6ec839c605..d4e48a29c0 100644 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -777,6 +777,10 @@ axes: - id: "mongodb-version" display_name: MongoDB Version values: + - id: "rapid" + display_name: "Rapid" + variables: + MONGODB_VERSION: "rapid" - id: "8.0" display_name: "8.0" variables: @@ -1245,7 +1249,7 @@ buildvariants: - matrix_name: "single-lb" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: load-balanced single-mongos: single-mongos os: ubuntu2204 @@ -1269,7 +1273,7 @@ buildvariants: - matrix_name: "single-mongos" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "sharded-cluster" single-mongos: single-mongos os: ubuntu2204 @@ -1281,7 +1285,7 @@ buildvariants: - matrix_name: CSOT matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: replica-set-single-node os: ubuntu2204 display_name: "CSOT - ${mongodb-version}" @@ -1304,7 +1308,7 @@ buildvariants: matrix_spec: retry-reads: no-retry-reads ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: ["standalone", "replica-set", "sharded-cluster"] os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-reads} ${ruby}" @@ -1316,7 +1320,7 @@ buildvariants: matrix_spec: retry-writes: no-retry-writes ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: [replica-set, sharded-cluster] os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-writes} ${ruby}" @@ -1406,7 +1410,7 @@ buildvariants: matrix_spec: auth-and-ssl: [ "auth-and-ssl", "noauth-and-nossl" ] ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "replica-set" compressor: 'zlib' os: ubuntu2204 @@ -1419,7 +1423,7 @@ buildvariants: matrix_spec: auth-and-ssl: [ "auth-and-ssl", "noauth-and-nossl" ] ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "replica-set" compressor: 'snappy' os: ubuntu2204 @@ -1436,7 +1440,7 @@ buildvariants: matrix_spec: auth-and-ssl: [ "auth-and-ssl", "noauth-and-nossl" ] ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: "replica-set" compressor: 'zstd' os: ubuntu2204 @@ -1448,7 +1452,7 @@ buildvariants: - matrix_name: activesupport-"ruby-4.0" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: replica-set as: as os: ubuntu2204 @@ -1460,7 +1464,7 @@ buildvariants: - matrix_name: bson-"ruby-4.0" matrix_spec: ruby: "ruby-4.0" - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] topology: replica-set bson: "*" os: ubuntu2204 @@ -1535,12 +1539,12 @@ buildvariants: tasks: - name: "test-mlaunch" - - matrix_name: "fle above 4.4" + - matrix_name: "fle" matrix_spec: auth-and-ssl: "noauth-and-nossl" ruby: ["ruby-4.0", "ruby-3.4", "ruby-3.3", "ruby-3.2", "ruby-3.1"] topology: [replica-set, sharded-cluster] - mongodb-version: [ '6.0', '7.0', '8.0' ] + mongodb-version: [ '6.0', '7.0', '8.0', 'rapid' ] os: ubuntu2204 fle: helper display_name: "FLE: ${mongodb-version} ${topology} ${ruby}" @@ -1571,6 +1575,8 @@ buildvariants: # tasks: # - name: "test-fle" + # Runs specs against the latest server. This is not automatically run on PR's + # because we don't want to block PR's when the latest DB breaks something. - name: 'latest-server' activate: false display_name: 'Latest MongoDB Server' @@ -1592,7 +1598,7 @@ buildvariants: auth-and-ssl: [ aws-regular, aws-assume-role, aws-web-identity ] ruby: "ruby-4.0" topology: standalone - mongodb-version: "8.0" + mongodb-version: ["8.0", "rapid"] os: ubuntu2204 display_name: "AWS ${auth-and-ssl} ${mongodb-version} ${ruby}" tags: ["pr"] diff --git a/.evergreen/config/axes.yml.erb b/.evergreen/config/axes.yml.erb index 66f1ec5f9b..5219f22e87 100644 --- a/.evergreen/config/axes.yml.erb +++ b/.evergreen/config/axes.yml.erb @@ -2,6 +2,10 @@ axes: - id: "mongodb-version" display_name: MongoDB Version values: + - id: "rapid" + display_name: "Rapid" + variables: + MONGODB_VERSION: "rapid" - id: "8.0" display_name: "8.0" variables: diff --git a/.evergreen/config/standard.yml.erb b/.evergreen/config/standard.yml.erb index 83c0d404e1..db844c82bd 100644 --- a/.evergreen/config/standard.yml.erb +++ b/.evergreen/config/standard.yml.erb @@ -27,7 +27,10 @@ jrubies # The latest stable version of MongoDB - latest_stable_mdb = "8.0".inspect # so it gets quoted as a string + latest_stable_mdb_raw = "8.0" + latest_stable_mdb = latest_stable_mdb_raw.inspect # so it gets quoted as a string + + stable_and_rapid = [ latest_stable_mdb_raw, "rapid" ] recent_mdb = %w( 8.0 7.0 ) %> @@ -112,7 +115,7 @@ buildvariants: - matrix_name: "single-lb" matrix_spec: ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: load-balanced single-mongos: single-mongos os: ubuntu2204 @@ -136,7 +139,7 @@ buildvariants: - matrix_name: "single-mongos" matrix_spec: ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: "sharded-cluster" single-mongos: single-mongos os: ubuntu2204 @@ -148,7 +151,7 @@ buildvariants: - matrix_name: CSOT matrix_spec: ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: replica-set-single-node os: ubuntu2204 display_name: "CSOT - ${mongodb-version}" @@ -171,7 +174,7 @@ buildvariants: matrix_spec: retry-reads: no-retry-reads ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: <%= topologies %> os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-reads} ${ruby}" @@ -183,7 +186,7 @@ buildvariants: matrix_spec: retry-writes: no-retry-writes ruby: <%= latest_ruby %> - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> topology: [replica-set, sharded-cluster] os: ubuntu2204 display_name: "${mongodb-version} ${topology} ${retry-writes} ${ruby}" @@ -270,7 +273,7 @@ buildvariants: - name: "run-main-test-suite" <% [ - [latest_ruby, latest_stable_mdb, 'ubuntu2204'], + [latest_ruby, stable_and_rapid, 'ubuntu2204'], [supported_mri_ruby_2, '"6.0"', 'ubuntu2004'] ].each do |rubies, mdb, distro| %> @@ -342,12 +345,12 @@ buildvariants: - name: "test-mlaunch" <% end %> - - matrix_name: "fle above 4.4" + - matrix_name: "fle" matrix_spec: auth-and-ssl: "noauth-and-nossl" ruby: <%= supported_mri_rubies_3_ubuntu %> topology: [replica-set, sharded-cluster] - mongodb-version: [ '6.0', '7.0', '8.0' ] + mongodb-version: [ '6.0', '7.0', '8.0', 'rapid' ] os: ubuntu2204 fle: helper display_name: "FLE: ${mongodb-version} ${topology} ${ruby}" @@ -378,6 +381,8 @@ buildvariants: # tasks: # - name: "test-fle" + # Runs specs against the latest server. This is not automatically run on PR's + # because we don't want to block PR's when the latest DB breaks something. - name: 'latest-server' activate: false display_name: 'Latest MongoDB Server' @@ -399,7 +404,7 @@ buildvariants: auth-and-ssl: [ aws-regular, aws-assume-role, aws-web-identity ] ruby: <%= latest_ruby %> topology: standalone - mongodb-version: <%= latest_stable_mdb %> + mongodb-version: <%= stable_and_rapid %> os: ubuntu2204 display_name: "AWS ${auth-and-ssl} ${mongodb-version} ${ruby}" tags: ["pr"] diff --git a/.evergreen/run-tests.sh b/.evergreen/run-tests.sh index 27e02c3302..da94291800 100755 --- a/.evergreen/run-tests.sh +++ b/.evergreen/run-tests.sh @@ -61,6 +61,7 @@ prepare_server if test "$DOCKER_PRELOAD" != 1; then install_mlaunch_venv + pip3 install waitress fi # Make sure cmake is installed (in case we need to install the libmongocrypt diff --git a/.mod/drivers-evergreen-tools b/.mod/drivers-evergreen-tools index 9142b7055e..f3720c0b98 160000 --- a/.mod/drivers-evergreen-tools +++ b/.mod/drivers-evergreen-tools @@ -1 +1 @@ -Subproject commit 9142b7055ea5940e59ad41c4b069376f867031da +Subproject commit f3720c0b98fb14a8b452670f7cda5ef8080e7eaf diff --git a/spec/integration/client_side_encryption/kms_tls_options_spec.rb b/spec/integration/client_side_encryption/kms_tls_options_spec.rb index a36b1d745b..ff1c1f4878 100644 --- a/spec/integration/client_side_encryption/kms_tls_options_spec.rb +++ b/spec/integration/client_side_encryption/kms_tls_options_spec.rb @@ -18,6 +18,13 @@ ) end + # 6.0 mongocrypt expects a JSON-compatible error message from the KMS, but + # the mock KMS server returns an HTML error page. + let(:affected_by_mock_kms_server_change) do + (kms_provider == 'azure' || kms_provider == 'gcp') && + ClusterConfig.instance.server_version < '7.0' + end + let(:client_encryption_no_client_cert) do Mongo::ClientEncryption.new( client, @@ -314,7 +321,7 @@ end it 'raises KmsError directly without wrapping CryptError' do - if should_raise_with_tls + if should_raise_with_tls && !affected_by_mock_kms_server_change begin client_encryption_with_tls.create_data_key( kms_provider, diff --git a/spec/support/crypt.rb b/spec/support/crypt.rb index f6337eeb63..14b65720a1 100644 --- a/spec/support/crypt.rb +++ b/spec/support/crypt.rb @@ -23,6 +23,21 @@ module Crypt # For all FLE-related tests shared_context 'define shared FLE helpers' do + # SERVER-118428 -- mongocryptd rejects large messages + # DRIVERS-3382 -- once SERVER-118428 is fixed, remove these checks + before do + if extra_options[:mongocryptd_uri] + version = ClusterConfig.instance.server_version + bad_mongocryptd = case version + when /^8\.2/ then version >= '8.2.4' + when /^8\.0/ then version >= '8.0.18' + when /^7\.0/ then version >= '7.0.29' + else false + end + skip 'Bad mongocryptd version -- see DRIVERS-3382' if bad_mongocryptd + end + end + # 96-byte binary string, base64-encoded local master key let(:local_master_key_b64) do Crypt::LOCAL_MASTER_KEY_B64