bson 5.0.0 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +91 -7
  3. data/Rakefile +63 -39
  4. data/ext/bson/read.c +18 -3
  5. data/ext/bson/util.c +1 -1
  6. data/ext/bson/write.c +4 -0
  7. data/lib/bson/decimal128/builder.rb +1 -1
  8. data/lib/bson/object_id.rb +11 -1
  9. data/lib/bson/version.rb +2 -1
  10. data/spec/bson/object_id_spec.rb +14 -0
  11. metadata +7 -80
  12. checksums.yaml.gz.sig +0 -0
  13. data/spec/shared/LICENSE +0 -20
  14. data/spec/shared/bin/get-mongodb-download-url +0 -17
  15. data/spec/shared/bin/s3-copy +0 -45
  16. data/spec/shared/bin/s3-upload +0 -69
  17. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  18. data/spec/shared/lib/mrss/cluster_config.rb +0 -231
  19. data/spec/shared/lib/mrss/constraints.rb +0 -378
  20. data/spec/shared/lib/mrss/docker_runner.rb +0 -298
  21. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
  22. data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
  23. data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
  24. data/spec/shared/lib/mrss/server_version_registry.rb +0 -113
  25. data/spec/shared/lib/mrss/session_registry.rb +0 -69
  26. data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
  27. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  28. data/spec/shared/lib/mrss/utils.rb +0 -37
  29. data/spec/shared/share/Dockerfile.erb +0 -321
  30. data/spec/shared/share/haproxy-1.conf +0 -16
  31. data/spec/shared/share/haproxy-2.conf +0 -17
  32. data/spec/shared/shlib/config.sh +0 -27
  33. data/spec/shared/shlib/distro.sh +0 -74
  34. data/spec/shared/shlib/server.sh +0 -416
  35. data/spec/shared/shlib/set_env.sh +0 -169
  36. data.tar.gz.sig +0 -0
  37. metadata.gz.sig +0 -2
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- require 'singleton'
5
-
6
- module Mrss
7
-
8
- def self.patch_mongo_for_session_registry
9
-
10
- Mongo::Client.class_eval do
11
- alias :get_session_without_tracking :get_session
12
-
13
- def get_session(options = {})
14
- get_session_without_tracking(options).tap do |session|
15
- SessionRegistry.instance.register(session)
16
- end
17
- end
18
- end
19
-
20
- Mongo::Session.class_eval do
21
- alias :end_session_without_tracking :end_session
22
-
23
- def end_session
24
- SessionRegistry.instance.unregister(self)
25
- end_session_without_tracking
26
- end
27
- end
28
- end
29
- end
30
-
31
- module Mrss
32
- class SessionRegistry
33
- include Singleton
34
-
35
- def initialize
36
- @registry = {}
37
- end
38
-
39
- def register(session)
40
- @registry[session.session_id] = session if session
41
- end
42
-
43
- def unregister(session)
44
- @registry.delete(session.session_id) unless session.ended?
45
- end
46
-
47
- def verify_sessions_ended!
48
- @registry.delete_if { |_, session| session.ended? }
49
-
50
- unless @registry.empty?
51
- sessions = @registry.map { |_, session| session }
52
- raise "Session registry contains live sessions: #{sessions.join(', ')}"
53
- end
54
- end
55
-
56
- def clear_registry
57
- @registry = {}
58
- end
59
- end
60
- end
@@ -1,179 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- autoload :JSON, 'json'
5
- autoload :FileUtils, 'fileutils'
6
- autoload :Find, 'find'
7
-
8
- module Mrss
9
-
10
- autoload :ChildProcessHelper, 'mrss/child_process_helper'
11
-
12
- # Organizes and runs all of the tests in the test suite in batches.
13
- #
14
- # Organizing the tests in batches serves two purposes:
15
- #
16
- # 1. This allows running unit tests before integration tests, therefore
17
- # in theory revealing failures quicker on average.
18
- # 2. This allows running some tests that have high intermittent failure rate
19
- # in their own test process.
20
- #
21
- # This class aggregates RSpec results after the test runs.
22
- class SpecOrganizer
23
-
24
- class BucketsNotPrioritized < StandardError
25
- end
26
-
27
- def initialize(root: nil, classifiers:, priority_order:,
28
- spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil,
29
- randomize: false
30
- )
31
- @spec_root = spec_root || File.join(root, 'spec')
32
- @classifiers = classifiers
33
- @priority_order = priority_order
34
- @rspec_json_path = rspec_json_path || File.join(root, 'tmp/rspec.json')
35
- @rspec_all_json_path = rspec_all_json_path || File.join(root, 'tmp/rspec-all.json')
36
- @randomize = !!randomize
37
- end
38
-
39
- attr_reader :spec_root, :classifiers, :priority_order
40
- attr_reader :rspec_json_path, :rspec_all_json_path
41
-
42
- def randomize?
43
- @randomize
44
- end
45
-
46
- def seed
47
- @seed ||= (rand * 100_000).to_i
48
- end
49
-
50
- def buckets
51
- @buckets ||= {}.tap do |buckets|
52
- Find.find(spec_root) do |path|
53
- next unless File.file?(path)
54
- next unless path =~ /_spec\.rb\z/
55
- rel_path = path[(spec_root.length + 1)..path.length]
56
-
57
- found = false
58
- classifiers.each do |(regexp, category)|
59
- if regexp =~ rel_path
60
- buckets[category] ||= []
61
- buckets[category] << File.join('spec', rel_path)
62
- found = true
63
- break
64
- end
65
- end
66
-
67
- unless found
68
- buckets[nil] ||= []
69
- buckets[nil] << File.join('spec', rel_path)
70
- end
71
- end
72
- end.freeze
73
- end
74
-
75
- def ordered_buckets
76
- @ordered_buckets ||= {}.tap do |ordered_buckets|
77
- buckets = self.buckets.dup
78
- priority_order.each do |category|
79
- files = buckets.delete(category)
80
- ordered_buckets[category] = files
81
- end
82
-
83
- if files = buckets.delete(nil)
84
- ordered_buckets[nil] = files
85
- end
86
-
87
- unless buckets.empty?
88
- raise BucketsNotPrioritized, "Some buckets were not prioritized: #{buckets.keys.map(&:to_s).join(', ')}"
89
- end
90
- end.freeze
91
- end
92
-
93
- def run
94
- run_buckets(*buckets.keys)
95
- end
96
-
97
- def run_buckets(*buckets)
98
- FileUtils.rm_f(rspec_all_json_path)
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
-
107
- failed = []
108
-
109
- priority_order.each do |category|
110
- if files = buckets.delete(category)
111
- unless run_files(category, files)
112
- failed << category
113
- end
114
- end
115
- end
116
- if files = buckets.delete(nil)
117
- unless run_files('remaining', files)
118
- failed << 'remaining'
119
- end
120
- end
121
-
122
- unless buckets.empty?
123
- raise "Some buckets were not executed: #{buckets.keys.map(&:to_s).join(', ')}"
124
- end
125
-
126
- if failed.any?
127
- raise "The following buckets failed: #{failed.map(&:to_s).join(', ')}"
128
- end
129
- end
130
-
131
- def run_files(category, paths)
132
- puts "Running #{category.to_s.gsub('_', ' ')} tests"
133
- FileUtils.rm_f(rspec_json_path)
134
- cmd = %w(rspec) + paths
135
- if randomize?
136
- cmd += %W(--order rand:#{seed})
137
- end
138
-
139
- begin
140
- puts "Running #{cmd.join(' ')}"
141
- ChildProcessHelper.check_call(cmd)
142
- ensure
143
- if File.exist?(rspec_json_path)
144
- if File.exist?(rspec_all_json_path)
145
- merge_rspec_results
146
- else
147
- FileUtils.cp(rspec_json_path, rspec_all_json_path)
148
- end
149
- end
150
- end
151
-
152
- true
153
- rescue ChildProcessHelper::SpawnError
154
- false
155
- end
156
-
157
- def merge_rspec_results
158
- all = JSON.parse(File.read(rspec_all_json_path))
159
- new = JSON.parse(File.read(rspec_json_path))
160
- all['examples'] += new.delete('examples')
161
- new.delete('summary').each do |k, v|
162
- all['summary'][k] += v
163
- end
164
- new.delete('version')
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')
169
- unless new.empty?
170
- raise "Unhandled rspec results keys: #{new.keys.join(', ')}"
171
- end
172
- # We do not merge summary lines, delete them from aggregated results
173
- all.delete('summary_line')
174
- File.open(rspec_all_json_path, 'w') do |f|
175
- f << JSON.dump(all)
176
- end
177
- end
178
- end
179
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
- # encoding: utf-8
3
-
4
- module Mrss
5
- module Utils
6
- extend self
7
-
8
- def print_backtrace(dest=STDERR)
9
- raise
10
- rescue => e
11
- dest.puts e.backtrace.join("\n")
12
- end
13
-
14
- # Parses the given version string, accounting for suffix information that
15
- # Gem::Version cannot successfully parse.
16
- #
17
- # @param [ String ] version the version to parse
18
- #
19
- # @return [ Gem::Version ] the parsed version
20
- #
21
- # @raise [ ArgumentError ] if the string cannot be parsed.
22
- def parse_version(version)
23
- Gem::Version.new(version)
24
- rescue ArgumentError
25
- match = version.match(/\A(?<major>\d+)\.(?<minor>\d+)\.(?<patch>\d+)?(-[A-Za-z\+\d]+)?\z/)
26
- raise ArgumentError.new("Malformed version number string #{version}") if match.nil?
27
-
28
- Gem::Version.new(
29
- [
30
- match[:major],
31
- match[:minor],
32
- match[:patch]
33
- ].join('.')
34
- )
35
- end
36
- end
37
- end
@@ -1,321 +0,0 @@
1
- # Python toolchain as of this writing is available on rhel62, debian92 and
2
- # ubuntu1604.
3
- #
4
- # To run rhel62 in docker, host system must be configured to emulate syscalls:
5
- # https://github.com/CentOS/sig-cloud-instance-images/issues/103
6
-
7
- <%
8
-
9
- python_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-python-driver-toolchain/#{distro}/ba92de2700c04ee2d4f82c3ffdfc33105140cb04/mongo_python_driver_toolchain_#{distro.gsub('-', '_')}_ba92de2700c04ee2d4f82c3ffdfc33105140cb04_19_11_14_15_33_33.tar.gz"
10
- # server_version = '4.3.3'
11
- server_url = "http://downloads.10gen.com/linux/mongodb-linux-x86_64-enterprise-#{distro}-#{server_version}.tgz"
12
- server_archive_basename = File.basename(server_url)
13
- server_extracted_dir = server_archive_basename.sub(/\.(tar\.gz|tgz)$/, '')
14
-
15
- # When changing, also update the hash in shlib/set_env.sh.
16
- TOOLCHAIN_VERSION='e8c60866f54bed7e336a37df3a97d6ae1b971b7d'
17
-
18
- def ruby_toolchain_url(ruby)
19
- "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/#{TOOLCHAIN_VERSION}/#{distro}/#{ruby}.tar.xz"
20
- end
21
-
22
- #ruby_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/#{distro}/#{TOOLCHAIN_VERSION}/mongo_ruby_driver_toolchain_#{distro.gsub('-', '_')}_patch_#{TOOLCHAIN_VERSION}_#{toolchain_lower}.tar.gz"
23
-
24
- %>
25
-
26
- FROM <%= base_image %>
27
-
28
- ENV DOCKER=1
29
-
30
- <% if debian? %>
31
-
32
- ENV DEBIAN_FRONTEND=noninteractive
33
-
34
- <% else %>
35
-
36
- RUN echo assumeyes=1 |tee -a /etc/yum.conf
37
-
38
- <% end %>
39
-
40
- <% if ruby_head? %>
41
-
42
- # To use current versions of mlaunch, Python 3.7+ is required.
43
- # Many distros ship with older Pythons, therefore we need to install
44
- # a newer Python from somewhere. This section installs the Python
45
- # toolchain which comes with recent Pythons.
46
-
47
- #RUN curl --retry 3 -fL <%= python_toolchain_url %> -o python-toolchain.tar.gz
48
- #RUN tar -xC /opt -zf python-toolchain.tar.gz
49
-
50
- <% end %>
51
-
52
- <% if debian? %>
53
-
54
- # zsh is not required for any scripts but it is a better interactive shell
55
- # than bash.
56
- # Ruby runtime dependencies: libyaml-0-2
57
- # Compiling ruby libraries: gcc make
58
- # Compiling python packages: python3-dev
59
- # JRuby: openjdk-8-jdk-headless
60
- # Server dependencies: libsnmp30 libcurl3/libcurl4
61
- # Determining OS we are running on: lsb-release
62
- # Load balancer testing: haproxy
63
- # Kerberos testing: krb5-user
64
- # Local Kerberos server: krb5-kdc krb5-admin-server
65
- # Installing mlaunch from git: git
66
- # ruby-head archive: bzip2
67
- # nio4r on JRuby: libgmp-dev
68
- # Snappy compression: libsnappy-dev
69
- # nokogiri: zlib1g-dev
70
- # Mongoid testing: tzdata shared-mime-info
71
- # Mongoid application testing: nodejs (8.x or newer)
72
- # Test suite: procps for ps (to kill JRubies)
73
- #
74
- # We currently use Python 2-compatible version of mtools, which
75
- # is installable via pip (which uses Python 2). All of the MongoDB
76
- # distros have pip installed (but none as of this writing have pip3)
77
- # therefore install python-pip in all configurations here.
78
-
79
- <% packages = %w(
80
- procps lsb-release bzip2 curl wget gpg zsh
81
- git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
82
- krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
83
- haproxy
84
- python3-pip
85
- tzdata shared-mime-info software-properties-common
86
- ) %>
87
-
88
- <% if distro =~ /ubuntu2004/ %>
89
- <% packages << 'libsnmp35' %>
90
- <% elsif distro =~ /ubuntu2204|debian11/ %>
91
- <% packages << 'libsnmp40' %>
92
- <% else %>
93
- <% packages << 'libsnmp30' %>
94
- <% end %>
95
-
96
- <% if distro !~ /ubuntu2004|ubuntu2204|debian11/ %>
97
- <% packages << 'python-pip' %>
98
- <% end %>
99
-
100
- <% if distro =~ /ubuntu2204|debian11/ %>
101
- <% packages << 'python3-venv' %>
102
- <% end %>
103
-
104
- <% if distro =~ /debian10|ubuntu2204|debian11/ %>
105
- <% packages << 'openjdk-11-jdk-headless' %>
106
- <% elsif distro =~ /ubuntu1404/ %>
107
- # Ubuntu 14.04 only has openjdk 7, this is too old to be useful
108
- <% else %>
109
- <% packages << 'openjdk-8-jdk-headless' %>
110
- <% end %>
111
-
112
- # ubuntu1404, ubuntu1604: libcurl3
113
- # ubuntu1804, ubuntu2004, debian10: libcurl4
114
- <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204|debian10|debian11/ %>
115
- <% packages << 'libcurl4' %>
116
- <% else %>
117
- <% packages << 'libcurl3' %>
118
- <% end %>
119
-
120
- <% if distro =~ /ubuntu1804|ubuntu2004|ubuntu2204/ %>
121
- <% packages << 'nodejs' %>
122
- <% end %>
123
-
124
- <% if distro =~ /ubuntu2004|ubuntu2204/ %>
125
- <% packages += %w(ruby bundler) %>
126
- <% end %>
127
-
128
- RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
129
-
130
- <% if ubuntu? %>
131
- RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
132
- RUN echo "deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/kitware.list >/dev/null
133
- <% end %>
134
- RUN apt-get update && apt-get install -y cmake
135
-
136
- <% else %>
137
-
138
- <% if distro =~ /rhel6/ %>
139
-
140
- # CentOS 6 is dead - to use it retrieve the packages from vault:
141
- # https://stackoverflow.com/questions/53562691/error-cannot-retrieve-repository-metadata-repomd-xml-for-repository-base-pl
142
-
143
- <%
144
-
145
- cfg = <<-CFG
146
- [base]
147
- name=CentOS-$releasever - Base
148
- #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
149
- #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
150
- baseurl=http://vault.centos.org/6.10/os/x86_64/
151
- gpgcheck=1
152
- gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
153
- CFG
154
-
155
- %>
156
-
157
- RUN printf "<%= cfg.gsub("\n", "\\n") %>" >/etc/yum.repos.d/CentOS-Base.repo
158
-
159
- <% end %>
160
-
161
- # Enterprise server: net-snmp
162
- # lsb_release: redhat-lsb-core
163
- # our runner scripts: which
164
- # Ruby dependency: libyaml
165
- # compiling python packages: gcc python-devel
166
- # Kerberos tests: krb5-workstation + cyrus-sasl-devel to build the
167
- # mongo_kerberos gem + cyrus-sasl-gssapi for authentication to work
168
- # Local Kerberos server: krb5-server
169
- # JRuby: java-1.8.0-openjdk
170
- #
171
- # Note: lacking cyrus-sasl-gssapi produces a cryptic message
172
- # "SASL(-4): no mechanism available: No worthy mechs found"
173
- # https://github.com/farorm/python-ad/issues/10
174
-
175
- RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
176
- krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
177
- net-snmp python38 python38-devel cmake nodejs
178
-
179
- <% end %>
180
-
181
- <% if preload? %>
182
-
183
- <% if distro =~ /debian9|ubuntu1604|ubuntu1804/ %>
184
- # Install python 3.7 for mlaunch.
185
- RUN curl -fL --retry 3 https://github.com/p-mongodb/deps/raw/main/<%= distro %>-python37.tar.xz | \
186
- tar xfJ - -C /opt
187
- ENV PATH=/opt/python37/bin:$PATH
188
- RUN python3 -V
189
- <% end %>
190
-
191
- <% if true || distro =~ /rhel|ubuntu1604/ %>
192
-
193
- # Ubuntu 12.04 ships pip 1.0 which is ancient and does not work.
194
- #
195
- # Ubuntu 16.04 apparently also ships a pip that does not work:
196
- # https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry
197
- # Potentially this only affects environments with less than ideal
198
- # connectivity (or, perhaps, when python package registry is experiencing
199
- # availability issues) when pip must retry to install packages.
200
- #
201
- # rhel apparently does not package pip at all in core repoitories,
202
- # therefore install it the manual way.
203
- #
204
- # https://pip.pypa.io/en/stable/installing/
205
- RUN curl --retry 3 -fL https://bootstrap.pypa.io/pip/get-pip.py | python3
206
- RUN python3 -m pip install --upgrade pip setuptools wheel
207
-
208
- <% end %>
209
-
210
- # Current virtualenv fails with
211
- # https://github.com/pypa/virtualenv/issues/1630
212
- <% mtools = 'legacy' %>
213
- <% case mtools
214
- when 'legacy' %>
215
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
216
- RUN python3 -m pip install 'virtualenv<20' 'mtools-legacy[mlaunch]' 'pymongo<4' python-dateutil
217
- <% when 'git' %>
218
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
219
- RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil
220
-
221
- # Install mtools from git because released versions do not work with pymongo 4.0
222
- RUN git clone https://github.com/p-mongodb/mtools && \
223
- cd mtools && \
224
- python3 setup.py install
225
- <% else %>
226
- # mtools[mlaunch] does not work: https://github.com/rueckstiess/mtools/issues/856
227
- # dateutil dependency is missing in mtools: https://github.com/rueckstiess/mtools/issues/864
228
- RUN python3 -m pip install virtualenv 'pymongo>=4' python-dateutil psutil mtools
229
- <% end %>
230
-
231
- <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
232
- # ubuntu1604 installs MarkupSafe 0.0.0 here instead of 2.0.0+
233
- # as specified by dependencies, causing OCSP mock to not work.
234
- RUN python3 -mpip install asn1crypto oscrypto flask --upgrade --ignore-installed
235
- <% end %>
236
-
237
- # FLE is tested against 4.0+ servers.
238
- <% if @env.fetch('MONGODB_VERSION') >= '4.0' %>
239
- # Requirements in drivers-evergreen-tools:
240
- # boto3~=1.19 cryptography~=3.4.8 pykmip~=0.10.0
241
- # cryptography does not install due to lacking setuptools_rust
242
- # (either that version or anything that isn't part of system packages)
243
- RUN python3 -mpip install boto3~=1.19 cryptography pykmip~=0.10.0 'sqlalchemy<2.0.0'
244
- <% end %>
245
-
246
- <% unless ruby_head? || system_ruby? %>
247
-
248
- RUN curl --retry 3 -fL <%= ruby_toolchain_url(ruby) %> |tar -xC /opt -Jf -
249
- ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
250
- USE_OPT_TOOLCHAIN=1
251
- #ENV PATH=/opt/rubies/python/3/bin:$PATH
252
-
253
- <% end %>
254
-
255
- <% end %>
256
-
257
- <% if distro =~ /debian|ubuntu/ %>
258
- # mkdir was moved from /usr/bin to /bin and MongoDB's distros
259
- # apparently keep using the old location.
260
- # This definitely affects debian10.
261
- # https://stackoverflow.com/questions/64653051/make-usr-bin-mkdir-command-not-found-during-gem-install-nokogiri-in-ubuntu
262
- RUN test -f /usr/bin/mkdir || ln -s /bin/mkdir /usr/bin/mkdir
263
- <% end %>
264
-
265
- WORKDIR /app
266
-
267
- <% if preload? && !ruby_head? %>
268
-
269
- COPY Gemfile .
270
- COPY gemfiles gemfiles
271
- COPY *.gemspec .
272
- COPY lib/<%= project_lib_subdir %>/version.rb lib/<%= project_lib_subdir %>/version.rb
273
- RUN bundle install
274
- COPY .evergreen/patch-debuggers .evergreen/patch-debuggers
275
- <% if system_ruby? %>
276
- # Running under docker with root access
277
- RUN .evergreen/patch-debuggers /var/lib/gems
278
- <% else %>
279
- RUN .evergreen/patch-debuggers /opt/rubies
280
- <% end %>
281
-
282
- <% end %>
283
-
284
- <% if fle? %>
285
- RUN curl --retry 3 -fL "https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz" |tar zxf -
286
-
287
- <%= "ENV LIBMONGOCRYPT_PATH #{libmongocrypt_path}" %>
288
- <% end %>
289
-
290
- <% if preload? %>
291
- ENV DOCKER_PRELOAD=1
292
- <% end %>
293
-
294
- ENV MONGO_ORCHESTRATION_HOME=/tmpfs \
295
- PROJECT_DIRECTORY=/app \
296
- <%= @env.map { |k, v| %Q`#{k}="#{v.gsub('$', "\\$").gsub('"', "\\\"")}"` }.join(" \\\n ") %>
297
-
298
- <% if interactive? %>
299
- ENV INTERACTIVE=1
300
- <% end %>
301
-
302
- COPY . .
303
-
304
- RUN bash -c '. .evergreen/download-mongodb.sh && get_distro && get_mongodb_download_url_for "$DISTRO" "<%= server_version %>" && curl --retry 3 -fL $MONGODB_DOWNLOAD_URL |tar xzf - && mv mongo*/ /opt/mongodb'
305
- ENV USE_OPT_MONGODB=1 USE_SYSTEM_PYTHON_PACKAGES=1
306
-
307
- <% if expose? %>
308
-
309
- <% ports = [] %>
310
-
311
- <% 0.upto(num_exposed_ports-1) do |i| %>
312
- <% ports << 27017 + i %>
313
- <% end %>
314
-
315
- <% if @env['OCSP_ALGORITHM'] %>
316
- <% ports << 8100 %>
317
- <% end %>
318
-
319
- EXPOSE <%= ports.map(&:to_s).join(' ') %>
320
-
321
- <% end %>
@@ -1,16 +0,0 @@
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
@@ -1,17 +0,0 @@
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
@@ -1,27 +0,0 @@
1
- show_local_instructions_impl() {
2
- local arch="$1"
3
- shift
4
-
5
- echo To test this configuration locally:
6
- local params=
7
- while test -n "$1"; do
8
- key="$1"
9
- shift
10
- # ${!foo} syntax is bash specific:
11
- # https://stackoverflow.com/questions/14049057/bash-expand-variable-in-a-variable
12
- value="${!key}"
13
- if test -n "$value"; then
14
- params="$params $key=$value"
15
- fi
16
- done
17
-
18
- # $0 has the current script being executed which is also the script that
19
- # was initially invoked EXCEPT for the AWS configurations which use the
20
- # wrapper script.
21
- if echo "$AUTH" |grep -q ^aws; then
22
- script=.evergreen/run-tests-aws-auth.sh
23
- else
24
- script="$0"
25
- fi
26
- echo ./.evergreen/test-on-docker -d $arch $params -s "$script"
27
- }