bson 4.13.0 → 4.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/bson/big_decimal.rb +67 -0
- data/lib/bson/decimal128/builder.rb +9 -5
- data/lib/bson/decimal128.rb +17 -3
- data/lib/bson/float.rb +1 -1
- data/lib/bson/version.rb +1 -1
- data/lib/bson.rb +2 -1
- data/lib/bson_native.bundle +0 -0
- data/spec/bson/big_decimal_spec.rb +316 -0
- data/spec/bson/decimal128_spec.rb +16 -0
- data/spec/bson/hash_spec.rb +32 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/cluster_config.rb +14 -4
- data/spec/shared/lib/mrss/constraints.rb +51 -11
- data/spec/shared/lib/mrss/docker_runner.rb +8 -2
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/lib/mrss/spec_organizer.rb +29 -2
- data/spec/shared/share/Dockerfile.erb +147 -40
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +100 -23
- data/spec/shared/shlib/set_env.sh +9 -6
- data/spec/spec_helper.rb +7 -0
- data/spec/spec_tests/common_driver_spec.rb +2 -1
- data.tar.gz.sig +0 -0
- metadata +117 -103
- metadata.gz.sig +0 -0
@@ -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
|
-
|
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-
|
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
|
-
|
82
|
-
|
85
|
+
haproxy
|
86
|
+
python3-pip
|
87
|
+
tzdata shared-mime-info
|
83
88
|
) %>
|
84
89
|
|
85
|
-
|
86
|
-
|
87
|
-
<% packages
|
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
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
<%
|
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 |
|
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
|
-
|
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 -
|
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
|
data/spec/shared/shlib/distro.sh
CHANGED
@@ -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
|
-
|
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.
|
data/spec/shared/shlib/server.sh
CHANGED
@@ -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
|
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
|
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
|
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
|
-
|
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=
|
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
|
-
#
|
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
|
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
|
data.tar.gz.sig
CHANGED
Binary file
|