bson 5.0.0-java → 5.0.2-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +91 -7
  3. data/Rakefile +63 -39
  4. data/lib/bson/array.rb +1 -1
  5. data/lib/bson/binary.rb +16 -1
  6. data/lib/bson/code.rb +1 -1
  7. data/lib/bson/code_with_scope.rb +1 -1
  8. data/lib/bson/db_pointer.rb +1 -1
  9. data/lib/bson/decimal128/builder.rb +1 -1
  10. data/lib/bson/decimal128.rb +1 -1
  11. data/lib/bson/ext_json.rb +1 -1
  12. data/lib/bson/float.rb +1 -1
  13. data/lib/bson/hash.rb +1 -1
  14. data/lib/bson/int32.rb +1 -1
  15. data/lib/bson/int64.rb +1 -1
  16. data/lib/bson/integer.rb +1 -1
  17. data/lib/bson/max_key.rb +1 -1
  18. data/lib/bson/min_key.rb +1 -1
  19. data/lib/bson/object.rb +2 -2
  20. data/lib/bson/object_id.rb +12 -2
  21. data/lib/bson/regexp.rb +1 -1
  22. data/lib/bson/symbol.rb +2 -2
  23. data/lib/bson/time.rb +1 -1
  24. data/lib/bson/timestamp.rb +1 -1
  25. data/lib/bson/undefined.rb +1 -1
  26. data/lib/bson/version.rb +2 -1
  27. data/lib/bson-ruby.jar +0 -0
  28. data/spec/bson/binary_spec.rb +46 -7
  29. data/spec/bson/object_id_spec.rb +14 -0
  30. metadata +99 -172
  31. checksums.yaml.gz.sig +0 -0
  32. data/spec/shared/LICENSE +0 -20
  33. data/spec/shared/bin/get-mongodb-download-url +0 -17
  34. data/spec/shared/bin/s3-copy +0 -45
  35. data/spec/shared/bin/s3-upload +0 -69
  36. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  37. data/spec/shared/lib/mrss/cluster_config.rb +0 -231
  38. data/spec/shared/lib/mrss/constraints.rb +0 -378
  39. data/spec/shared/lib/mrss/docker_runner.rb +0 -298
  40. data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
  41. data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
  42. data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
  43. data/spec/shared/lib/mrss/server_version_registry.rb +0 -113
  44. data/spec/shared/lib/mrss/session_registry.rb +0 -69
  45. data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
  46. data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
  47. data/spec/shared/lib/mrss/utils.rb +0 -37
  48. data/spec/shared/share/Dockerfile.erb +0 -321
  49. data/spec/shared/share/haproxy-1.conf +0 -16
  50. data/spec/shared/share/haproxy-2.conf +0 -17
  51. data/spec/shared/shlib/config.sh +0 -27
  52. data/spec/shared/shlib/distro.sh +0 -74
  53. data/spec/shared/shlib/server.sh +0 -416
  54. data/spec/shared/shlib/set_env.sh +0 -169
  55. data.tar.gz.sig +0 -0
  56. metadata.gz.sig +0 -0
@@ -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
- }
@@ -1,74 +0,0 @@
1
- detected_distro=
2
-
3
- host_distro() {
4
- if test -z "$detected_distro"; then
5
- detected_distro=`_detect_distro`
6
- fi
7
- echo "$detected_distro"
8
- }
9
-
10
- _detect_distro() {
11
- local distro
12
- distro=
13
- if test -f /etc/debian_version; then
14
- # Debian or Ubuntu
15
- if test "`uname -m`" = aarch64; then
16
- release=`lsb_release -rs |tr -d .`
17
- distro="ubuntu$release"-arm
18
- elif lsb_release -is |grep -q Debian; then
19
- release=`lsb_release -rs |tr -d .`
20
- # In docker, release is something like 9.11.
21
- # In evergreen, release is 9.2.
22
- release=`echo $release |sed -e 's/^9.*/92/'`
23
- distro="debian$release"
24
- elif lsb_release -is |grep -q Ubuntu; then
25
- if test "`uname -m`" = ppc64le; then
26
- release=`lsb_release -rs |tr -d .`
27
- distro="ubuntu$release-ppc"
28
- else
29
- release=`lsb_release -rs |tr -d .`
30
- distro="ubuntu$release"
31
- fi
32
- else
33
- echo 'Unknown Debian flavor' 1>&2
34
- exit 1
35
- fi
36
- elif lsb_release -is |grep -qi suse; then
37
- if test "`uname -m`" = s390x; then
38
- release=`lsb_release -rs |sed -e 's/\..*//'`
39
- distro="suse$release-s390x"
40
- else
41
- echo 'Unknown Suse arch' 1>&2
42
- exit 1
43
- fi
44
- elif test -f /etc/redhat-release; then
45
- # RHEL or CentOS
46
- if test "`uname -m`" = s390x; then
47
- distro=rhel72-s390x
48
- elif test "`uname -m`" = ppc64le; then
49
- distro=rhel71-ppc
50
- elif lsb_release >/dev/null 2>&1; then
51
- if lsb_release -is |grep -q RedHat; then
52
- release=`lsb_release -rs |tr -d .`
53
- distro="rhel$release"
54
- elif lsb_release -is |grep -q CentOS; then
55
- release=`lsb_release -rs |cut -c 1 |sed -e s/7/70/ -e s/6/62/ -e s/8/80/`
56
- distro="rhel$release"
57
- else
58
- echo 'Unknown RHEL flavor' 1>&2
59
- exit 1
60
- fi
61
- else
62
- echo lsb_release missing, using /etc/redhat-release 1>&2
63
- release=`grep -o 'release [0-9]' /etc/redhat-release |awk '{print $2}'`
64
- release=`echo $release |sed -e s/7/70/ -e s/6/62/ -e s/8/80/`
65
- distro=rhel$release
66
- fi
67
- else
68
- lsb_release -a
69
- echo 'Unknown distro' 1>&2
70
- exit 1
71
- fi
72
- echo "Detected distro: $distro" 1>&2
73
- echo $distro
74
- }