blob: 81666853b21a645442e019c0df2519fba2dd5f18 [file] [log] [blame] [edit]
#!/bin/bash
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Test locking.
set -eu
basedir=$(readlink -f -- "$(dirname -- "${BASH_SOURCE[0]}")")
cd "${basedir}"
venv_path=$(./create_venv ../venv/requirements.txt)
case "${venv_path}" in
~/.cache/cros_venv/*)
rm -rf "${venv_path}"
;;
*)
printf "\
test_locking: create_venv returned a suspicious path: %s
test_locking: refusing to run rm -rf
" "${venv_path}" >&2
exit 1
;;
esac
for _ in {1..5}; do
./create_venv ../venv/requirements.txt >/dev/null &
done
for _ in {1..30}; do
./create_venv ../venv/requirements.txt >/dev/null &
sleep 0.01
done
for pid in $(jobs -p); do
if wait "$pid"; then
printf "test_locking: %d okay\n" "${pid}" >&2
else
printf "test_locking: %d failed\n" "${pid}" >&2
echo FAIL
exit 1
fi
done
echo OK