mongo 2.13.3 → 2.14.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/lib/mongo/address/ipv4.rb +1 -1
  4. data/lib/mongo/address/ipv6.rb +1 -1
  5. data/lib/mongo/address.rb +1 -1
  6. data/lib/mongo/bulk_write.rb +17 -0
  7. data/lib/mongo/caching_cursor.rb +74 -0
  8. data/lib/mongo/client.rb +47 -8
  9. data/lib/mongo/cluster/topology/single.rb +1 -1
  10. data/lib/mongo/cluster.rb +3 -3
  11. data/lib/mongo/collection/view/aggregation.rb +25 -4
  12. data/lib/mongo/collection/view/builder/find_command.rb +38 -18
  13. data/lib/mongo/collection/view/explainable.rb +27 -8
  14. data/lib/mongo/collection/view/iterable.rb +72 -12
  15. data/lib/mongo/collection/view/readable.rb +12 -2
  16. data/lib/mongo/collection/view/writable.rb +15 -1
  17. data/lib/mongo/collection/view.rb +24 -20
  18. data/lib/mongo/collection.rb +26 -2
  19. data/lib/mongo/crypt/encryption_io.rb +6 -6
  20. data/lib/mongo/cursor.rb +1 -0
  21. data/lib/mongo/database/view.rb +1 -1
  22. data/lib/mongo/database.rb +8 -14
  23. data/lib/mongo/error/invalid_read_concern.rb +28 -0
  24. data/lib/mongo/error/server_certificate_revoked.rb +22 -0
  25. data/lib/mongo/error/unsupported_option.rb +14 -12
  26. data/lib/mongo/error.rb +2 -0
  27. data/lib/mongo/grid/fs_bucket.rb +37 -37
  28. data/lib/mongo/lint.rb +2 -1
  29. data/lib/mongo/logger.rb +3 -3
  30. data/lib/mongo/operation/aggregate/result.rb +9 -8
  31. data/lib/mongo/operation/collections_info/command.rb +0 -5
  32. data/lib/mongo/operation/collections_info/result.rb +3 -16
  33. data/lib/mongo/operation/delete/bulk_result.rb +2 -0
  34. data/lib/mongo/operation/delete/result.rb +3 -0
  35. data/lib/mongo/operation/explain/command.rb +4 -0
  36. data/lib/mongo/operation/explain/legacy.rb +4 -0
  37. data/lib/mongo/operation/explain/op_msg.rb +6 -0
  38. data/lib/mongo/operation/explain/result.rb +3 -0
  39. data/lib/mongo/operation/find/legacy/result.rb +2 -0
  40. data/lib/mongo/operation/find/result.rb +3 -0
  41. data/lib/mongo/operation/get_more/result.rb +3 -0
  42. data/lib/mongo/operation/indexes/result.rb +5 -0
  43. data/lib/mongo/operation/insert/bulk_result.rb +5 -0
  44. data/lib/mongo/operation/insert/result.rb +5 -0
  45. data/lib/mongo/operation/list_collections/result.rb +5 -0
  46. data/lib/mongo/operation/map_reduce/result.rb +10 -0
  47. data/lib/mongo/operation/parallel_scan/command.rb +2 -1
  48. data/lib/mongo/operation/parallel_scan/result.rb +4 -0
  49. data/lib/mongo/operation/result.rb +35 -6
  50. data/lib/mongo/operation/shared/bypass_document_validation.rb +1 -0
  51. data/lib/mongo/operation/shared/causal_consistency_supported.rb +1 -0
  52. data/lib/mongo/operation/shared/collections_info_or_list_collections.rb +2 -0
  53. data/lib/mongo/operation/shared/executable.rb +1 -0
  54. data/lib/mongo/operation/shared/idable.rb +2 -1
  55. data/lib/mongo/operation/shared/limited.rb +1 -0
  56. data/lib/mongo/operation/shared/object_id_generator.rb +1 -0
  57. data/lib/mongo/operation/shared/read_preference_supported.rb +36 -38
  58. data/lib/mongo/operation/shared/result/aggregatable.rb +1 -0
  59. data/lib/mongo/operation/shared/sessions_supported.rb +3 -3
  60. data/lib/mongo/operation/shared/specifiable.rb +1 -0
  61. data/lib/mongo/operation/shared/write.rb +1 -0
  62. data/lib/mongo/operation/shared/write_concern_supported.rb +1 -0
  63. data/lib/mongo/operation/update/legacy/result.rb +7 -0
  64. data/lib/mongo/operation/update/result.rb +8 -0
  65. data/lib/mongo/operation/users_info/result.rb +3 -0
  66. data/lib/mongo/operation.rb +2 -0
  67. data/lib/mongo/protocol/msg.rb +2 -2
  68. data/lib/mongo/protocol/query.rb +11 -11
  69. data/lib/mongo/query_cache.rb +242 -0
  70. data/lib/mongo/retryable.rb +8 -1
  71. data/lib/mongo/server/connection_common.rb +2 -2
  72. data/lib/mongo/server/connection_pool.rb +3 -0
  73. data/lib/mongo/server/monitor/connection.rb +3 -3
  74. data/lib/mongo/server/monitor.rb +1 -1
  75. data/lib/mongo/server/pending_connection.rb +2 -2
  76. data/lib/mongo/server/push_monitor.rb +1 -1
  77. data/lib/mongo/server.rb +5 -1
  78. data/lib/mongo/server_selector/base.rb +5 -1
  79. data/lib/mongo/server_selector/secondary_preferred.rb +7 -2
  80. data/lib/mongo/session.rb +3 -0
  81. data/lib/mongo/socket/ocsp_cache.rb +97 -0
  82. data/lib/mongo/socket/ocsp_verifier.rb +368 -0
  83. data/lib/mongo/socket/ssl.rb +45 -24
  84. data/lib/mongo/socket.rb +6 -4
  85. data/lib/mongo/srv/monitor.rb +7 -13
  86. data/lib/mongo/srv/resolver.rb +14 -10
  87. data/lib/mongo/timeout.rb +2 -0
  88. data/lib/mongo/uri/options_mapper.rb +582 -0
  89. data/lib/mongo/uri/srv_protocol.rb +3 -2
  90. data/lib/mongo/uri.rb +21 -390
  91. data/lib/mongo/utils.rb +12 -1
  92. data/lib/mongo/version.rb +1 -1
  93. data/lib/mongo.rb +9 -0
  94. data/spec/NOTES.aws-auth.md +12 -7
  95. data/spec/README.md +56 -1
  96. data/spec/integration/bson_symbol_spec.rb +2 -4
  97. data/spec/integration/bulk_write_spec.rb +48 -0
  98. data/spec/integration/client_authentication_options_spec.rb +55 -28
  99. data/spec/integration/connection_pool_populator_spec.rb +3 -1
  100. data/spec/integration/cursor_reaping_spec.rb +53 -17
  101. data/spec/integration/ocsp_connectivity_spec.rb +26 -0
  102. data/spec/integration/ocsp_verifier_cache_spec.rb +188 -0
  103. data/spec/integration/ocsp_verifier_spec.rb +334 -0
  104. data/spec/integration/query_cache_spec.rb +1045 -0
  105. data/spec/integration/query_cache_transactions_spec.rb +179 -0
  106. data/spec/integration/retryable_writes/retryable_writes_40_and_newer_spec.rb +1 -0
  107. data/spec/integration/retryable_writes/shared/performs_legacy_retries.rb +2 -0
  108. data/spec/integration/sdam_error_handling_spec.rb +69 -18
  109. data/spec/integration/sdam_events_spec.rb +7 -8
  110. data/spec/integration/server_selection_spec.rb +36 -0
  111. data/spec/integration/srv_monitoring_spec.rb +38 -3
  112. data/spec/integration/srv_spec.rb +56 -0
  113. data/spec/lite_spec_helper.rb +4 -2
  114. data/spec/mongo/address_spec.rb +1 -1
  115. data/spec/mongo/caching_cursor_spec.rb +70 -0
  116. data/spec/mongo/client_construction_spec.rb +54 -1
  117. data/spec/mongo/client_encryption_spec.rb +10 -16
  118. data/spec/mongo/client_spec.rb +40 -0
  119. data/spec/mongo/cluster/topology/single_spec.rb +14 -5
  120. data/spec/mongo/cluster_spec.rb +3 -0
  121. data/spec/mongo/collection/view/explainable_spec.rb +87 -4
  122. data/spec/mongo/collection/view/map_reduce_spec.rb +2 -0
  123. data/spec/mongo/collection_spec.rb +60 -0
  124. data/spec/mongo/crypt/auto_decryption_context_spec.rb +1 -1
  125. data/spec/mongo/crypt/auto_encryption_context_spec.rb +1 -1
  126. data/spec/mongo/crypt/data_key_context_spec.rb +1 -1
  127. data/spec/mongo/crypt/explicit_decryption_context_spec.rb +1 -1
  128. data/spec/mongo/crypt/explicit_encryption_context_spec.rb +1 -1
  129. data/spec/mongo/database_spec.rb +44 -64
  130. data/spec/mongo/error/no_server_available_spec.rb +1 -1
  131. data/spec/mongo/index/view_spec.rb +2 -4
  132. data/spec/mongo/logger_spec.rb +13 -11
  133. data/spec/mongo/operation/read_preference_legacy_spec.rb +19 -9
  134. data/spec/mongo/operation/read_preference_op_msg_spec.rb +3 -3
  135. data/spec/mongo/query_cache_spec.rb +279 -0
  136. data/spec/mongo/server/app_metadata_shared.rb +7 -33
  137. data/spec/mongo/server/connection_pool_spec.rb +7 -3
  138. data/spec/mongo/server/connection_spec.rb +14 -7
  139. data/spec/mongo/server_selector/secondary_preferred_spec.rb +6 -6
  140. data/spec/mongo/socket/ssl_spec.rb +1 -1
  141. data/spec/mongo/socket_spec.rb +1 -1
  142. data/spec/mongo/uri/srv_protocol_spec.rb +64 -33
  143. data/spec/mongo/uri_option_parsing_spec.rb +11 -11
  144. data/spec/mongo/uri_spec.rb +68 -41
  145. data/spec/mongo/utils_spec.rb +39 -0
  146. data/spec/runners/auth.rb +3 -0
  147. data/spec/runners/connection_string.rb +35 -124
  148. data/spec/runners/transactions/operation.rb +2 -13
  149. data/spec/spec_tests/cmap_spec.rb +7 -3
  150. data/spec/spec_tests/data/change_streams/change-streams-errors.yml +0 -1
  151. data/spec/spec_tests/data/change_streams/change-streams.yml +0 -1
  152. data/spec/spec_tests/data/cmap/pool-checkout-connection.yml +6 -2
  153. data/spec/spec_tests/data/cmap/pool-create-min-size.yml +3 -0
  154. data/spec/spec_tests/data/connection_string/valid-warnings.yml +24 -0
  155. data/spec/spec_tests/data/sdam_monitoring/discovered_standalone.yml +1 -3
  156. data/spec/spec_tests/data/sdam_monitoring/standalone.yml +2 -2
  157. data/spec/spec_tests/data/sdam_monitoring/standalone_repeated.yml +2 -2
  158. data/spec/spec_tests/data/sdam_monitoring/standalone_suppress_equal_description_changes.yml +2 -2
  159. data/spec/spec_tests/data/sdam_monitoring/standalone_to_rs_with_me_mismatch.yml +2 -2
  160. data/spec/spec_tests/data/uri_options/auth-options.yml +25 -0
  161. data/spec/spec_tests/data/uri_options/compression-options.yml +6 -3
  162. data/spec/spec_tests/data/uri_options/read-preference-options.yml +24 -0
  163. data/spec/spec_tests/data/uri_options/ruby-connection-options.yml +1 -0
  164. data/spec/spec_tests/data/uri_options/tls-options.yml +160 -4
  165. data/spec/spec_tests/dns_seedlist_discovery_spec.rb +9 -1
  166. data/spec/spec_tests/uri_options_spec.rb +31 -33
  167. data/spec/support/certificates/atlas-ocsp-ca.crt +28 -0
  168. data/spec/support/certificates/atlas-ocsp.crt +41 -0
  169. data/spec/support/client_registry.rb +4 -8
  170. data/spec/support/client_registry_macros.rb +4 -4
  171. data/spec/support/common_shortcuts.rb +45 -0
  172. data/spec/support/constraints.rb +23 -0
  173. data/spec/support/lite_constraints.rb +24 -0
  174. data/spec/support/matchers.rb +16 -0
  175. data/spec/support/ocsp +1 -0
  176. data/spec/support/session_registry.rb +52 -0
  177. data/spec/support/spec_config.rb +22 -12
  178. data/spec/support/spec_setup.rb +38 -48
  179. data/spec/support/utils.rb +19 -1
  180. data.tar.gz.sig +1 -3
  181. metadata +938 -933
  182. metadata.gz.sig +0 -0
  183. data/spec/integration/secondary_reads_spec.rb +0 -102
  184. data/spec/shared/LICENSE +0 -20
  185. data/spec/shared/bin/get-mongodb-download-url +0 -17
  186. data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
  187. data/spec/shared/lib/mrss/cluster_config.rb +0 -221
  188. data/spec/shared/lib/mrss/constraints.rb +0 -346
  189. data/spec/shared/lib/mrss/docker_runner.rb +0 -265
  190. data/spec/shared/lib/mrss/lite_constraints.rb +0 -191
  191. data/spec/shared/lib/mrss/server_version_registry.rb +0 -115
  192. data/spec/shared/lib/mrss/spec_organizer.rb +0 -152
  193. data/spec/shared/lib/mrss/utils.rb +0 -15
  194. data/spec/shared/share/Dockerfile.erb +0 -231
  195. data/spec/shared/shlib/distro.sh +0 -73
  196. data/spec/shared/shlib/server.sh +0 -290
  197. data/spec/shared/shlib/set_env.sh +0 -128
