mongoid 7.1.6 → 7.1.7

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.
@@ -0,0 +1,229 @@
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
+ toolchain_upper='291ba4a4e8297f142796e70eee71b99f333e35e1'
16
+
17
+ ruby_toolchain_url = "http://boxes.10gen.com/build/toolchain-drivers/mongo-ruby-driver/ruby-toolchain-#{distro}-#{toolchain_upper}.tar.xz"
18
+ #ruby_toolchain_url = "https://s3.amazonaws.com//mciuploads/mongo-ruby-toolchain/#{distro}/#{toolchain_upper}/mongo_ruby_driver_toolchain_#{distro.gsub('-', '_')}_patch_#{toolchain_upper}_#{toolchain_lower}.tar.gz"
19
+
20
+ %>
21
+
22
+ FROM <%= base_image %>
23
+
24
+ <% if debian? %>
25
+
26
+ ENV DEBIAN_FRONTEND=noninteractive
27
+
28
+ <% else %>
29
+
30
+ RUN echo assumeyes=1 |tee -a /etc/yum.conf
31
+
32
+ <% end %>
33
+
34
+ <% if ruby_head? %>
35
+
36
+ # To use current versions of mlaunch, Python 3.6+ is required.
37
+ # Most distros ship with older Pythons, therefore we need to install
38
+ # a newer Python from somewhere. This section installs the Python
39
+ # toolhcain which comes with recent Pythons.
40
+ # Alternatively, Ruby toolchain compiles its own copy of Python 3 but
41
+ # this is currently incomplete in that on older distros with old OpenSSL,
42
+ # the built Python has no ssl module and hence practically is unusable.
43
+ # Currently Ruby driver uses mtools-legacy which supports Python 2,
44
+ # avoiding this entire issue for the time being.
45
+
46
+ #RUN curl --retry 3 -fL <%= python_toolchain_url %> -o python-toolchain.tar.gz
47
+ #RUN tar -xC /opt -zf python-toolchain.tar.gz
48
+
49
+ <% end %>
50
+
51
+ <% if debian? %>
52
+
53
+ # zsh is not required for any scripts but it is a better interactive shell
54
+ # than bash.
55
+ # Ruby runtime dependencies: libyaml-0-2
56
+ # Compiling ruby libraries: gcc make
57
+ # Compiling pyhton packages: python2.7-dev
58
+ # JRuby: openjdk-8-jre-headless
59
+ # Server dependencies: libsnmp30 libcurl3/libcurl4
60
+ # Determining OS we are running on: lsb-release
61
+ # Kerberos testing: krb5-user
62
+ # Local Kerberos server: krb5-kdc krb5-admin-server
63
+ # Installing mlaunch from git: git
64
+ # ruby-head archive: bzip2
65
+ # nio4r on JRuby: libgmp-dev
66
+ # Snappy compression: libsnappy-dev
67
+ # nokogiri: zlib1g-dev
68
+ # Mongoid testing: tzdata
69
+ # Mongoid application testing: nodejs (8.x or newer)
70
+ #
71
+ # We currently use Python 2-compatible version of mtools, which
72
+ # is installable via pip (which uses Python 2). All of the MongoDB
73
+ # distros have pip installed (but none as of this writing have pip3)
74
+ # therefore install python-pip in all configurations here.
75
+
76
+ <% packages = %w(
77
+ lsb-release bzip2 curl zsh
78
+ git make gcc libyaml-0-2 libgmp-dev zlib1g-dev libsnappy-dev
79
+ libsnmp30
80
+ krb5-user krb5-kdc krb5-admin-server libsasl2-dev libsasl2-modules-gssapi-mit
81
+ python-pip python2.7-dev python3-pip
82
+ tzdata
83
+ ) %>
84
+
85
+ # ubuntu1404 only has openjdk-7-jre-headless
86
+ <% if distro !~ /ubuntu1404/ %>
87
+ <% packages << 'openjdk-8-jre-headless' %>
88
+ <% end %>
89
+
90
+ # ubuntu1404, ubuntu1604: libcurl3
91
+ # ubuntu1804: libcurl4
92
+ <% if distro =~ /ubuntu1804/ %>
93
+ <% packages << 'libcurl4' %>
94
+ <% else %>
95
+ <% packages << 'libcurl3' %>
96
+ <% end %>
97
+
98
+ <% if distro =~ /ubuntu1804/ %>
99
+ <% packages << 'nodejs' %>
100
+ <% end %>
101
+
102
+ RUN apt-get update && apt-get install -y <%= packages.join(' ') %>
103
+ <% else %>
104
+
105
+ # Enterprise server: net-snmp
106
+ # lsb_release: redhat-lsb-core
107
+ # our runner scripts: which
108
+ # Ruby dependency: libyaml
109
+ # compiling python packages: gcc python-devel
110
+ # Kerberos tests: krb5-workstation + cyrus-sasl-devel to build the
111
+ # mongo_kerberos gem + cyrus-sasl-gssapi for authentication to work
112
+ # Local Kerberos server: krb5-server
113
+ # JRuby: java-1.8.0-openjdk
114
+ #
115
+ # Note: lacking cyrus-sasl-gssapi produces a cryptic message
116
+ # "SASL(-4): no mechanism available: No worthy mechs found"
117
+ # https://github.com/farorm/python-ad/issues/10
118
+
119
+ RUN yum install -y redhat-lsb-core which git gcc libyaml krb5-server \
120
+ krb5-workstation cyrus-sasl-devel cyrus-sasl-gssapi java-1.8.0-openjdk \
121
+ net-snmp
122
+
123
+ <% if distro =~ /rhel6/ %>
124
+
125
+ # RHEL 6 ships with Python 2.6.
126
+
127
+ RUN yum install -y centos-release-scl && \
128
+ yum install -y python27-python python27-python-devel
129
+ ENV PATH=/opt/rh/python27/root/usr/bin:$PATH \
130
+ LD_LIBRARY_PATH=/opt/rh/python27/root/usr/lib64
131
+
132
+ <% else %>
133
+
134
+ RUN yum install -y python-devel
135
+
136
+ <% end %>
137
+
138
+ <% end %>
139
+
140
+ <% if preload? %>
141
+
142
+ WORKDIR /app
143
+
144
+ RUN curl --retry 3 -fL <%= server_download_url %> |tar xzf - && \
145
+ mv mongo*/ /opt/mongodb
146
+ ENV USE_OPT_MONGODB=1
147
+
148
+ <% unless ruby_head? %>
149
+
150
+ RUN curl --retry 3 -fL <%= ruby_toolchain_url %> |tar -xC /opt -Jf -
151
+ ENV PATH=/opt/rubies/<%= ruby %>/bin:$PATH \
152
+ USE_OPT_TOOLCHAIN=1
153
+ #ENV PATH=/opt/rubies/python/3/bin:$PATH
154
+
155
+ <% end %>
156
+
157
+ <% if distro =~ /rhel|ubuntu1604/ %>
158
+
159
+ # Ubuntu 12.04 ships pip 1.0 which is ancient and does not work.
160
+ #
161
+ # Ubuntu 16.04 apparently also ships a pip that does not work:
162
+ # https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry
163
+ # Potentially this only affects environments with less than ideal
164
+ # connectivity (or, perhaps, when python package registry is experiencing
165
+ # availability issues) when pip must retry to install packages.
166
+ #
167
+ # rhel apparently does not package pip at all in core repoitories,
168
+ # therefore install it the manual way.
169
+ #
170
+ # https://pip.pypa.io/en/stable/installing/
171
+ RUN curl --retry 3 -fL https://raw.githubusercontent.com/pypa/get-pip/master/2.7/get-pip.py | python
172
+
173
+ <% end %>
174
+
175
+ RUN pip --version && \
176
+ pip install mtools-legacy[mlaunch]
177
+
178
+ <% if @env.fetch('MONGODB_VERSION') >= '4.4' %>
179
+ RUN python3 -mpip install asn1crypto oscrypto flask
180
+ <% end %>
181
+
182
+ <% end %>
183
+
184
+ WORKDIR /app
185
+
186
+ <% if preload? && !ruby_head? %>
187
+
188
+ COPY Gemfile .
189
+ COPY gemfiles gemfiles
190
+ COPY *.gemspec .
191
+ COPY lib/<%= project_lib_subdir %>/version.rb lib/<%= project_lib_subdir %>/version.rb
192
+ RUN bundle install
193
+ COPY .evergreen/patch-debuggers .evergreen/patch-debuggers
194
+ RUN .evergreen/patch-debuggers /opt/rubies
195
+
196
+ <% end %>
197
+
198
+ <% if fle? %>
199
+ RUN curl --retry 3 -fLo libmongocrypt-all.tar.gz "https://s3.amazonaws.com/mciuploads/libmongocrypt/all/master/latest/libmongocrypt-all.tar.gz"
200
+ RUN tar xf libmongocrypt-all.tar.gz
201
+
202
+ <%= "ENV LIBMONGOCRYPT_PATH #{libmongocrypt_path}" %>
203
+ <% end %>
204
+
205
+ ENV MONGO_ORCHESTRATION_HOME=/tmpfs \
206
+ PROJECT_DIRECTORY=/app \
207
+ <%= @env.map { |k, v| %Q`#{k}="#{v.gsub('$', "\\$").gsub('"', "\\\"")}"` }.join(" \\\n ") %>
208
+
209
+ <% if interactive? %>
210
+ ENV INTERACTIVE=1
211
+ <% end %>
212
+
213
+ COPY . .
214
+
215
+ <% if expose? %>
216
+
217
+ <% ports = [] %>
218
+
219
+ <% 0.upto(num_exposed_ports-1) do |i| %>
220
+ <% ports << 27017 + i %>
221
+ <% end %>
222
+
223
+ <% if @env['OCSP_ALGORITHM'] %>
224
+ <% ports << 8100 %>
225
+ <% end %>
226
+
227
+ EXPOSE <%= ports.map(&:to_s).join(' ') %>
228
+
229
+ <% end %>
@@ -0,0 +1,73 @@
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
+ }
@@ -0,0 +1,270 @@
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
+ # Current virtualenv fails with
61
+ # https://github.com/pypa/virtualenv/issues/1630
62
+ python -m pip install 'virtualenv<20' --user
63
+ venvpath="$MONGO_ORCHESTRATION_HOME"/venv
64
+ python2 -m virtualenv -p python2 $venvpath
65
+ . $venvpath/bin/activate
66
+ pip install 'mtools-legacy[mlaunch]'
67
+ }
68
+
69
+ install_mlaunch_pip() {
70
+ if test -n "$USE_OPT_MONGODB" && which mlaunch >/dev/null 2>&1; then
71
+ # mlaunch is preinstalled in the docker image, do not install it here
72
+ return
73
+ fi
74
+
75
+ python -V || true
76
+ python3 -V || true
77
+ pythonpath="$MONGO_ORCHESTRATION_HOME"/python
78
+ pip install -t "$pythonpath" 'mtools-legacy[mlaunch]'
79
+ export PATH="$pythonpath/bin":$PATH
80
+ export PYTHONPATH="$pythonpath"
81
+ }
82
+
83
+ install_mlaunch_git() {
84
+ repo=$1
85
+ branch=$2
86
+ python -V || true
87
+ python3 -V || true
88
+ which pip || true
89
+ which pip3 || true
90
+
91
+ if false; then
92
+ if ! virtualenv --version; then
93
+ python3 `which pip3` install --user virtualenv
94
+ export PATH=$HOME/.local/bin:$PATH
95
+ virtualenv --version
96
+ fi
97
+
98
+ venvpath="$MONGO_ORCHESTRATION_HOME"/venv
99
+ virtualenv -p python3 $venvpath
100
+ . $venvpath/bin/activate
101
+
102
+ pip3 install psutil pymongo
103
+
104
+ git clone $repo mlaunch
105
+ cd mlaunch
106
+ git checkout origin/$branch
107
+ python3 setup.py install
108
+ cd ..
109
+ else
110
+ pip install --user 'virtualenv==13'
111
+ export PATH=$HOME/.local/bin:$PATH
112
+
113
+ venvpath="$MONGO_ORCHESTRATION_HOME"/venv
114
+ virtualenv $venvpath
115
+ . $venvpath/bin/activate
116
+
117
+ pip install psutil pymongo
118
+
119
+ git clone $repo mlaunch
120
+ (cd mlaunch &&
121
+ git checkout origin/$branch &&
122
+ python setup.py install
123
+ )
124
+ fi
125
+ }
126
+
127
+ calculate_server_args() {
128
+ local mongo_version=`echo $MONGODB_VERSION |tr -d .`
129
+ if test $mongo_version = latest; then
130
+ mongo_version=44
131
+ fi
132
+
133
+ local args="--setParameter enableTestCommands=1"
134
+ # diagnosticDataCollectionEnabled is a mongod-only parameter on server 3.2,
135
+ # and mlaunch does not support specifying mongod-only parameters:
136
+ # https://github.com/rueckstiess/mtools/issues/696
137
+ # Pass it to 3.4 and newer servers where it is accepted by all daemons.
138
+ if test $mongo_version -ge 34; then
139
+ args="$args --setParameter diagnosticDataCollectionEnabled=false"
140
+ fi
141
+ local uri_options=
142
+ if test "$TOPOLOGY" = replica-set; then
143
+ args="$args --replicaset --name ruby-driver-rs --nodes 2 --arbiter"
144
+ export HAVE_ARBITER=1
145
+ elif test "$TOPOLOGY" = sharded-cluster; then
146
+ args="$args --replicaset --nodes 1 --sharded 1 --name ruby-driver-rs"
147
+ if test -z "$SINGLE_MONGOS"; then
148
+ args="$args --mongos 2"
149
+ fi
150
+ else
151
+ args="$args --single"
152
+ fi
153
+ if test -n "$MMAPV1"; then
154
+ args="$args --storageEngine mmapv1 --smallfiles --noprealloc"
155
+ uri_options="$uri_options&retryReads=false&retryWrites=false"
156
+ fi
157
+ if test "$AUTH" = auth; then
158
+ args="$args --auth --username bob --password pwd123"
159
+ elif test "$AUTH" = x509; then
160
+ args="$args --auth --username bootstrap --password bootstrap"
161
+ elif echo "$AUTH" |grep -q ^aws; then
162
+ args="$args --auth --username bootstrap --password bootstrap"
163
+ args="$args --setParameter authenticationMechanisms=MONGODB-AWS,SCRAM-SHA-1,SCRAM-SHA-256"
164
+ uri_options="$uri_options&authMechanism=MONGODB-AWS&authSource=\$external"
165
+ fi
166
+
167
+ if test -n "$OCSP"; then
168
+ if test -z "$OCSP_ALGORITHM"; then
169
+ echo "OCSP_ALGORITHM must be set if OCSP is set" 1>&2
170
+ exit 1
171
+ fi
172
+ fi
173
+
174
+ local server_cert_path server_ca_path server_client_cert_path
175
+ if test "$SSL" = ssl || test -n "$OCSP_ALGORITHM"; then
176
+ if test -n "$OCSP_ALGORITHM"; then
177
+ if test "$OCSP_MUST_STAPLE" = 1; then
178
+ server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server-mustStaple.pem
179
+ else
180
+ server_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
181
+ fi
182
+ server_ca_path=spec/support/ocsp/$OCSP_ALGORITHM/ca.crt
183
+ server_client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
184
+ else
185
+ server_cert_path=spec/support/certificates/server-second-level-bundle.pem
186
+ server_ca_path=spec/support/certificates/ca.crt
187
+ server_client_cert_path=spec/support/certificates/client.pem
188
+ fi
189
+
190
+ if test -n "$OCSP_ALGORITHM"; then
191
+ client_cert_path=spec/support/ocsp/$OCSP_ALGORITHM/server.pem
192
+ elif test "$AUTH" = x509; then
193
+ client_cert_path=spec/support/certificates/client-x509.pem
194
+
195
+ uri_options="$uri_options&authMechanism=MONGODB-X509"
196
+ elif echo $RVM_RUBY |grep -q jruby; then
197
+ # JRuby does not grok chained certificate bundles -
198
+ # https://github.com/jruby/jruby-openssl/issues/181
199
+ client_cert_path=spec/support/certificates/client.pem
200
+ else
201
+ client_cert_path=spec/support/certificates/client-second-level-bundle.pem
202
+ fi
203
+
204
+ uri_options="$uri_options&tls=true&"\
205
+ "tlsCAFile=$server_ca_path&"\
206
+ "tlsCertificateKeyFile=$client_cert_path"
207
+
208
+ args="$args --sslMode requireSSL"\
209
+ " --sslPEMKeyFile $server_cert_path"\
210
+ " --sslCAFile $server_ca_path"\
211
+ " --sslClientCertificate $server_client_cert_path"
212
+ fi
213
+
214
+ # Docker forwards ports to the external interface, not to the loopback.
215
+ # Hence we must bind to all interfaces here.
216
+ if test -n "$BIND_ALL"; then
217
+ args="$args --bind_ip_all"
218
+ fi
219
+
220
+ # MongoDB servers pre-4.2 do not enable zlib compression by default
221
+ if test "$COMPRESSOR" = snappy; then
222
+ args="$args --networkMessageCompressors snappy"
223
+ elif test "$COMPRESSOR" = zlib; then
224
+ args="$args --networkMessageCompressors zlib"
225
+ fi
226
+
227
+ if test -n "$OCSP_ALGORITHM" || test -n "$OCSP_VERIFIER"; then
228
+ python3 -m pip install asn1crypto oscrypto flask
229
+ fi
230
+
231
+ local ocsp_args=
232
+ if test -n "$OCSP_ALGORITHM"; then
233
+ if test -z "$server_ca_path"; then
234
+ echo "server_ca_path must have been set" 1>&2
235
+ exit 1
236
+ fi
237
+ ocsp_args="--ca_file $server_ca_path"
238
+ if test "$OCSP_DELEGATE" = 1; then
239
+ ocsp_args="$ocsp_args \
240
+ --ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.crt \
241
+ --ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ocsp-responder.key \
242
+ "
243
+ else
244
+ ocsp_args="$ocsp_args \
245
+ --ocsp_responder_cert spec/support/ocsp/$OCSP_ALGORITHM/ca.crt \
246
+ --ocsp_responder_key spec/support/ocsp/$OCSP_ALGORITHM/ca.key \
247
+ "
248
+ fi
249
+ if test -n "$OCSP_STATUS"; then
250
+ ocsp_args="$ocsp_args --fault $OCSP_STATUS"
251
+ fi
252
+ fi
253
+
254
+ OCSP_ARGS="$ocsp_args"
255
+ SERVER_ARGS="$args"
256
+ URI_OPTIONS="$uri_options"
257
+ }
258
+
259
+ launch_ocsp_mock() {
260
+ if test -n "$OCSP_ARGS"; then
261
+ # Bind to 0.0.0.0 for Docker
262
+ python3 spec/support/ocsp/ocsp_mock.py $OCSP_ARGS -b 0.0.0.0 -p 8100 &
263
+ OCSP_MOCK_PID=$!
264
+ fi
265
+ }
266
+
267
+ launch_server() {
268
+ local dbdir="$1"
269
+ python -m mtools.mlaunch.mlaunch --dir "$dbdir" --binarypath "$BINDIR" $SERVER_ARGS
270
+ }