mongoid 7.2.1 → 7.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +1 -1
- data/lib/mongoid.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
- data/lib/mongoid/association/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/proxy.rb +1 -1
- data/lib/mongoid/attributes.rb +8 -1
- data/lib/mongoid/criteria.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/interceptable.rb +1 -1
- data/lib/mongoid/matcher.rb +19 -43
- data/lib/mongoid/matcher/elem_match.rb +2 -1
- data/lib/mongoid/matcher/expression.rb +5 -14
- data/lib/mongoid/matcher/field_expression.rb +4 -5
- data/lib/mongoid/reloadable.rb +5 -0
- data/lib/mongoid/validatable/associated.rb +1 -1
- data/lib/mongoid/validatable/presence.rb +3 -3
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/config_generator.rb +8 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
- data/spec/integration/app_spec.rb +139 -82
- data/spec/integration/document_spec.rb +21 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +46 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +96 -0
- data/spec/lite_spec_helper.rb +2 -3
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +17 -4
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +17 -0
- data/spec/mongoid/attributes_spec.rb +241 -0
- data/spec/mongoid/clients/options_spec.rb +2 -0
- data/spec/mongoid/contextual/atomic_spec.rb +17 -4
- data/spec/mongoid/criteria_spec.rb +4 -0
- data/spec/mongoid/document_fields_spec.rb +26 -0
- data/spec/mongoid/document_query_spec.rb +51 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +20 -8
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +68 -88
- data/spec/mongoid/matcher/extract_attribute_spec.rb +3 -13
- data/spec/mongoid/persistable/settable_spec.rb +30 -0
- data/spec/mongoid/persistable_spec.rb +2 -2
- data/spec/shared/bin/get-mongodb-download-url +17 -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 +19 -4
- data/spec/shared/lib/mrss/constraints.rb +46 -8
- data/spec/shared/lib/mrss/docker_runner.rb +10 -1
- data/spec/shared/lib/mrss/lite_constraints.rb +16 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +79 -33
- data/spec/shared/lib/mrss/spec_organizer.rb +32 -2
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +122 -29
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/server.sh +58 -11
- data/spec/shared/shlib/set_env.sh +4 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/models/address.rb +4 -0
- data/spec/support/models/mop.rb +10 -0
- data/spec/support/models/person.rb +9 -0
- data/spec/support/spec_config.rb +8 -0
- metadata +555 -527
- metadata.gz.sig +0 -0
@@ -1,3 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# encoding: utf-8
|
3
|
+
|
1
4
|
autoload :JSON, 'json'
|
2
5
|
autoload :FileUtils, 'fileutils'
|
3
6
|
autoload :Find, 'find'
|
@@ -22,18 +25,28 @@ module Mrss
|
|
22
25
|
end
|
23
26
|
|
24
27
|
def initialize(root: nil, classifiers:, priority_order:,
|
25
|
-
spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil
|
28
|
+
spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil,
|
29
|
+
randomize: false
|
26
30
|
)
|
27
31
|
@spec_root = spec_root || File.join(root, 'spec')
|
28
32
|
@classifiers = classifiers
|
29
33
|
@priority_order = priority_order
|
30
34
|
@rspec_json_path = rspec_json_path || File.join(root, 'tmp/rspec.json')
|
31
35
|
@rspec_all_json_path = rspec_all_json_path || File.join(root, 'tmp/rspec-all.json')
|
36
|
+
@randomize = !!randomize
|
32
37
|
end
|
33
38
|
|
34
39
|
attr_reader :spec_root, :classifiers, :priority_order
|
35
40
|
attr_reader :rspec_json_path, :rspec_all_json_path
|
36
41
|
|
42
|
+
def randomize?
|
43
|
+
@randomize
|
44
|
+
end
|
45
|
+
|
46
|
+
def seed
|
47
|
+
@seed ||= (rand * 100_000).to_i
|
48
|
+
end
|
49
|
+
|
37
50
|
def buckets
|
38
51
|
@buckets ||= {}.tap do |buckets|
|
39
52
|
Find.find(spec_root) do |path|
|
@@ -78,10 +91,20 @@ module Mrss
|
|
78
91
|
end
|
79
92
|
|
80
93
|
def run
|
94
|
+
run_buckets(*buckets.keys)
|
95
|
+
end
|
96
|
+
|
97
|
+
def run_buckets(*buckets)
|
81
98
|
FileUtils.rm_f(rspec_all_json_path)
|
82
99
|
|
100
|
+
buckets.each do |bucket|
|
101
|
+
if bucket && !self.buckets[bucket]
|
102
|
+
raise "Unknown bucket #{bucket}"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
buckets = Hash[self.buckets.select { |k, v| buckets.include?(k) }]
|
106
|
+
|
83
107
|
failed = []
|
84
|
-
buckets = self.buckets.dup
|
85
108
|
|
86
109
|
priority_order.each do |category|
|
87
110
|
if files = buckets.delete(category)
|
@@ -109,8 +132,12 @@ module Mrss
|
|
109
132
|
puts "Running #{category.to_s.gsub('_', ' ')} tests"
|
110
133
|
FileUtils.rm_f(rspec_json_path)
|
111
134
|
cmd = %w(rspec) + paths
|
135
|
+
if randomize?
|
136
|
+
cmd += %W(--order rand:#{seed})
|
137
|
+
end
|
112
138
|
|
113
139
|
begin
|
140
|
+
puts "Running #{cmd.join(' ')}"
|
114
141
|
ChildProcessHelper.check_call(cmd)
|
115
142
|
ensure
|
116
143
|
if File.exist?(rspec_json_path)
|
@@ -136,6 +163,9 @@ module Mrss
|
|
136
163
|
end
|
137
164
|
new.delete('version')
|
138
165
|
new.delete('summary_line')
|
166
|
+
# The spec organizer runs all buckets with the same seed, hence
|
167
|
+
# we can drop the seed from new results.
|
168
|
+
new.delete('seed')
|
139
169
|
unless new.empty?
|
140
170
|
raise "Unhandled rspec results keys: #{new.keys.join(', ')}"
|
141
171
|
end
|
@@ -58,6 +58,7 @@ FROM <%= base_image %>
|
|
58
58
|
# JRuby: openjdk-8-jre-headless
|
59
59
|
# Server dependencies: libsnmp30 libcurl3/libcurl4
|
60
60
|
# Determining OS we are running on: lsb-release
|
61
|
+
# Load balancer testing: haproxy
|
61
62
|
# Kerberos testing: krb5-user
|
62
63
|
# Local Kerberos server: krb5-kdc krb5-admin-server
|
63
64
|
# Installing mlaunch from git: git
|
@@ -65,7 +66,7 @@ FROM <%= base_image %>
|
|
65
66
|
# nio4r on JRuby: libgmp-dev
|
66
67
|
# Snappy compression: libsnappy-dev
|
67
68
|
# nokogiri: zlib1g-dev
|
68
|
-
# Mongoid testing: tzdata
|
69
|
+
# Mongoid testing: tzdata shared-mime-info
|
69
70
|
# Mongoid application testing: nodejs (8.x or newer)
|
70
71
|
#
|
71
72
|
# We currently use Python 2-compatible version of mtools, which
|
@@ -76,20 +77,42 @@ FROM <%= base_image %>
|
|
76
77
|
<% packages = %w(
|
77
78
|
lsb-release bzip2 curl zsh
|
78
79
|
git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
|
79
|
-
libsnmp30
|
80
80
|
krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
|
81
|
-
|
82
|
-
|
81
|
+
haproxy
|
82
|
+
python3-pip
|
83
|
+
tzdata shared-mime-info
|
83
84
|
) %>
|
84
85
|
|
85
|
-
|
86
|
-
|
86
|
+
<% if distro =~ /ubuntu1404/ %>
|
87
|
+
# For building python & setuptools
|
88
|
+
<% packages += %w(libssl-dev unzip) %>
|
89
|
+
<% end %>
|
90
|
+
|
91
|
+
<% if distro !~ /ubuntu2004/ %>
|
92
|
+
<% packages += %w(python2.7-dev) %>
|
93
|
+
<% end %>
|
94
|
+
|
95
|
+
<% if distro =~ /ubuntu2004/ %>
|
96
|
+
<% packages << 'libsnmp35' %>
|
97
|
+
<% else %>
|
98
|
+
<% packages << 'libsnmp30' %>
|
99
|
+
<% end %>
|
100
|
+
|
101
|
+
<% if distro !~ /ubuntu2004/ %>
|
102
|
+
<% packages << 'python-pip' %>
|
103
|
+
<% end %>
|
104
|
+
|
105
|
+
<% if distro =~ /debian10/ %>
|
106
|
+
<% packages << 'openjdk-11-jre-headless' %>
|
107
|
+
<% elsif distro =~ /ubuntu1404/ %>
|
108
|
+
# Ubuntu 14.04 only has openjdk 7, this is too old to be useful
|
109
|
+
<% else %>
|
87
110
|
<% packages << 'openjdk-8-jre-headless' %>
|
88
111
|
<% end %>
|
89
112
|
|
90
113
|
# ubuntu1404, ubuntu1604: libcurl3
|
91
|
-
# ubuntu1804: libcurl4
|
92
|
-
<% if distro =~ /ubuntu1804/ %>
|
114
|
+
# ubuntu1804, ubuntu2004, debian10: libcurl4
|
115
|
+
<% if distro =~ /ubuntu1804|ubuntu2004|debian10/ %>
|
93
116
|
<% packages << 'libcurl4' %>
|
94
117
|
<% else %>
|
95
118
|
<% packages << 'libcurl3' %>
|
@@ -99,9 +122,36 @@ FROM <%= base_image %>
|
|
99
122
|
<% packages << 'nodejs' %>
|
100
123
|
<% end %>
|
101
124
|
|
125
|
+
<% if distro =~ /ubuntu2004/ %>
|
126
|
+
<% packages += %w(ruby ruby2.7 bundler python2 python2-dev) %>
|
127
|
+
<% end %>
|
128
|
+
|
102
129
|
RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
|
103
130
|
<% else %>
|
104
131
|
|
132
|
+
<% if distro =~ /rhel6/ %>
|
133
|
+
|
134
|
+
# CentOS 6 is dead - to use it retrieve the packages from vault:
|
135
|
+
# https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
|
136
|
+
|
137
|
+
<%
|
138
|
+
|
139
|
+
cfg = <<-CFG
|
140
|
+
[base]
|
141
|
+
name=CentOS-$releasever - Base
|
142
|
+
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
|
143
|
+
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
|
144
|
+
baseurl=http://vault.centos.org/6.10/os/x86_64/
|
145
|
+
gpgcheck=1
|
146
|
+
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
|
147
|
+
CFG
|
148
|
+
|
149
|
+
%>
|
150
|
+
|
151
|
+
RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
|
152
|
+
|
153
|
+
<% end %>
|
154
|
+
|
105
155
|
# Enterprise server: net-snmp
|
106
156
|
# lsb_release: redhat-lsb-core
|
107
157
|
# our runner scripts: which
|
@@ -118,7 +168,7 @@ FROM <%= base_image %>
|
|
118
168
|
|
119
169
|
RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
|
120
170
|
krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
|
121
|
-
net-snmp
|
171
|
+
net-snmp python3
|
122
172
|
|
123
173
|
<% if distro =~ /rhel6/ %>
|
124
174
|
|
@@ -134,27 +184,34 @@ FROM <%= base_image %>
|
|
134
184
|
RUN yum install -y python-devel
|
135
185
|
|
136
186
|
<% end %>
|
137
|
-
|
187
|
+
|
138
188
|
<% end %>
|
139
189
|
|
140
190
|
<% if preload? %>
|
141
191
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
192
|
+
<% if distro =~ /ubuntu1404/ %>
|
193
|
+
|
194
|
+
# I couldn't find a prebuilt package of anything more recent than 2.7.6
|
195
|
+
# for 14.04.
|
196
|
+
RUN curl --retry 3 -fL https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tar.xz | \
|
197
|
+
tar xfJ - && \
|
198
|
+
cd Python-2.7.16 && \
|
199
|
+
./configure && \
|
200
|
+
nice make -j4 && \
|
201
|
+
make install && \
|
202
|
+
cd .. && rm -rf Python-2.7.16
|
203
|
+
|
204
|
+
ENV PATH=/usr/local/bin:$PATH
|
205
|
+
|
206
|
+
RUN curl --retry 3 -fL -o setuptools-44.1.1.zip https://files.pythonhosted.org/packages/b2/40/4e00501c204b457f10fe410da0c97537214b2265247bc9a5bc6edd55b9e4/setuptools-44.1.1.zip && \
|
207
|
+
unzip setuptools-44.1.1.zip && \
|
208
|
+
cd setuptools-44.1.1 && \
|
209
|
+
python setup.py install && \
|
210
|
+
cd .. && rm -rf setuptools-44.1.1
|
211
|
+
|
212
|
+
<% end%>
|
213
|
+
|
214
|
+
<% if true || distro =~ /rhel|ubuntu1604/ %>
|
158
215
|
|
159
216
|
# Ubuntu 12.04 ships pip 1.0 which is ancient and does not work.
|
160
217
|
#
|
@@ -168,17 +225,48 @@ FROM <%= base_image %>
|
|
168
225
|
# therefore install it the manual way.
|
169
226
|
#
|
170
227
|
# https://pip.pypa.io/en/stable/installing/
|
171
|
-
RUN curl --retry 3 -fL https://
|
228
|
+
RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/2.7/get-pip.py | python2
|
229
|
+
|
230
|
+
<% end %>
|
172
231
|
|
232
|
+
# Current virtualenv fails with
|
233
|
+
# https://github.com/pypa/virtualenv/issues/1630
|
234
|
+
<% if distro =~ /ubuntu2004/ %>
|
235
|
+
RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
|
236
|
+
<% else %>
|
237
|
+
RUN python2 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]'
|
173
238
|
<% end %>
|
174
239
|
|
175
240
|
RUN pip --version && \
|
176
241
|
pip install mtools-legacy[mlaunch]
|
177
242
|
|
178
243
|
<% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
|
179
|
-
|
244
|
+
# ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
|
245
|
+
# as specified by dependencies, causing OCSP mock to not work.
|
246
|
+
RUN python3 -mpip install asn1crypto oscrypto flask --upgrade
|
180
247
|
<% end %>
|
181
248
|
|
249
|
+
<% unless ruby_head? || system_ruby? %>
|
250
|
+
|
251
|
+
RUN curl --retry 3 -fL <%= ruby_toolchain_url %> |tar -xC /opt -Jf -
|
252
|
+
ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
|
253
|
+
USE_OPT_TOOLCHAIN=1
|
254
|
+
#ENV PATH=/opt/rubies/python/3/bin:$PATH
|
255
|
+
|
256
|
+
<% end %>
|
257
|
+
|
258
|
+
RUN curl --retry 3 -fL <%= server_download_url %> |tar xzf - && \
|
259
|
+
mv mongo*/ /opt/mongodb
|
260
|
+
ENV USE_OPT_MONGODB=1 USE_SYSTEM_PYTHON_PACKAGES=1
|
261
|
+
|
262
|
+
<% end %>
|
263
|
+
|
264
|
+
<% if distro =~ /debian|ubuntu/ %>
|
265
|
+
# mkdir was moved from /usr/bin to /bin and MongoDB's distros
|
266
|
+
# apparently keep using the old location.
|
267
|
+
# This definitely affects debian10.
|
268
|
+
# https://stackoverflow.com/questions/64653051/make-usr-bin-mkdir-command-not-found-during-gem-install-nokogiri-in-ubuntu
|
269
|
+
RUN test -f /usr/bin/mkdir || ln -s /bin/mkdir /usr/bin/mkdir
|
182
270
|
<% end %>
|
183
271
|
|
184
272
|
WORKDIR /app
|
@@ -191,7 +279,12 @@ WORKDIR /app
|
|
191
279
|
COPY lib/<%= project_lib_subdir %>/version.rb lib/<%= project_lib_subdir %>/version.rb
|
192
280
|
RUN bundle install
|
193
281
|
COPY .evergreen/patch-debuggers .evergreen/patch-debuggers
|
194
|
-
|
282
|
+
<% if system_ruby? %>
|
283
|
+
# Running under docker with root access
|
284
|
+
RUN .evergreen/patch-debuggers /var/lib/gems
|
285
|
+
<% else %>
|
286
|
+
RUN .evergreen/patch-debuggers /opt/rubies
|
287
|
+
<% end %>
|
195
288
|
|
196
289
|
<% end %>
|
197
290
|
|
@@ -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/server.sh
CHANGED
@@ -57,13 +57,22 @@ prepare_server_from_url() {
|
|
57
57
|
|
58
58
|
install_mlaunch_virtualenv() {
|
59
59
|
python2 -V || true
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
60
|
+
if ! python2 -m virtualenv -h >/dev/null; then
|
61
|
+
# Current virtualenv fails with
|
62
|
+
# https://github.com/pypa/virtualenv/issues/1630
|
63
|
+
python2 -m pip install 'virtualenv<20' --user
|
64
|
+
fi
|
65
|
+
if test "$USE_SYSTEM_PYTHON_PACKAGES" = 1 &&
|
66
|
+
python2 -m pip list |grep mtools-legacy
|
67
|
+
then
|
68
|
+
# Use the existing mtools-legacy
|
69
|
+
:
|
70
|
+
else
|
71
|
+
venvpath="$MONGO_ORCHESTRATION_HOME"/venv
|
72
|
+
python2 -m virtualenv -p python2 $venvpath
|
73
|
+
. $venvpath/bin/activate
|
74
|
+
pip install 'mtools-legacy[mlaunch]'
|
75
|
+
fi
|
67
76
|
}
|
68
77
|
|
69
78
|
install_mlaunch_pip() {
|
@@ -126,11 +135,24 @@ install_mlaunch_git() {
|
|
126
135
|
|
127
136
|
calculate_server_args() {
|
128
137
|
local mongo_version=`echo $MONGODB_VERSION |tr -d .`
|
138
|
+
|
139
|
+
if test -z "$mongo_version"; then
|
140
|
+
echo "$MONGODB_VERSION must be set and not contain only dots" 1>&2
|
141
|
+
exit 3
|
142
|
+
fi
|
143
|
+
|
129
144
|
if test $mongo_version = latest; then
|
130
|
-
mongo_version=
|
145
|
+
mongo_version=49
|
131
146
|
fi
|
132
147
|
|
133
148
|
local args="--setParameter enableTestCommands=1"
|
149
|
+
|
150
|
+
if test $mongo_version -ge 50; then
|
151
|
+
args="$args --setParameter acceptApiVersion2=1"
|
152
|
+
elif test $mongo_version -ge 47; then
|
153
|
+
args="$args --setParameter acceptAPIVersion2=1"
|
154
|
+
fi
|
155
|
+
|
134
156
|
# diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
|
135
157
|
# and mlaunch does not support specifying mongod-only parameters:
|
136
158
|
# https://github.com/rueckstiess/mtools/issues/696
|
@@ -140,15 +162,31 @@ calculate_server_args() {
|
|
140
162
|
fi
|
141
163
|
local uri_options=
|
142
164
|
if test "$TOPOLOGY" = replica-set; then
|
143
|
-
args="$args --replicaset --name
|
165
|
+
args="$args --replicaset --name test-rs --nodes 2 --arbiter"
|
144
166
|
export HAVE_ARBITER=1
|
145
167
|
elif test "$TOPOLOGY" = sharded-cluster; then
|
146
|
-
args="$args --replicaset --nodes
|
168
|
+
args="$args --replicaset --nodes 2 --sharded 1 --name test-rs"
|
147
169
|
if test -z "$SINGLE_MONGOS"; then
|
148
170
|
args="$args --mongos 2"
|
149
171
|
fi
|
150
|
-
|
172
|
+
elif test "$TOPOLOGY" = standalone; then
|
151
173
|
args="$args --single"
|
174
|
+
elif test "$TOPOLOGY" = load-balanced; then
|
175
|
+
args="$args --replicaset --nodes 2 --sharded 1 --name test-rs --port 27117"
|
176
|
+
if test -z "$MRSS_ROOT"; then
|
177
|
+
echo "Please set MRSS_ROOT" 1>&2
|
178
|
+
exit 2
|
179
|
+
fi
|
180
|
+
if test -n "$SINGLE_MONGOS"; then
|
181
|
+
haproxy_config=$MRSS_ROOT/share/haproxy-1.conf
|
182
|
+
else
|
183
|
+
args="$args --mongos 2"
|
184
|
+
haproxy_config=$MRSS_ROOT/share/haproxy-1.conf
|
185
|
+
fi
|
186
|
+
uri_options="$uri_options&loadBalanced=true"
|
187
|
+
else
|
188
|
+
echo "Unknown topology: $TOPOLOGY" 1>&2
|
189
|
+
exit 1
|
152
190
|
fi
|
153
191
|
if test -n "$MMAPV1"; then
|
154
192
|
args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
|
@@ -267,4 +305,13 @@ launch_ocsp_mock() {
|
|
267
305
|
launch_server() {
|
268
306
|
local dbdir="$1"
|
269
307
|
python -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
|
308
|
+
|
309
|
+
if test "$TOPOLOGY" = load-balanced; then
|
310
|
+
if test -z "$haproxy_config"; then
|
311
|
+
echo haproxy_config should have been set 1>&2
|
312
|
+
exit 3
|
313
|
+
fi
|
314
|
+
|
315
|
+
haproxy -D -f $haproxy_config -p $mongodb_dir/haproxy.pid
|
316
|
+
fi
|
270
317
|
}
|