#!/bin/bash

fail () {
  echo Test failed because: "$@" >&2
  exit 1
}

t=$(mktemp -d ${AUTOPKGTEST_TMP:+-p $AUTOPKGTEST_TMP})
lock="$t/lock"
trap "{ rm -rf $t; kill %1 %2 2>/dev/null || true; }" EXIT

xchpst -l $t/lock sleep 120 &

timeout 4 xchpst -L $lock uname 2>&1
[ $? -eq 111 ] || fail "didn't bail on taken lock"

timeout 4 xchpst -l $lock uname
[ $? -eq 124 ] || fail "didn't block on taken lock"

kill %1
wait

timeout 4 xchpst -L $lock uname
[ $? -eq  0 ] || fail "didn't succeed on free lock"

timeout 4 xchpst -l $lock uname
[ $? -eq  0 ] || fail "waited on free lock"

xchpst -l $lock sleep 12 &
sleep 4
timeout 16 xchpst -l $lock uname
