bson 4.13.0 → 4.14.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,9 +12,12 @@ server_url = "http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-#
12
12
  server_archive_basename = File.basename(server_url)
13
13
  server_extracted_dir = server_archive_basename.sub(/\.(tar\.gz|tgz)$/, '')
14
14
 
15
- toolchain_upper='291ba4a4e8297f142796e70eee71b99f333e35e1'
15
+ TOOLCHAIN_VERSION='35fb9fb797a941094bf4ee8678284da88849435c'
16
+
17
+ def ruby_toolchain_url(ruby)
18
+ "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/#{TOOLCHAIN_VERSION}/#{distro}/#{ruby}.tar.xz"
19
+ end
16
20
 
17
- ruby_toolchain_url = "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/ruby-toolchain-#{distro}-#{toolchain_upper}.tar.xz"
18
21
  #ruby_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/#{distro}/#{toolchain_upper}/mongo_ruby_driver_toolchain_#{distro.gsub('-', '_')}_patch_#{toolchain_upper}_#{toolchain_lower}.tar.gz"
19
22
 
20
23
  %>
@@ -55,9 +58,10 @@ FROM <%= base_image %>
55
58
  # Ruby runtime dependencies: libyaml-0-2
56
59
  # Compiling ruby libraries: gcc make
57
60
  # Compiling pyhton packages: python2.7-dev
58
- # JRuby: openjdk-8-jre-headless
61
+ # JRuby: openjdk-8-jdk-headless
59
62
  # Server dependencies: libsnmp30 libcurl3/libcurl4
60
63
  # Determining OS we are running on: lsb-release
64
+ # Load balancer testing: haproxy
61
65
  # Kerberos testing: krb5-user
62
66
  # Local Kerberos server: krb5-kdc krb5-admin-server
63
67
  # Installing mlaunch from git: git
@@ -65,8 +69,9 @@ FROM <%= base_image %>
65
69
  # nio4r on JRuby: libgmp-dev
66
70
  # Snappy compression: libsnappy-dev
67
71
  # nokogiri: zlib1g-dev
68
- # Mongoid testing: tzdata
72
+ # Mongoid testing: tzdata shared-mime-info
69
73
  # Mongoid application testing: nodejs (8.x or newer)
74
+ # Test suite: procps for ps (to kill JRubies)
70
75
  #
71
76
  # We currently use Python 2-compatible version of mtools, which
72
77
  # is installable via pip (which uses Python 2). All of the MongoDB
@@ -74,22 +79,44 @@ FROM <%= base_image %>
74
79
  # therefore install python-pip in all configurations here.
75
80
 
76
81
  <% packages = %w(
77
- lsb-release bzip2 curl zsh
82
+ procps lsb-release bzip2 curl zsh
78
83
  git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
79
- libsnmp30
80
84
  krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
81
- python-pip python2.7-dev python3-pip
82
- tzdata
85
+ haproxy
86
+ python3-pip
87
+ tzdata shared-mime-info
83
88
  ) %>
84
89
 
85
- # ubuntu1404 only has openjdk-7-jre-headless
86
- <% if distro !~ /ubuntu1404/ %>
87
- <% packages << 'openjdk-8-jre-headless' %>
90
+ <% if distro =~ /ubuntu1404/ %>
91
+ # For building python & setuptools
92
+ <% packages += %w(libssl-dev unzip) %>
93
+ <% end %>
94
+
95
+ <% if distro !~ /ubuntu2004/ %>
96
+ <% packages += %w(python2.7-dev) %>
97
+ <% end %>
98
+
99
+ <% if distro =~ /ubuntu2004/ %>
100
+ <% packages << 'libsnmp35' %>
101
+ <% else %>
102
+ <% packages << 'libsnmp30' %>
103
+ <% end %>
104
+
105
+ <% if distro !~ /ubuntu2004/ %>
106
+ <% packages << 'python-pip' %>
107
+ <% end %>
108
+
109
+ <% if distro =~ /debian10/ %>
110
+ <% packages << 'openjdk-11-jdk-headless' %>
111
+ <% elsif distro =~ /ubuntu1404/ %>
112
+ # Ubuntu 14.04 only has openjdk 7, this is too old to be useful
113
+ <% else %>
114
+ <% packages << 'openjdk-8-jdk-headless' %>
88
115
  <% end %>
