bson 4.15.0 → 5.0.2
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
- data/README.md +94 -10
- data/Rakefile +68 -39
- data/ext/bson/bson-native.h +12 -4
- data/ext/bson/extconf.rb +8 -3
- data/ext/bson/init.c +11 -11
- data/ext/bson/read.c +39 -9
- data/ext/bson/util.c +171 -16
- data/ext/bson/write.c +34 -39
- data/lib/bson/active_support.rb +1 -0
- data/lib/bson/array.rb +58 -32
- data/lib/bson/big_decimal.rb +16 -6
- data/lib/bson/binary.rb +271 -129
- data/lib/bson/boolean.rb +1 -0
- data/lib/bson/code.rb +10 -12
- data/lib/bson/code_with_scope.rb +9 -11
- data/lib/bson/config.rb +1 -27
- data/lib/bson/date.rb +2 -1
- data/lib/bson/date_time.rb +2 -1
- data/lib/bson/db_pointer.rb +12 -13
- data/lib/bson/dbref.rb +11 -9
- data/lib/bson/decimal128/builder.rb +10 -9
- data/lib/bson/decimal128.rb +25 -111
- data/lib/bson/document.rb +1 -0
- data/lib/bson/environment.rb +1 -0
- data/lib/bson/error/bson_decode_error.rb +11 -0
- data/lib/bson/error/ext_json_parse_error.rb +11 -0
- data/lib/bson/error/illegal_key.rb +23 -0
- data/lib/bson/error/invalid_binary_type.rb +37 -0
- data/lib/bson/error/invalid_dbref_argument.rb +12 -0
- data/lib/bson/error/invalid_decimal128_argument.rb +25 -0
- data/lib/bson/error/invalid_decimal128_range.rb +27 -0
- data/lib/bson/error/invalid_decimal128_string.rb +26 -0
- data/lib/bson/error/invalid_key.rb +24 -0
- data/lib/bson/error/invalid_object_id.rb +11 -0
- data/lib/bson/error/invalid_regexp_pattern.rb +13 -0
- data/lib/bson/error/unrepresentable_precision.rb +19 -0
- data/lib/bson/error/unserializable_class.rb +13 -0
- data/lib/bson/error/unsupported_binary_subtype.rb +12 -0
- data/lib/bson/error/unsupported_type.rb +11 -0
- data/lib/bson/error.rb +16 -28
- data/lib/bson/ext_json.rb +2 -1
- data/lib/bson/false_class.rb +2 -1
- data/lib/bson/float.rb +3 -2
- data/lib/bson/hash.rb +128 -73
- data/lib/bson/int32.rb +17 -5
- data/lib/bson/int64.rb +17 -5
- data/lib/bson/integer.rb +4 -5
- data/lib/bson/json.rb +1 -0
- data/lib/bson/max_key.rb +8 -10
- data/lib/bson/min_key.rb +8 -10
- data/lib/bson/nil_class.rb +1 -0
- data/lib/bson/object.rb +7 -27
- data/lib/bson/object_id.rb +84 -120
- data/lib/bson/open_struct.rb +3 -2
- data/lib/bson/regexp.rb +36 -65
- data/lib/bson/registry.rb +2 -6
- data/lib/bson/specialized.rb +2 -1
- data/lib/bson/string.rb +4 -27
- data/lib/bson/symbol.rb +23 -20
- data/lib/bson/time.rb +3 -2
- data/lib/bson/time_with_zone.rb +13 -1
- data/lib/bson/timestamp.rb +3 -2
- data/lib/bson/true_class.rb +2 -1
- data/lib/bson/undefined.rb +15 -1
- data/lib/bson/version.rb +3 -1
- data/lib/bson.rb +3 -2
- data/spec/bson/array_spec.rb +19 -60
- data/spec/bson/big_decimal_spec.rb +16 -4
- data/spec/bson/binary_spec.rb +129 -81
- data/spec/bson/binary_uuid_spec.rb +1 -0
- data/spec/bson/boolean_spec.rb +1 -0
- data/spec/bson/byte_buffer_read_spec.rb +1 -0
- data/spec/bson/byte_buffer_spec.rb +1 -0
- data/spec/bson/byte_buffer_write_spec.rb +1 -0
- data/spec/bson/code_spec.rb +5 -3
- data/spec/bson/code_with_scope_spec.rb +5 -3
- data/spec/bson/config_spec.rb +1 -35
- data/spec/bson/date_spec.rb +1 -0
- data/spec/bson/date_time_spec.rb +1 -0
- data/spec/bson/dbref_legacy_spec.rb +20 -3
- data/spec/bson/dbref_spec.rb +9 -9
- data/spec/bson/decimal128_spec.rb +40 -20
- data/spec/bson/document_as_spec.rb +1 -0
- data/spec/bson/document_spec.rb +1 -1
- data/spec/bson/ext_json_parse_spec.rb +1 -0
- data/spec/bson/false_class_spec.rb +8 -0
- data/spec/bson/float_spec.rb +8 -3
- data/spec/bson/hash_as_spec.rb +1 -0
- data/spec/bson/hash_spec.rb +87 -75
- data/spec/bson/int32_spec.rb +21 -6
- data/spec/bson/int64_spec.rb +21 -6
- data/spec/bson/integer_spec.rb +45 -13
- data/spec/bson/json_spec.rb +1 -0
- data/spec/bson/max_key_spec.rb +5 -3
- data/spec/bson/min_key_spec.rb +5 -3
- data/spec/bson/nil_class_spec.rb +1 -0
- data/spec/bson/object_id_spec.rb +57 -4
- data/spec/bson/object_spec.rb +2 -1
- data/spec/bson/open_struct_spec.rb +14 -71
- data/spec/bson/raw_spec.rb +9 -15
- data/spec/bson/regexp_spec.rb +4 -3
- data/spec/bson/registry_spec.rb +2 -1
- data/spec/bson/string_spec.rb +13 -38
- data/spec/bson/symbol_raw_spec.rb +25 -0
- data/spec/bson/symbol_spec.rb +15 -18
- data/spec/bson/time_spec.rb +1 -0
- data/spec/bson/time_with_zone_spec.rb +1 -0
- data/spec/bson/timestamp_spec.rb +1 -0
- data/spec/bson/true_class_spec.rb +8 -0
- data/spec/bson/undefined_spec.rb +27 -0
- data/spec/bson_spec.rb +1 -0
- data/spec/runners/common_driver.rb +6 -5
- data/spec/runners/corpus.rb +6 -0
- data/spec/runners/corpus_legacy.rb +1 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/spec_tests/common_driver_spec.rb +9 -4
- data/spec/spec_tests/corpus_legacy_spec.rb +1 -0
- data/spec/spec_tests/corpus_spec.rb +13 -3
- data/spec/spec_tests/data/corpus/binary.json +5 -0
- data/spec/spec_tests/data/corpus/code.json +13 -13
- data/spec/spec_tests/data/corpus/decimal128-4.json +48 -0
- data/spec/spec_tests/data/corpus/decimal128-6.json +12 -0
- data/spec/spec_tests/data/corpus/decimal128-7.json +4 -0
- data/spec/spec_tests/data/corpus/document.json +20 -0
- data/spec/spec_tests/data/corpus/symbol.json +7 -7
- data/spec/spec_tests/data/corpus/top.json +18 -3
- data/spec/support/shared_examples.rb +28 -5
- data/spec/support/spec_config.rb +1 -0
- data/spec/support/utils.rb +49 -1
- metadata +114 -164
- checksums.yaml.gz.sig +0 -0
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -231
- data/spec/shared/lib/mrss/constraints.rb +0 -386
- data/spec/shared/lib/mrss/docker_runner.rb +0 -271
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -191
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -338
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/distro.sh +0 -74
- data/spec/shared/shlib/server.sh +0 -367
- data/spec/shared/shlib/set_env.sh +0 -131
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -1
data/spec/shared/shlib/distro.sh
DELETED
@@ -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
|
-
}
|
data/spec/shared/shlib/server.sh
DELETED
@@ -1,367 +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
|
-
# 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.
|
142
|
-
calculate_server_args() {
|
143
|
-
local mongo_version=`echo $MONGODB_VERSION |tr -d .`
|
144
|
-
|
145
|
-
if test -z "$mongo_version"; then
|
146
|
-
echo "$MONGODB_VERSION must be set and not contain only dots" 1>&2
|
147
|
-
exit 3
|
148
|
-
fi
|
149
|
-
|
150
|
-
if test $mongo_version = latest; then
|
151
|
-
mongo_version=49
|
152
|
-
fi
|
153
|
-
|
154
|
-
local args="--setParameter enableTestCommands=1"
|
155
|
-
|
156
|
-
if test $mongo_version -ge 50; then
|
157
|
-
args="$args --setParameter acceptApiVersion2=1"
|
158
|
-
elif test $mongo_version -ge 47; then
|
159
|
-
args="$args --setParameter acceptAPIVersion2=1"
|
160
|
-
fi
|
161
|
-
|
162
|
-
# diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
|
163
|
-
# and mlaunch does not support specifying mongod-only parameters:
|
164
|
-
# https://github.com/rueckstiess/mtools/issues/696
|
165
|
-
# Pass it to 3.4 and newer servers where it is accepted by all daemons.
|
166
|
-
if test $mongo_version -ge 34; then
|
167
|
-
args="$args --setParameter diagnosticDataCollectionEnabled=false"
|
168
|
-
fi
|
169
|
-
local uri_options=
|
170
|
-
if test "$TOPOLOGY" = replica-set; then
|
171
|
-
args="$args --replicaset --name test-rs --nodes 2 --arbiter"
|
172
|
-
export HAVE_ARBITER=1
|
173
|
-
elif test "$TOPOLOGY" = sharded-cluster; then
|
174
|
-
args="$args --replicaset --nodes 2 --sharded 1 --name test-rs"
|
175
|
-
if test -z "$SINGLE_MONGOS"; then
|
176
|
-
args="$args --mongos 2"
|
177
|
-
fi
|
178
|
-
elif test "$TOPOLOGY" = standalone; then
|
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
|
196
|
-
fi
|
197
|
-
if test -n "$MMAPV1"; then
|
198
|
-
args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
|
199
|
-
uri_options="$uri_options&retryReads=false&retryWrites=false"
|
200
|
-
fi
|
201
|
-
if test "$AUTH" = auth; then
|
202
|
-
args="$args --auth --username bob --password pwd123"
|
203
|
-
elif test "$AUTH" = x509; then
|
204
|
-
args="$args --auth --username bootstrap --password bootstrap"
|
205
|
-
elif echo "$AUTH" |grep -q ^aws; then
|
206
|
-
args="$args --auth --username bootstrap --password bootstrap"
|
207
|
-
args="$args --setParameter authenticationMechanisms=MONGODB-AWS,SCRAM-SHA-1,SCRAM-SHA-256"
|
208
|
-
uri_options="$uri_options&authMechanism=MONGODB-AWS&authSource=\$external"
|
209
|
-
fi
|
210
|
-
|
211
|
-
if test -n "$OCSP"; then
|
212
|
-
if test -z "$OCSP_ALGORITHM"; then
|
213
|
-
echo "OCSP_ALGORITHM must be set if OCSP is set" 1>&2
|
214
|
-
exit 1
|
215
|
-
fi
|
216
|
-
fi
|
217
|
-
|
218
|
-
if test "$SSL" = ssl || test -n "$OCSP_ALGORITHM"; then
|
219
|
-
if test -n "$OCSP_ALGORITHM"; then
|
220
|
-
if test "$OCSP_MUST_STAPLE" = 1; then
|
221
|
-
server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server-mustStaple.pem
|
222
|
-
else
|
223
|
-
server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
|
224
|
-
fi
|
225
|
-
server_ca_path=spec/support/ocsp/$OCSP_ALGORITHM/ca.crt
|
226
|
-
server_client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
|
227
|
-
else
|
228
|
-
server_cert_path=spec/support/certificates/server-second-level-bundle.pem
|
229
|
-
server_ca_path=spec/support/certificates/ca.crt
|
230
|
-
server_client_cert_path=spec/support/certificates/client.pem
|
231
|
-
fi
|
232
|
-
|
233
|
-
if test -n "$OCSP_ALGORITHM"; then
|
234
|
-
client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
|
235
|
-
elif test "$AUTH" = x509; then
|
236
|
-
client_cert_path=spec/support/certificates/client-x509.pem
|
237
|
-
|
238
|
-
uri_options="$uri_options&authMechanism=MONGODB-X509"
|
239
|
-
elif echo $RVM_RUBY |grep -q jruby; then
|
240
|
-
# JRuby does not grok chained certificate bundles -
|
241
|
-
# https://github.com/jruby/jruby-openssl/issues/181
|
242
|
-
client_cert_path=spec/support/certificates/client.pem
|
243
|
-
else
|
244
|
-
client_cert_path=spec/support/certificates/client-second-level-bundle.pem
|
245
|
-
fi
|
246
|
-
|
247
|
-
uri_options="$uri_options&tls=true&"\
|
248
|
-
"tlsCAFile=$server_ca_path&"\
|
249
|
-
"tlsCertificateKeyFile=$client_cert_path"
|
250
|
-
|
251
|
-
args="$args --sslMode requireSSL"\
|
252
|
-
" --sslPEMKeyFile $server_cert_path"\
|
253
|
-
" --sslCAFile $server_ca_path"\
|
254
|
-
" --sslClientCertificate $server_client_cert_path"
|
255
|
-
fi
|
256
|
-
|
257
|
-
# Docker forwards ports to the external interface, not to the loopback.
|
258
|
-
# Hence we must bind to all interfaces here.
|
259
|
-
if test -n "$BIND_ALL"; then
|
260
|
-
args="$args --bind_ip_all"
|
261
|
-
fi
|
262
|
-
|
263
|
-
# MongoDB servers pre-4.2 do not enable zlib compression by default
|
264
|
-
if test "$COMPRESSOR" = snappy; then
|
265
|
-
args="$args --networkMessageCompressors snappy"
|
266
|
-
elif test "$COMPRESSOR" = zlib; then
|
267
|
-
args="$args --networkMessageCompressors zlib"
|
268
|
-
fi
|
269
|
-
|
270
|
-
if test -n "$OCSP_ALGORITHM" || test -n "$OCSP_VERIFIER"; then
|
271
|
-
python3 -m pip install asn1crypto oscrypto flask
|
272
|
-
fi
|
273
|
-
|
274
|
-
local ocsp_args=
|
275
|
-
if test -n "$OCSP_ALGORITHM"; then
|
276
|
-
if test -z "$server_ca_path"; then
|
277
|
-
echo "server_ca_path must have been set" 1>&2
|
278
|
-
exit 1
|
279
|
-
fi
|
280
|
-
ocsp_args="--ca_file $server_ca_path"
|
281
|
-
if test "$OCSP_DELEGATE" = 1; then
|
282
|
-
ocsp_args="$ocsp_args \
|
283
|
-
--ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.crt \
|
284
|
-
--ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.key \
|
285
|
-
"
|
286
|
-
else
|
287
|
-
ocsp_args="$ocsp_args \
|
288
|
-
--ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ca.crt \
|
289
|
-
--ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ca.key \
|
290
|
-
"
|
291
|
-
fi
|
292
|
-
if test -n "$OCSP_STATUS"; then
|
293
|
-
ocsp_args="$ocsp_args --fault $OCSP_STATUS"
|
294
|
-
fi
|
295
|
-
fi
|
296
|
-
|
297
|
-
OCSP_ARGS="$ocsp_args"
|
298
|
-
SERVER_ARGS="$args"
|
299
|
-
URI_OPTIONS="$uri_options"
|
300
|
-
}
|
301
|
-
|
302
|
-
launch_ocsp_mock() {
|
303
|
-
if test -n "$OCSP_ARGS"; then
|
304
|
-
# Bind to 0.0.0.0 for Docker
|
305
|
-
python3 spec/support/ocsp/ocsp_mock.py $OCSP_ARGS -b 0.0.0.0 -p 8100 &
|
306
|
-
OCSP_MOCK_PID=$!
|
307
|
-
fi
|
308
|
-
}
|
309
|
-
|
310
|
-
launch_server() {
|
311
|
-
local dbdir="$1"
|
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
|
367
|
-
}
|
@@ -1,131 +0,0 @@
|
|
1
|
-
TOOLCHAIN_VERSION=43b0b8a644363c4052b9bf8221320a1828fe01a5
|
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
|
-
elif test "$SYSTEM_RUBY" = 1; then
|
72
|
-
# Nothing
|
73
|
-
:
|
74
|
-
else
|
75
|
-
if test "$USE_OPT_TOOLCHAIN" = 1; then
|
76
|
-
# Nothing, also PATH is already set
|
77
|
-
:
|
78
|
-
elif true; then
|
79
|
-
|
80
|
-
# For testing toolchains:
|
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
|
82
|
-
toolchain_url=http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/$TOOLCHAIN_VERSION/`host_distro`/$RVM_RUBY.tar.xz
|
83
|
-
curl --retry 3 -fL $toolchain_url |tar Jxf -
|
84
|
-
export PATH=`pwd`/rubies/$RVM_RUBY/bin:$PATH
|
85
|
-
#export PATH=`pwd`/rubies/python/3/bin:$PATH
|
86
|
-
|
87
|
-
# Attempt to get bundler to report all errors - so far unsuccessful
|
88
|
-
#curl --retry 3 -o bundler-openssl.diff https://github.com/bundler/bundler/compare/v2.0.1...p-mongo:report-errors.diff
|
89
|
-
#find . -path \*/lib/bundler/fetcher.rb -exec patch {} bundler-openssl.diff \;
|
90
|
-
|
91
|
-
else
|
92
|
-
|
93
|
-
# Normal operation
|
94
|
-
if ! test -d $HOME/.rubies/$RVM_RUBY/bin; then
|
95
|
-
echo "Ruby directory does not exist: $HOME/.rubies/$RVM_RUBY/bin" 1>&2
|
96
|
-
echo "Contents of /opt:" 1>&2
|
97
|
-
ls -l /opt 1>&2 || true
|
98
|
-
echo ".rubies symlink:" 1>&2
|
99
|
-
ls -ld $HOME/.rubies 1>&2 || true
|
100
|
-
echo "Our rubies:" 1>&2
|
101
|
-
ls -l $HOME/.rubies 1>&2 || true
|
102
|
-
exit 2
|
103
|
-
fi
|
104
|
-
export PATH=$HOME/.rubies/$RVM_RUBY/bin:$PATH
|
105
|
-
|
106
|
-
fi
|
107
|
-
|
108
|
-
ruby --version
|
109
|
-
|
110
|
-
# Ensure we're using the right ruby
|
111
|
-
ruby_name=`echo $RVM_RUBY |awk -F- '{print $1}'`
|
112
|
-
ruby_version=`echo $RVM_RUBY |awk -F- '{print $2}' |cut -c 1-3`
|
113
|
-
|
114
|
-
ruby -v |fgrep $ruby_name
|
115
|
-
ruby -v |fgrep $ruby_version
|
116
|
-
|
117
|
-
# We shouldn't need to update rubygems, and there is value in
|
118
|
-
# testing on whatever rubygems came with each supported ruby version
|
119
|
-
#echo 'updating rubygems'
|
120
|
-
#gem update --system
|
121
|
-
|
122
|
-
# Only install bundler when not using ruby-head.
|
123
|
-
# ruby-head comes with bundler and gem complains
|
124
|
-
# because installing bundler would overwrite the bundler binary.
|
125
|
-
# We now install bundler in the toolchain, hence nothing needs to be done
|
126
|
-
# in the tests.
|
127
|
-
if false && echo "$RVM_RUBY" |grep -q jruby; then
|
128
|
-
gem install bundler -v '<2'
|
129
|
-
fi
|
130
|
-
fi
|
131
|
-
}
|
data.tar.gz.sig
DELETED
Binary file
|
metadata.gz.sig
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
�mT*�#�9}<e4���,���k�
|