Skip to content

Commit 224cf16

Browse files
p-mongop
andcommitted
RUBY-2059 Depend on bson 4.4.2 for the benefit of driver 2.10 (#1617)
Co-authored-by: Oleg Pudeyev <p@users.noreply.github.com>
1 parent dc4b3bb commit 224cf16

File tree

15 files changed

+202
-48
lines changed

15 files changed

+202
-48
lines changed

.evergreen/config.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,7 @@ axes:
574574
display_name: "2.6"
575575
variables:
576576
VERSION: "2.6"
577+
577578
- id: fcv
578579
display_name: FCV
579580
values:
@@ -597,6 +598,7 @@ axes:
597598
display_name: Sharded
598599
variables:
599600
TOPOLOGY: "sharded_cluster"
601+
600602
- id: "auth-and-ssl"
601603
display_name: Authentication and SSL
602604
values:
@@ -620,6 +622,7 @@ axes:
620622
variables:
621623
AUTH: "noauth"
622624
SSL: "nossl"
625+
623626
- id: "ruby"
624627
display_name: Ruby Version
625628
# Local TLS tests run on all Ruby versions, thus no versions should be
@@ -653,6 +656,7 @@ axes:
653656
display_name: jruby-9.2
654657
variables:
655658
RVM_RUBY: "jruby-9.2"
659+
656660
- id: "os"
657661
display_name: OS
658662
values:
@@ -665,48 +669,67 @@ axes:
665669
- id: rhel70
666670
display_name: "RHEL 7.0"
667671
run_on: rhel70-small
672+
668673
- id: "compressor"
669674
display_name: Compressor
670675
values:
671676
- id: "zlib"
672677
display_name: Zlib
673678
variables:
674679
COMPRESSOR: "zlib"
680+
675681
- id: retry-reads
676682
display_name: Retry Reads
677683
values:
678684
- id: no-retry-reads
679685
display_name: No Retry Reads
680686
variables:
681687
RETRY_READS: 'false'
688+
682689
- id: retry-writes
683690
display_name: Retry Writes
684691
values:
685692
- id: no-retry-writes
686693
display_name: No Retry Writes
687694
variables:
688695
RETRY_WRITES: 'false'
696+
689697
- id: lint
690698
display_name: Lint
691699
values:
692700
- id: on
693701
display_name: On
694702
variables:
695703
LINT: '1'
704+
696705
- id: "as"
697706
display_name: ActiveSupport
698707
values:
699708
- id: "as"
700709
display_name: AS
701710
variables:
702711
WITH_ACTIVE_SUPPORT: true
712+
713+
- id: bson
714+
display_name: BSON
715+
values:
716+
- id: min
717+
display_name: min
718+
variables:
719+
BSON: min
720+
- id: master
721+
display_name: master
722+
variables:
723+
BSON: master
724+
703725
- id: "single-mongos"
704726
display_name: Single Mongos
705727
values:
706728
- id: "single-mongos"
707729
display_name: Single Mongos
708730
variables:
709731
SINGLE_MONGOS: 'true'
732+
710733
- id: storage-engine
711734
display_name: Storage Engine
712735
values:
@@ -900,6 +923,17 @@ buildvariants:
900923
tasks:
901924
- name: "test"
902925

926+
- matrix_name: "bson"
927+
matrix_spec:
928+
ruby: ruby-2.6
929+
mongodb-version: '4.2'
930+
topology: replica-set
931+
bson: "*"
932+
os: rhel70
933+
display_name: "AS ${mongodb-version} ${topology} ${ruby} ${bson}"
934+
tasks:
935+
- name: "test"
936+
903937
-
904938
matrix_name: "3.6-with-3.4-fcv"
905939
matrix_spec:

.evergreen/functions.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,12 @@ set_env_vars() {
8080

8181
# JRUBY_OPTS were initially set for Mongoid
8282
export JRUBY_OPTS="--server -J-Xms512m -J-Xmx2G"
83+
84+
if test "$BSON" = min; then
85+
export BUNDLE_GEMFILE=gemfiles/bson_min.gemfile
86+
elif test "$BSON" = master; then
87+
export BUNDLE_GEMFILE=gemfiles/bson_master.gemfile
88+
fi
8389
}
8490

8591
setup_ruby() {

Gemfile

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,7 @@
11
source 'https://rubygems.org'
22

33
gemspec
4-
gem 'yard'
54

6-
group :development, :testing do
7-
gem 'jruby-openssl', platforms: :jruby
8-
gem 'json', platforms: :jruby
9-
# Explicitly specify each rspec dependency so that we can use
10-
# rspec-mocks-diag instead of rspec-mocks
11-
#gem 'rspec', '~> 3.0'
12-
gem 'rspec-core', '~> 3.0'
13-
gem 'mime-types', '~> 1.25'
14-
gem 'activesupport'
15-
gem 'rake'
16-
gem 'httparty'
5+
require_relative './gemfiles/standard'
176

18-
gem 'byebug', platforms: :mri
19-
20-
# for benchmark tests
21-
gem 'yajl-ruby', require: 'yajl', platforms: :mri
22-
gem 'celluloid', platforms: :mri, require: false
23-
gem 'timers'
24-
end
25-
26-
group :testing do
27-
gem 'timecop'
28-
gem 'ice_nine'
29-
gem 'rubydns', platforms: :mri
30-
gem 'rspec-retry'
31-
gem 'rspec-expectations', '~> 3.0'
32-
gem 'rspec-mocks-diag', '~> 3.0'
33-
gem 'rfc'
34-
gem 'fuubar'
35-
gem 'timeout-interrupt', platforms: :mri
36-
gem 'concurrent-ruby', platforms: :jruby
37-
end
38-
39-
group :development do
40-
gem 'ruby-prof', :platforms => :mri
41-
gem 'pry-rescue'
42-
gem 'pry-nav'
43-
end
7+
standard_dependencies

gemfiles/bson_master.gemfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
source "https://rubygems.org"
2+
gemspec path: '..'
3+
4+
gem 'bson', git: 'https://github.com/mongodb/bson-ruby'
5+
6+
require_relative './standard'
7+
8+
standard_dependencies

gemfiles/bson_min.gemfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
source "https://rubygems.org"
2+
gemspec path: '..'
3+
4+
gem 'bson', '4.4.2'
5+
6+
require_relative './standard'
7+
8+
standard_dependencies

gemfiles/standard.rb

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
def standard_dependencies
2+
gem 'yard'
3+
gem 'ffi'
4+
5+
group :development, :testing do
6+
gem 'jruby-openssl', platforms: :jruby
7+
gem 'json', platforms: :jruby
8+
# Explicitly specify each rspec dependency so that we can use
9+
# rspec-mocks-diag instead of rspec-mocks
10+
#gem 'rspec', '~> 3.0'
11+
gem 'rspec-core', '~> 3.0'
12+
gem 'mime-types', '~> 1.25'
13+
gem 'activesupport'
14+
gem 'rake'
15+
gem 'httparty'
16+
17+
gem 'byebug', platforms: :mri
18+
19+
# for benchmark tests
20+
gem 'yajl-ruby', require: 'yajl', platforms: :mri
21+
gem 'celluloid', platforms: :mri, require: false
22+
gem 'timers'
23+
end
24+
25+
group :testing do
26+
gem 'timecop'
27+
gem 'ice_nine'
28+
gem 'rubydns', platforms: :mri
29+
gem 'rspec-retry'
30+
gem 'rspec-expectations', '~> 3.0'
31+
gem 'rspec-mocks-diag', '~> 3.0'
32+
gem 'rfc'
33+
gem 'fuubar'
34+
gem 'timeout-interrupt', platforms: :mri
35+
gem 'concurrent-ruby', platforms: :jruby
36+
end
37+
38+
group :development do
39+
gem 'ruby-prof', :platforms => :mri
40+
gem 'pry-rescue'
41+
gem 'pry-nav'
42+
end
43+
end

lib/mongo/cursor/builder/kill_cursors_command.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,14 @@ def update_cursors(spec, ids)
9292
#
9393
# @since 2.3.0
9494
def get_cursors_list(spec)
95-
spec[:selector][:cursors].map(&:value)
95+
spec[:selector][:cursors].map do |value|
96+
if value.respond_to?(:value)
97+
# bson-ruby >= 4.6.0
98+
value = value.value
99+
else
100+
value = value.instance_variable_get('@integer')
101+
end
102+
end
96103
end
97104
end
98105
end

lib/mongo/cursor/builder/op_kill_cursors.rb

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,14 @@ def update_cursors(spec, ids)
8787
#
8888
# @since 2.3.0
8989
def get_cursors_list(spec)
90-
spec[:cursor_ids].map(&:value)
90+
spec[:cursor_ids].map do |value|
91+
if value.respond_to?(:value)
92+
# bson-ruby >= 4.6.0
93+
value.value
94+
else
95+
value.instance_variable_get('@integer')
96+
end
97+
end
9198
end
9299
end
93100
end

lib/mongo/protocol/serializers.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,12 @@ module Int32
110110
# @return [String] Buffer with serialized value.
111111
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
112112
if value.is_a?(BSON::Int32)
113-
value = value.value
113+
if value.respond_to?(:value)
114+
# bson-ruby >= 4.6.0
115+
value = value.value
116+
else
117+
value = value.instance_variable_get('@integer')
118+
end
114119
end
115120
buffer.put_int32(value)
116121
end
@@ -138,7 +143,12 @@ module Int64
138143
# @return [ String ] Buffer with serialized value.
139144
def self.serialize(buffer, value, validating_keys = BSON::Config.validating_keys?)
140145
if value.is_a?(BSON::Int64)
141-
value = value.value
146+
if value.respond_to?(:value)
147+
# bson-ruby >= 4.6.0
148+
value = value.value
149+
else
150+
value = value.instance_variable_get('@integer')
151+
end
142152
end
143153
buffer.put_int64(value)
144154
end

mongo.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,5 @@ Gem::Specification.new do |s|
4040

4141
s.required_ruby_version = ">= 2.3"
4242

43-
s.add_dependency 'bson', '>=4.6.0', '<5.0.0'
43+
s.add_dependency 'bson', '>=4.4.2', '<5.0.0'
4444
end

0 commit comments

Comments
 (0)