89
116
 
90
117
  # ubuntu1404, ubuntu1604: libcurl3
91
- # ubuntu1804: libcurl4
92
- <% if distro =~ /ubuntu1804/ %>
118
+ # ubuntu1804, ubuntu2004, debian10: libcurl4
119
+ <% if distro =~ /ubuntu1804|ubuntu2004|debian10/ %>
93
120
  <% packages << 'libcurl4' %>
94
121
  <% else %>
95
122
  <% packages << 'libcurl3' %>
@@ -99,9 +126,36 @@ FROM <%= base_image %>
99
126
  <% packages << 'nodejs' %>
100
127
  <% end %>
101
128
 
129
+ <% if distro =~ /ubuntu2004/ %>
130
+ <% packages += %w(ruby ruby2.7 bundler python2 python2-dev) %>
131
+ <% end %>
132
+
102
133
  RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
103
134
  <% else %>
104
135
 
136
+ <% if distro =~ /rhel6/ %>
137
+
138
+ # CentOS 6 is dead - to use it retrieve the packages from vault:
139
+ # https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
140
+
141
+ <%
142
+
143
+ cfg = <<-CFG
144
+ [base]
145
+ name=CentOS-$releasever - Base
146
+ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
147
+ #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
148
+ baseurl=http://vault.centos.org/6.10/os/x86_64/
149
+ gpgcheck=1
150
+ gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
151
+ CFG
152
+
153
+ %>
154
+
155
+ RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
156
+
157
+ <% end %>
158
+
105
159
  # Enterprise server: net-snmp
106
160
  # lsb_release: redhat-lsb-core
107
161
  # our runner scripts: which
@@ -118,7 +172,7 @@ FROM <%= base_image %>
118
172
 
119
173
  RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
120
174
  krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
121
- net-snmp
175
+ net-snmp python3
122
176
 
123
177
  <% if distro =~ /rhel6/ %>
124
178
 
@@ -134,32 +188,34 @@ FROM <%= base_image %>
134
188
  RUN yum install -y python-devel
135
189
 
136
190
  <% end %>
137
-
191
+
138
192
  <% end %>
139
193
 
140
194
  <% if preload? %>
141
195
 
142
- # Current virtualenv fails with
143
- # https://github.com/pypa/virtualenv/issues/1630
144
- RUN python2 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
145
-
146
- RUN pip --version && \
147
- pip install mtools-legacy[mlaunch]
148
-
149
- <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
150
- RUN python3 -mpip install asn1crypto oscrypto flask
151
- <% end %>
152
-
153
- <% unless ruby_head? %>
154
-
155
- RUN curl --retry 3 -fL <%= ruby_toolchain_url %> |tar -xC /opt -Jf -
156
- ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
157
- USE_OPT_TOOLCHAIN=1
158
- #ENV PATH=/opt/rubies/python/3/bin:$PATH
159
-
160
- <% end %>
161
-
162
- <% if distro =~ /rhel|ubuntu1604/ %>
196
+ <% if distro =~ /ubuntu1404/ %>
197
+
198
+ # I couldn't find a prebuilt package of anything more recent than 2.7.6
199
+ # for 14.04.
200
+ RUN curl --retry 3 -fL https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz | \
201
+ tar xfJ - && \
202
+ cd Python-2.7.16 && \
203
+ ./configure && \
204
+ nice make -j4 && \
205
+ make install && \
206
+ cd .. && rm -rf Python-2.7.16
207
+
208
+ ENV PATH=/usr/local/bin:$PATH
209
+
210
+ RUN curl --retry 3 -fL -o setuptools-44.1.1.zip https://files.pythonhosted.org/packages/b2/40/4e00501c204b457f10fe410da0c97537214b2265247bc9a5bc6edd55b9e4/setuptools-44.1.1.zip && \
211
+ unzip setuptools-44.1.1.zip && \
212
+ cd setuptools-44.1.1 && \
213
+ python setup.py install && \
214
+ cd .. && rm -rf setuptools-44.1.1
215
+
216
+ <% end%>
217
+
218
+ <% if true || distro =~ /rhel|ubuntu1604/ %>
163
219
 