@@ -1,73 +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
- distro=ubuntu1604-arm
17
- elif lsb_release -is |grep -q Debian; then
18
- release=`lsb_release -rs |tr -d .`
19
- # In docker, release is something like 9.11.
20
- # In evergreen, release is 9.2.
21
- release=`echo $release |sed -e 's/^9.*/92/'`
22
- distro="debian$release"
23
- elif lsb_release -is |grep -q Ubuntu; then
24
- if test "`uname -m`" = ppc64le; then
25
- release=`lsb_release -rs |tr -d .`
26
- distro="ubuntu$release-ppc"
27
- else
28
- release=`lsb_release -rs |tr -d .`
29
- distro="ubuntu$release"
30
- fi
31
- else
32
- echo 'Unknown Debian flavor' 1>&2
33
- exit 1
34
- fi
35
- elif lsb_release -is |grep -qi suse; then
36
- if test "`uname -m`" = s390x; then
37
- release=`lsb_release -rs |sed -e 's/\..*//'`
38
- distro="suse$release-s390x"
39
- else
40
- echo 'Unknown Suse arch' 1>&2
41
- exit 1
42
- fi
43
- elif test -f /etc/redhat-release; then
44
- # RHEL or CentOS
45
- if test "`uname -m`" = s390x; then
46
- distro=rhel72-s390x
47
- elif test "`uname -m`" = ppc64le; then
48
- distro=rhel71-ppc
49
- elif lsb_release >/dev/null 2>&1; then
50
- if lsb_release -is |grep -q RedHat; then
51
- release=`lsb_release -rs |tr -d .`
52
- distro="rhel$release"
53
- elif lsb_release -is |grep -q CentOS; then
54
- release=`lsb_release -rs |cut -c 1 |sed -e s/7/70/ -e s/6/62/ -e s/8/80/`
55
- distro="rhel$release"
56
- else
57
- echo 'Unknown RHEL flavor' 1>&2
58
- exit 1
59
- fi
60
- else
61
- echo lsb_release missing, using /etc/redhat-release 1>&2
62
- release=`grep -o 'release [0-9]' /etc/redhat-release |awk '{print $2}'`
63
- release=`echo $release |sed -e s/7/70/ -e s/6/62/ -e s/8/80/`
64
- distro=rhel$release
65
- fi
66
- else
67
- lsb_release -a
68
- echo 'Unknown distro' 1>&2
69
- exit 1
70
- fi
71
- echo "Detected distro: $distro" 1>&2
72
- echo $distro
73
- }
@@ -1,290 +0,0 @@
1
- # This file contains functions pertaining to downloading, starting and
2
- # configuring a MongoDB server.
3
-
4
- set_fcv() {
5
- if test -n "$FCV"; then
6
- mongo --eval 'assert.commandWorked(db.adminCommand( { setFeatureCompatibilityVersion: "'"$FCV"'" } ));' "$MONGODB_URI"
7
- mongo --quiet --eval 'db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )' |grep "version.*$FCV"
8
- fi
9
- }
10
-
11
- add_uri_option() {
12
- opt=$1
13
-
14
- if ! echo $MONGODB_URI |sed -e s,//,, |grep -q /; then
15
- MONGODB_URI="$MONGODB_URI/"
16
- fi
17
-
18
- if ! echo $MONGODB_URI |grep -q '?'; then
19
- MONGODB_URI="$MONGODB_URI?"
20
- fi
21
-
22
- MONGODB_URI="$MONGODB_URI&$opt"
23
- }
24
-
25
- prepare_server() {
26
- arch=$1
27
-
28
- if test -n "$USE_OPT_MONGODB"; then
29
- export BINDIR=/opt/mongodb/bin
30
- export PATH=$BINDIR:$PATH
31
- return
32
- fi
33
-
34
- if test "$MONGODB_VERSION" = latest; then
35
- # Test on the most recent published 4.3 release.
36
- # https://jira.mongodb.org/browse/RUBY-1724
37
- echo 'Using "latest" server is not currently implemented' 1>&2
38
- exit 1
39
- else
40
- download_version="$MONGODB_VERSION"
41
- fi
42
-
43
- url=`$(dirname $0)/get-mongodb-download-url $download_version $arch`
44
-
45
- prepare_server_from_url $url
46
- }
47
-
48
- prepare_server_from_url() {
49
- url=$1
50
-
51
- mongodb_dir="$MONGO_ORCHESTRATION_HOME"/mdb
52
- mkdir -p "$mongodb_dir"
53
- curl --retry 3 $url |tar xz -C "$mongodb_dir" -f -
54
- BINDIR="$mongodb_dir"/`basename $url |sed -e s/.tgz//`/bin
55
- export PATH="$BINDIR":$PATH
56
- }
57
-
58
- install_mlaunch_virtualenv() {
59
- python2 -V || true
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
76
- }
77
-
78
- install_mlaunch_pip() {
79
- if test -n "$USE_OPT_MONGODB" && which mlaunch >/dev/null 2>&1; then
80
- # mlaunch is preinstalled in the docker image, do not install it here
81
- return
82
- fi
83
-
84
- python -V || true
85
- python3 -V || true
86
- pythonpath="$MONGO_ORCHESTRATION_HOME"/python
87
- pip install -t "$pythonpath" 'mtools-legacy[mlaunch]'
88
- export PATH="$pythonpath/bin":$PATH
89
- export PYTHONPATH="$pythonpath"
90
- }
91
-
92
- install_mlaunch_git() {
93
- repo=$1
94
- branch=$2
95
- python -V || true
96
- python3 -V || true
97
- which pip || true
98
- which pip3 || true
99
-
100
- if false; then
101
- if ! virtualenv --version; then
102
- python3 `which pip3` install --user virtualenv
103
- export PATH=$HOME/.local/bin:$PATH
104
- virtualenv --version
105
- fi
106
-
107
- venvpath="$MONGO_ORCHESTRATION_HOME"/venv
108
- virtualenv -p python3 $venvpath
109
- . $venvpath/bin/activate
110
-
111
- pip3 install psutil pymongo
112
-
113
- git clone $repo mlaunch
114
- cd mlaunch
115
- git checkout origin/$branch
116
- python3 setup.py install
117
- cd ..
118
- else
119
- pip install --user 'virtualenv==13'
120
- export PATH=$HOME/.local/bin:$PATH
121
-
122
- venvpath="$MONGO_ORCHESTRATION_HOME"/venv
123
- virtualenv $venvpath
124
- . $venvpath/bin/activate
125
-
126
- pip install psutil pymongo
127
-
128
- git clone $repo mlaunch
129
- (cd mlaunch &&
130
- git checkout origin/$branch &&
131
- python setup.py install
132
- )
133
- fi
134
- }
135
-
136
- calculate_server_args() {
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
-
144
- if test $mongo_version = latest; then
145
- mongo_version=49
146
- fi
147
-
148
- local args="--setParameter enableTestCommands=1"
149
-
150
- if test $mongo_version -ge 47; then
151
- args="$args --setParameter acceptAPIVersion2=1"
152
- fi
153
-
154
- # diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
155
- # and mlaunch does not support specifying mongod-only parameters:
156
- # https://github.com/rueckstiess/mtools/issues/696
157
- # Pass it to 3.4 and newer servers where it is accepted by all daemons.
158
- if test $mongo_version -ge 34; then
159
- args="$args --setParameter diagnosticDataCollectionEnabled=false"
160
- fi
161
- local uri_options=
162
- if test "$TOPOLOGY" = replica-set; then
163
- args="$args --replicaset --name ruby-driver-rs --nodes 2 --arbiter"
164
- export HAVE_ARBITER=1
165
- elif test "$TOPOLOGY" = sharded-cluster; then
166
- args="$args --replicaset --nodes 2 --sharded 1 --name ruby-driver-rs"
167
- if test -z "$SINGLE_MONGOS"; then
168
- args="$args --mongos 2"
169
- fi
170
- else
171
- args="$args --single"
172
- fi
173
- if test -n "$MMAPV1"; then
174
- args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
175
- uri_options="$uri_options&retryReads=false&retryWrites=false"
176
- fi
177
- if test "$AUTH" = auth; then
178
- args="$args --auth --username bob --password pwd123"
179
- elif test "$AUTH" = x509; then
180
- args="$args --auth --username bootstrap --password bootstrap"
181
- elif echo "$AUTH" |grep -q ^aws; then
182
- args="$args --auth --username bootstrap --password bootstrap"
183
- args="$args --setParameter authenticationMechanisms=MONGODB-AWS,SCRAM-SHA-1,SCRAM-SHA-256"
184
- uri_options="$uri_options&authMechanism=MONGODB-AWS&authSource=\$external"
185
- fi
186
-
187
- if test -n "$OCSP"; then
188
- if test -z "$OCSP_ALGORITHM"; then
189
- echo "OCSP_ALGORITHM must be set if OCSP is set" 1>&2
190
- exit 1
191
- fi
192
- fi
193
-
194
- local server_cert_path server_ca_path server_client_cert_path
195
- if test "$SSL" = ssl || test -n "$OCSP_ALGORITHM"; then
196
- if test -n "$OCSP_ALGORITHM"; then
197
- if test "$OCSP_MUST_STAPLE" = 1; then
198
- server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server-mustStaple.pem
199
- else
200
- server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
201
- fi
202
- server_ca_path=spec/support/ocsp/$OCSP_ALGORITHM/ca.crt
203
- server_client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
204
- else
205
- server_cert_path=spec/support/certificates/server-second-level-bundle.pem
206
- server_ca_path=spec/support/certificates/ca.crt
207
- server_client_cert_path=spec/support/certificates/client.pem
208
- fi
209
-
210
- if test -n "$OCSP_ALGORITHM"; then
211
- client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
212
- elif test "$AUTH" = x509; then
213
- client_cert_path=spec/support/certificates/client-x509.pem
214
-
215
- uri_options="$uri_options&authMechanism=MONGODB-X509"
216
- elif echo $RVM_RUBY |grep -q jruby; then
217
- # JRuby does not grok chained certificate bundles -
218
- # https://github.com/jruby/jruby-openssl/issues/181
219
- client_cert_path=spec/support/certificates/client.pem
220
- else
221
- client_cert_path=spec/support/certificates/client-second-level-bundle.pem
222
- fi
223
-
224
- uri_options="$uri_options&tls=true&"\
225
- "tlsCAFile=$server_ca_path&"\
226
- "tlsCertificateKeyFile=$client_cert_path"
227
-
228
- args="$args --sslMode requireSSL"\
229
- " --sslPEMKeyFile $server_cert_path"\
230
- " --sslCAFile $server_ca_path"\
231
- " --sslClientCertificate $server_client_cert_path"
232
- fi
233
-
234
- # Docker forwards ports to the external interface, not to the loopback.
235
- # Hence we must bind to all interfaces here.
236
- if test -n "$BIND_ALL"; then
237
- args="$args --bind_ip_all"
238
- fi
239
-
240
- # MongoDB servers pre-4.2 do not enable zlib compression by default
241
- if test "$COMPRESSOR" = snappy; then
242
- args="$args --networkMessageCompressors snappy"
243
- elif test "$COMPRESSOR" = zlib; then
244
- args="$args --networkMessageCompressors zlib"
245
- fi
246
-
247
- if test -n "$OCSP_ALGORITHM" || test -n "$OCSP_VERIFIER"; then
248
- python3 -m pip install asn1crypto oscrypto flask
249
- fi
250
-
251
- local ocsp_args=
252
- if test -n "$OCSP_ALGORITHM"; then
253
- if test -z "$server_ca_path"; then
254
- echo "server_ca_path must have been set" 1>&2
255
- exit 1
256
- fi
257
- ocsp_args="--ca_file $server_ca_path"
258
- if test "$OCSP_DELEGATE" = 1; then
259
- ocsp_args="$ocsp_args \
260
- --ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.crt \
261
- --ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.key \
262
- "
263
- else
264
- ocsp_args="$ocsp_args \
265
- --ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ca.crt \
266
- --ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ca.key \
267
- "
268
- fi
269
- if test -n "$OCSP_STATUS"; then
270
- ocsp_args="$ocsp_args --fault $OCSP_STATUS"
271
- fi
272
- fi
273
-
274
- OCSP_ARGS="$ocsp_args"
275
- SERVER_ARGS="$args"
276
- URI_OPTIONS="$uri_options"
277
- }
278
-
279
- launch_ocsp_mock() {
280
- if test -n "$OCSP_ARGS"; then
281
- # Bind to 0.0.0.0 for Docker
282
- python3 spec/support/ocsp/ocsp_mock.py $OCSP_ARGS -b 0.0.0.0 -p 8100 &
283
- OCSP_MOCK_PID=$!
284
- fi
285
- }
286
-
287
- launch_server() {
288
- local dbdir="$1"
289
- python -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
290
- }
@@ -1,128 +0,0 @@
1
- TOOLCHAIN_VERSION=289d4bec7c61e88000cea582c05fd8073b932122
2
-
3
- set_env_java() {
4
- ls -l /opt || true
5
- ls -l /usr/lib/jvm || true
6
-
7
- # Use toolchain java if it exists
8
- if [ -f /opt/java/jdk8/bin/java ]; then
9
- export JAVACMD=/opt/java/jdk8/bin/java
10
- #export PATH=$PATH:/opt/java/jdk8/bin
11
- fi
12
-
13
- # ppc64le has it in a different place
14
- if test -z "$JAVACMD" && [ -f /usr/lib/jvm/java-1.8.0/bin/java ]; then
15
- export JAVACMD=/usr/lib/jvm/java-1.8.0/bin/java
16
- #export PATH=$PATH:/usr/lib/jvm/java-1.8.0/bin
17
- fi
18
-
19
- if true; then
20
- # newer
21
- # rhel71-ppc, https://jira.mongodb.org/browse/BUILD-9231
22
- if test -z "$JAVACMD" &&
23
- (ls /opt/java || true) |grep -q java-1.8.0-openjdk-1.8.0 &&
24
- test -f /opt/java/java-1.8.0-openjdk-1.8.0*/bin/java;
25
- then
26
- path=$(cd /opt/java && ls -d java-1.8.0-openjdk-1.8.0* |head -n 1)
27
- export JAVACMD=/opt/java/"$path"/bin/java
28
- fi
29
- else
30
- # older
31
- # rhel71-ppc seems to have an /opt/java/jdk8/bin/java but it doesn't work
32
- if test -n "$JAVACMD" && ! exec $JAVACMD -version; then
33
- JAVACMD=
34
- # we will try the /usr/lib/jvm then
35
- fi
36
- fi
37
-
38
- if test -n "$JAVACMD"; then
39
- eval $JAVACMD -version
40
- elif which java 2>/dev/null; then
41
- java -version
42
- else
43
- echo No java runtime found
44
- fi
45
- }
46
-
47
- set_env_ruby() {
48
- if test -z "$RVM_RUBY"; then
49
- echo "Empty RVM_RUBY, aborting"
50
- exit 2
51
- fi
52
-
53
- #ls -l /opt
54
-
55
- # Necessary for jruby
56
- set_env_java
57
-
58
- if [ "$RVM_RUBY" == "ruby-head" ]; then
59
- # When we use ruby-head, we do not install the Ruby toolchain.
60
- # But we still need Python 3.6+ to run mlaunch.
61
- # Since the ruby-head tests are run on ubuntu1604, we can use the
62
- # globally installed Python toolchain.
63
- #export PATH=/opt/python/3.7/bin:$PATH
64
-
65
- # 12.04, 14.04 and 16.04 are good
66
- curl --retry 3 -fL http://rubies.travis-ci.org/ubuntu/`lsb_release -rs`/x86_64/ruby-head.tar.bz2 |tar xfj -
67
- # TODO adjust gem path?
68
- export PATH=`pwd`/ruby-head/bin:`pwd`/ruby-head/lib/ruby/gems/2.6.0/bin:$PATH
69
- ruby --version
70
- ruby --version |grep dev
71
- else
72
- if test "$USE_OPT_TOOLCHAIN" = 1; then
73
- # nothing, also PATH is already set
74
- :
75
- elif true; then
76
-
77
- # For testing toolchains:
78
- #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
80
- curl --retry 3 -fL $toolchain_url |tar Jxf -
81
- export PATH=`pwd`/rubies/$RVM_RUBY/bin:$PATH
82
- #export PATH=`pwd`/rubies/python/3/bin:$PATH
83
-
84
- # Attempt to get bundler to report all errors - so far unsuccessful
85
- #curl --retry 3 -o bundler-openssl.diff https://github.com/bundler/bundler/compare/v2.0.1...p-mongo:report-errors.diff
86
- #find . -path \*/lib/bundler/fetcher.rb -exec patch {} bundler-openssl.diff \;
87
-
88
- else
89
-
90
- # Normal operation
91
- if ! test -d $HOME/.rubies/$RVM_RUBY/bin; then
92
- echo "Ruby directory does not exist: $HOME/.rubies/$RVM_RUBY/bin" 1>&2
93
- echo "Contents of /opt:" 1>&2
94
- ls -l /opt 1>&2 || true
95
- echo ".rubies symlink:" 1>&2
96
- ls -ld $HOME/.rubies 1>&2 || true
97
- echo "Our rubies:" 1>&2
98
- ls -l $HOME/.rubies 1>&2 || true
99
- exit 2
100
- fi
101
- export PATH=$HOME/.rubies/$RVM_RUBY/bin:$PATH
102
-
103
- fi
104
-
105
- ruby --version
106
-
107
- # Ensure we're using the right ruby
108
- ruby_name=`echo $RVM_RUBY |awk -F- '{print $1}'`
109
- ruby_version=`echo $RVM_RUBY |awk -F- '{print $2}' |cut -c 1-3`
110
-
111
- ruby -v |fgrep $ruby_name
112
- ruby -v |fgrep $ruby_version
113
-
114
- # We shouldn't need to update rubygems, and there is value in
115
- # testing on whatever rubygems came with each supported ruby version
116
- #echo 'updating rubygems'
117
- #gem update --system
118
-
119
- # Only install bundler when not using ruby-head.
120
- # ruby-head comes with bundler and gem complains
121
- # because installing bundler would overwrite the bundler binary.
122
- # We now install bundler in the toolchain, hence nothing needs to be done
123
- # in the tests.
124
- if false && echo "$RVM_RUBY" |grep -q jruby; then
125
- gem install bundler -v '<2'
126
- fi
127
- fi
128
- }