#!/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