164
220
  # Ubuntu 12.04 ships pip 1.0 which is ancient and does not work.
165
221
  #
@@ -173,7 +229,42 @@ FROM <%= base_image %>
173
229
  # therefore install it the manual way.
174
230
  #
175
231
  # https://pip.pypa.io/en/stable/installing/
176
- RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/2.7/get-pip.py | python
232
+ RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2
233
+
234
+ <% end %>
235
+
236
+ # Current virtualenv fails with
237
+ # https://github.com/pypa/virtualenv/issues/1630
238
+ <% if distro =~ /ubuntu2004/ %>
239
+ RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
240
+ <% else %>
241
+ RUN python2 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
242
+ <% end %>
243
+
244
+ RUN pip --version && \
245
+ pip install mtools-legacy[mlaunch]
246
+
247
+ <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
248
+ # ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
249
+ # as specified by dependencies, causing OCSP mock to not work.
250
+ RUN python3 -mpip install asn1crypto oscrypto flask --upgrade
251
+ <% end %>
252
+
253
+ # FLE is tested against 4.0+ servers.
254
+ <% if @env.fetch('MONGODB_VERSION') >= '4.0' %>
255
+ # Requirements in drivers-evergreen-tools:
256
+ # boto3~=1.19 cryptography~=3.4.8 pykmip~=0.10.0
257
+ # cryptography does not install due to lacking setuptools_rust
258
+ # (either that version or anything that isn't part of system packages)
259
+ RUN python3 -mpip install boto3~=1.19 cryptography pykmip~=0.10.0
260
+ <% end %>
261
+
262
+ <% unless ruby_head? || system_ruby? %>
263
+
264
+ RUN curl --retry 3 -fL <%= ruby_toolchain_url(ruby) %> |tar -xC /opt -Jf -
265
+ ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
266
+ USE_OPT_TOOLCHAIN=1
267
+ #ENV PATH=/opt/rubies/python/3/bin:$PATH
177
268
 
178
269
  <% end %>
179
270
 
@@ -183,6 +274,14 @@ FROM <%= base_image %>
183
274
 
184
275
  <% end %>
185
276
 
277
+ <% if distro =~ /debian|ubuntu/ %>
278
+ # mkdir was moved from /usr/bin to /bin and MongoDB's distros
279
+ # apparently keep using the old location.
280
+ # This definitely affects debian10.
281
+ # https://stackoverflow.com/questions/64653051/make-usr-bin-mkdir-command-not-found-during-gem-install-nokogiri-in-ubuntu
282
+ RUN test -f /usr/bin/mkdir || ln -s /bin/mkdir /usr/bin/mkdir
283
+ <% end %>
284
+
186
285
  WORKDIR /app
187
286
 
188
287
  <% if preload? && !ruby_head? %>
@@ -193,17 +292,25 @@ WORKDIR /app
193
292
  COPY lib/<%= project_lib_subdir %>/version.rb lib/<%= project_lib_subdir %>/version.rb
194
293
  RUN bundle install
195
294
  COPY .evergreen/patch-debuggers .evergreen/patch-debuggers
196
- RUN .evergreen/patch-debuggers /opt/rubies
295
+ <% if system_ruby? %>
296
+ # Running under docker with root access
297
+ RUN .evergreen/patch-debuggers /var/lib/gems
298
+ <% else %>
299
+ RUN .evergreen/patch-debuggers /opt/rubies
300
+ <% end %>
197
301
 
198
302
  <% end %>
199
303
 
200
304
  <% if fle? %>
201
- RUN curl --retry 3 -fLo libmongocrypt-all.tar.gz "https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz"
202
- RUN tar xf libmongocrypt-all.tar.gz
305
+ RUN curl --retry 3 -fL "https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz" |tar zxf -
203
306
 
