mirror of
https://github.com/mongodb/mongo.git
synced 2024-11-25 09:19:32 +01:00
63 lines
2.3 KiB
Bash
63 lines
2.3 KiB
Bash
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null 2>&1 && pwd)"
|
|
. "$DIR/prelude.sh"
|
|
|
|
cd src/jepsen-mongodb
|
|
|
|
set -o verbose
|
|
|
|
# Set the TMPDIR environment variable to be a directory in the task's working
|
|
# directory so that temporary files created by processes spawned by jepsen get
|
|
# cleaned up after the task completes. This also ensures the spawned processes
|
|
# aren't impacted by limited space in the mount point for the /tmp directory.
|
|
# We also need to set the _JAVA_OPTIONS environment variable so that lein will
|
|
# recognize this as the default temp directory.
|
|
export TMPDIR="${workdir}/tmp"
|
|
mkdir -p $TMPDIR
|
|
export _JAVA_OPTIONS=-Djava.io.tmpdir=$TMPDIR
|
|
|
|
start_time=$(date +%s)
|
|
lein run test --test ${jepsen_test_name} \
|
|
--mongodb-dir ../ \
|
|
--working-dir ${workdir}/src/jepsen-workdir \
|
|
--clock-skew faketime \
|
|
--libfaketime-path ${workdir}/src/libfaketime/build/libfaketime.so.1 \
|
|
--mongod-conf mongod_verbose.conf \
|
|
--virtualization none \
|
|
--nodes-file ../nodes.txt \
|
|
${jepsen_key_time_limit} \
|
|
${jepsen_protocol_version} \
|
|
${jepsen_read_concern} \
|
|
${jepsen_read_with_find_and_modify} \
|
|
${jepsen_storage_engine} \
|
|
${jepsen_time_limit} \
|
|
${jepsen_write_concern} \
|
|
2>&1 \
|
|
| tee jepsen_${task_name}_${execution}.log
|
|
end_time=$(date +%s)
|
|
elapsed_secs=$((end_time - start_time))
|
|
# Since we cannot use PIPESTATUS to get the exit code from the "lein run ..." pipe in dash shell,
|
|
# we will check the output for success, failure or setup error. Note that 'grep' returns with exit code
|
|
# 0 if it finds a match, and exit code 1 if no match is found.
|
|
grep -q "Everything looks good" jepsen_${task_name}_${execution}.log
|
|
grep_exit_code=$?
|
|
if [ $grep_exit_code -eq 0 ]; then
|
|
status='"pass"'
|
|
failures=0
|
|
final_exit_code=0
|
|
else
|
|
grep -q "Analysis invalid" jepsen_${task_name}_${execution}.log
|
|
grep_exit_code=$?
|
|
if [ $grep_exit_code -eq 0 ]; then
|
|
status='"fail"'
|
|
failures=1
|
|
final_exit_code=1
|
|
else
|
|
# If the failure is due to setup, then this is considered a system failure.
|
|
echo $grep_exit_code > jepsen_system_failure_${task_name}_${execution}
|
|
exit 0
|
|
fi
|
|
fi
|
|
# Create report.json
|
|
echo "{\"failures\": $failures, \"results\": [{\"status\": $status, \"exit_code\": $final_exit_code, \"test_file\": \"${task_name}\", \"start\": $start_time, \"end\": $end_time, \"elapsed\": $elapsed_secs}]}" > ../report.json
|
|
exit $final_exit_code
|