204
307
  <%= "ENV LIBMONGOCRYPT_PATH #{libmongocrypt_path}" %>
205
308
  <% end %>
206
309
 
310
+ <% if preload? %>
311
+ ENV DOCKER_PRELOAD=1
312
+ <% end %>
313
+
207
314
  ENV MONGO_ORCHESTRATION_HOME=/tmpfs \
208
315
  PROJECT_DIRECTORY=/app \
209
316
  <%= @env.map { |k, v| %Q`#{k}="#{v.gsub('$', "\\$").gsub('"', "\\\"")}"` }.join(" \\\n ") %>
@@ -0,0 +1,16 @@
1
+ # Modeled after
2
+ # https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-load-balancer.sh
3
+
4
+ defaults
5
+ mode tcp
6
+ timeout connect 7s
7
+ timeout client 55s
8
+ timeout server 55s
9
+
10
+ frontend mongos_frontend
11
+ bind *:27017
12
+ use_backend mongos_backend
13
+
14
+ backend mongos_backend
15
+ mode tcp
16
+ server mongos_one 127.0.0.1:27117 check
@@ -0,0 +1,17 @@
1
+ # Modeled after
2
+ # https://github.com/mongodb-labs/drivers-evergreen-tools/blob/master/.evergreen/run-load-balancer.sh
3
+
4
+ defaults
5
+ mode tcp
6
+ timeout connect 7s
7
+ timeout client 55s
8
+ timeout server 55s
9
+
10
+ frontend mongos_frontend
11
+ bind *:27017
12
+ use_backend mongos_backend
13
+
14
+ backend mongos_backend
15
+ mode tcp
16
+ server mongos_one 127.0.0.1:27117 check
17
+ server mongos_two 127.0.0.1:27118 check
@@ -13,7 +13,8 @@ _detect_distro() {
13
13
  if test -f /etc/debian_version; then
14
14
  # Debian or Ubuntu
15
15
  if test "`uname -m`" = aarch64; then
16
- distro=ubuntu1604-arm
16
+ release=`lsb_release -rs |tr -d .`
17
+ distro="ubuntu$release"-arm
17
18
  elif lsb_release -is |grep -q Debian; then
18
19
  release=`lsb_release -rs |tr -d .`
19
20
  # In docker, release is something like 9.11.
@@ -10,21 +10,21 @@ set_fcv() {
10
10
 
11
11
  add_uri_option() {
12
12
  opt=$1
13
-
13
+
14
14
  if ! echo $MONGODB_URI |sed -e s,//,, |grep -q /; then
15
15
  MONGODB_URI="$MONGODB_URI/"
16
16
  fi
17
-
17
+
18
18
  if ! echo $MONGODB_URI |grep -q '?'; then
19
19
  MONGODB_URI="$MONGODB_URI?"
20
20
  fi
21
-
21
+
22
22
  MONGODB_URI="$MONGODB_URI&$opt"
23
23
  }
24
24
 
25
25
  prepare_server() {
26
26
  arch=$1
27
-
27
+
28
28
  if test -n "$USE_OPT_MONGODB"; then
29
29
  export BINDIR=/opt/mongodb/bin
30
30
  export PATH=$BINDIR:$PATH
@@ -39,7 +39,7 @@ prepare_server() {
39
39
  else
40
40
  download_version="$MONGODB_VERSION"
41
41
  fi
42
-
42
+
43
43
  url=`$(dirname $0)/get-mongodb-download-url $download_version $arch`
44
44
 
45
45
  prepare_server_from_url $url
@@ -80,7 +80,7 @@ install_mlaunch_pip() {
80
80
  # mlaunch is preinstalled in the docker image, do not install it here
81
81
  return
82
82
  fi
83
-
83
+
84
84
  python -V || true
85
85
  python3 -V || true
86
86
  pythonpath="$MONGO_ORCHESTRATION_HOME"/python
@@ -96,20 +96,20 @@ install_mlaunch_git() {
96
96
  python3 -V || true
97
97
  which pip || true
98
98
  which pip3 || true
99
-
99
+
100
100
  if false; then
101
101
  if ! virtualenv --version; then
102
102
  python3 `which pip3` install --user virtualenv
103
103
  export PATH=$HOME/.local/bin:$PATH
104
104
  virtualenv --version
105
105
  fi
106
-
106
+
107
107
  venvpath="$MONGO_ORCHESTRATION_HOME"/venv
108
108
  virtualenv -p python3 $venvpath
109
109
  . $venvpath/bin/activate
110
-
110
+
111
111
  pip3 install psutil pymongo
112
-
112
+
113
113
  git clone $repo mlaunch
114
114
  cd mlaunch
115
115
  git checkout origin/$branch
@@ -118,13 +118,13 @@ install_mlaunch_git() {
118
118
  else
119
119
  pip install --user 'virtualenv==13'
120
120
  export PATH=$HOME/.local/bin:$PATH
121
-
121
+
122
122
  venvpath="$MONGO_ORCHESTRATION_HOME"/venv
123
123
  virtualenv $venvpath
124
124
  . $venvpath/bin/activate
125
-
125
+
126
126
  pip install psutil pymongo
127
-
127
+
128
128
  git clone $repo mlaunch
129
129
  (cd mlaunch &&
130
130
  git checkout origin/$branch &&
@@ -133,24 +133,32 @@ install_mlaunch_git() {
133
133
  fi
134
134
  }
135
135
 
136
+ # This function sets followong global variables:
137
+ # server_cert_path
138
+ # server_ca_path
139
+ # server_client_cert_path
140
+ #
141
+ # These variables are used later to connect to processes via mongo client.
136
142
  calculate_server_args() {
137
143
  local mongo_version=`echo $MONGODB_VERSION |tr -d .`
138
-
144
+
139
145
  if test -z "$mongo_version"; then
140
146
  echo "$MONGODB_VERSION must be set and not contain only dots" 1>&2
141
147
  exit 3
142
148
  fi
143
-
149
+
144
150
  if test $mongo_version = latest; then
145
151
  mongo_version=49
146
152
  fi
147
153
 
148
154
  local args="--setParameter enableTestCommands=1"
149
-
150
- if test $mongo_version -ge 47; then
155
+
156
+ if test $mongo_version -ge 50; then
157
+ args="$args --setParameter acceptApiVersion2=1"
158
+ elif test $mongo_version -ge 47; then
151
159
  args="$args --setParameter acceptAPIVersion2=1"
152
160
  fi
153
-
161
+
154
162
  # diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
155
163
  # and mlaunch does not support specifying mongod-only parameters:
156
164
  # https://github.com/rueckstiess/mtools/issues/696
@@ -160,15 +168,31 @@ calculate_server_args() {
160
168
  fi
161
169
  local uri_options=
162
170
  if test "$TOPOLOGY" = replica-set; then
163
- args="$args --replicaset --name ruby-driver-rs --nodes 2 --arbiter"
171
+ args="$args --replicaset --name test-rs --nodes 2 --arbiter"
164
172
  export HAVE_ARBITER=1
165
173
  elif test "$TOPOLOGY" = sharded-cluster; then
166
- args="$args --replicaset --nodes 2 --sharded 1 --name ruby-driver-rs"
174
+ args="$args --replicaset --nodes 2 --sharded 1 --name test-rs"
167
175
  if test -z "$SINGLE_MONGOS"; then
168
176
  args="$args --mongos 2"
169
177
  fi
170
- else
178
+ elif test "$TOPOLOGY" = standalone; then
171
179
  args="$args --single"
180
+ elif test "$TOPOLOGY" = load-balanced; then
181
+ args="$args --replicaset --nodes 2 --sharded 1 --name test-rs --port 27117"
182
+ if test -z "$MRSS_ROOT"; then
183
+ echo "Please set MRSS_ROOT" 1>&2
184
+ exit 2
185
+ fi
186
+ if test -n "$SINGLE_MONGOS"; then
187
+ haproxy_config=$MRSS_ROOT/share/haproxy-1.conf
188
+ else
189
+ args="$args --mongos 2"
190
+ haproxy_config=$MRSS_ROOT/share/haproxy-2.conf
191
+ fi
192
+ uri_options="$uri_options&loadBalanced=true"
193
+ else
194
+ echo "Unknown topology: $TOPOLOGY" 1>&2
195
+ exit 1
172
196
  fi
173
197
  if test -n "$MMAPV1"; then
174
198
  args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
@@ -191,7 +215,6 @@ calculate_server_args() {
191
215
  fi
192
216
  fi
193
217
 
194
- local server_cert_path server_ca_path server_client_cert_path
195
218
  if test "$SSL" = ssl || test -n "$OCSP_ALGORITHM"; then
196
219
  if test -n "$OCSP_ALGORITHM"; then
197
220
  if test "$OCSP_MUST_STAPLE" = 1; then
@@ -270,7 +293,7 @@ calculate_server_args() {
270
293
  ocsp_args="$ocsp_args --fault $OCSP_STATUS"
271
294
  fi
272
295
  fi
273
-
296
+
274
297
  OCSP_ARGS="$ocsp_args"
275
298
  SERVER_ARGS="$args"
276
299
  URI_OPTIONS="$uri_options"
@@ -287,4 +310,58 @@ launch_ocsp_mock() {
287
310
  launch_server() {
288
311
  local dbdir="$1"
289
312
  python -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
313
+
314
+ if test "$TOPOLOGY" = sharded-cluster && test $MONGODB_VERSION = 3.6; then
315
+ # On 3.6 server the sessions collection is not immediately available,
316
+ # so we run the refreshLogicalSessionCacheNow command on the config server
317
+ # and again on each mongos in order for the mongoses
318
+ # to correctly report logicalSessionTimeoutMinutes.
319
+ mongos_regex="\s*mongos\s+([0-9]+)\s+running\s+[0-9]+"
320
+ config_server_regex="\s*config\sserver\s+([0-9]+)\s+running\s+[0-9]+"
321
+ config_server=""
322
+ mongoses=()
323
+ if test "$AUTH" = auth
324
+ then
325
+ base_url="mongodb://bob:pwd123@localhost"
326
+ else
327
+ base_url="mongodb://localhost"
328
+ fi
329
+ if test "$SSL" = "ssl"
330
+ then
331
+ mongo_command="${BINDIR}/mongo --ssl --sslPEMKeyFile $server_cert_path --sslCAFile $server_ca_path"
332
+ else
333
+ mongo_command="${BINDIR}/mongo"
334
+ fi
335
+
336
+ while read -r line
337
+ do
338
+ if [[ $line =~ $config_server_regex ]]
339
+ then
340
+ port="${BASH_REMATCH[1]}"
341
+ config_server="${base_url}:${port}"
342
+ fi
343
+ if [[ $line =~ $mongos_regex ]]
344
+ then
345
+ port="${BASH_REMATCH[1]}"
346
+ mongoses+=("${base_url}:${port}")
347
+ fi
348
+ done < <(python -m mtools.mlaunch.mlaunch list --dir "$dbdir" --binarypath "$BINDIR")
349
+
350
+ if [ -n "$config_server" ]; then
351
+ ${mongo_command} "$config_server" --eval 'db.adminCommand("refreshLogicalSessionCacheNow")'
352
+ for mongos in ${mongoses[*]}
353
+ do
354
+ ${mongo_command} "$mongos" --eval 'db.adminCommand("refreshLogicalSessionCacheNow")'
355
+ done
356
+ fi
357
+ fi
358
+
359
+ if test "$TOPOLOGY" = load-balanced; then
360
+ if test -z "$haproxy_config"; then
361
+ echo haproxy_config should have been set 1>&2
362
+ exit 3
363
+ fi
364
+
365
+ haproxy -D -f $haproxy_config -p $mongodb_dir/haproxy.pid
366
+ fi
290
367
  }
@@ -1,4 +1,4 @@
1
- TOOLCHAIN_VERSION=289d4bec7c61e88000cea582c05fd8073b932122
1
+ TOOLCHAIN_VERSION=43b0b8a644363c4052b9bf8221320a1828fe01a5
2
2
 
3
3
  set_env_java() {
4
4
  ls -l /opt || true
@@ -9,13 +9,13 @@ set_env_java() {
9
9
  export JAVACMD=/opt/java/jdk8/bin/java
10
10
  #export PATH=$PATH:/opt/java/jdk8/bin
11
11
  fi
12
-
12
+
13
13
  # ppc64le has it in a different place
14
14
  if test -z "$JAVACMD" && [ -f /usr/lib/jvm/java-1.8.0/bin/java ]; then
15
15
  export JAVACMD=/usr/lib/jvm/java-1.8.0/bin/java
16
16
  #export PATH=$PATH:/usr/lib/jvm/java-1.8.0/bin
17
17
  fi
18
-
18
+
19
19
  if true; then
20
20
  # newer
21
21
  # rhel71-ppc, https://jira.mongodb.org/browse/BUILD-9231
@@ -34,7 +34,7 @@ set_env_java() {
34
34
  # we will try the /usr/lib/jvm then
35
35
  fi
36
36
  fi
37
-
37
+
38
38
  if test -n "$JAVACMD"; then
39
39
  eval $JAVACMD -version
40
40
  elif which java 2>/dev/null; then
@@ -68,15 +68,18 @@ set_env_ruby() {
68
68
  export PATH=`pwd`/ruby-head/bin:`pwd`/ruby-head/lib/ruby/gems/2.6.0/bin:$PATH
69
69
  ruby --version
70
70
  ruby --version |grep dev
71
+ elif test "$SYSTEM_RUBY" = 1; then
72
+ # Nothing
73
+ :
71
74
  else
72
75
  if test "$USE_OPT_TOOLCHAIN" = 1; then
73
- # nothing, also PATH is already set
76
+ # Nothing, also PATH is already set
74
77
  :
75
78
  elif true; then
76
79
 
77
80
  # For testing toolchains:
78
81
  #toolchain_url=https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/`host_distro`/f11598d091441ffc8d746aacfdc6c26741a3e629/mongo_ruby_driver_toolchain_`host_distro |tr - _`_patch_f11598d091441ffc8d746aacfdc6c26741a3e629_5e46f2793e8e866f36eda2c5_20_02_14_19_18_18.tar.gz
79
- toolchain_url=http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/ruby-toolchain-`host_distro`-$TOOLCHAIN_VERSION.tar.xz
82
+ toolchain_url=http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/$TOOLCHAIN_VERSION/`host_distro`/$RVM_RUBY.tar.xz
80
83
  curl --retry 3 -fL $toolchain_url |tar Jxf -
81
84
  export PATH=`pwd`/rubies/$RVM_RUBY/bin:$PATH
82
85
  #export PATH=`pwd`/rubies/python/3/bin:$PATH
data/spec/spec_helper.rb CHANGED
@@ -30,6 +30,13 @@ require "yaml"
30
30
  require 'support/spec_config'
31
31
 
32
32
  if SpecConfig.instance.active_support?
33
+ require "active_support/version"
34
+ if ActiveSupport.version >= Gem::Version.new(7)
35
+ # ActiveSupport wants us to require ALL of it all of the time.
36
+ # See: https://github.com/rails/rails/issues/43851,
37
+ # https://github.com/rails/rails/issues/43889, etc.
38
+ require 'active_support'
39
+ end
33
40
  require "active_support/time"
34
41
  require 'bson/active_support'
35
42
  end
@@ -64,7 +64,8 @@ describe 'Driver common bson tests' do
64
64
  let(:valid_errors) do
65
65
  [
66
66
  BSON::Decimal128::InvalidString,
67
- BSON::Decimal128::InvalidRange
67
+ BSON::Decimal128::InvalidRange,
68
+ BSON::Decimal128::UnrepresentablePrecision,
68
69
  ]
69
70
  end
70
71
 
data.tar.gz.sig CHANGED
Binary file