view tests/testlib/wait-on-file @ 48693:de3ac3d2c60b

stream-clone: allow to change persistent-nodemap format during stream clone Persistent nodemap affect the store format. However it is fairly isolated and fast to generate locally. So not making it a fixed part of the stream clone is useful. This allow clients without persistent-nodemap support (default for client without Rust enabled, or simply older client). So it make it possible to enable persistent nodemap on client, where it can provide a massive boost. without too much consequence. To do so, we stop using it in the advertisement requirements for streaming and let the client add/remove the necessary file depending of its configuration. We still send the files as it seems like a small save to not regenerate them. In addition, the way we match them will overlap with the changelog-v2/revlog-v2 so we can't simply skip the associated patterns. Differential Revision: https://phab.mercurial-scm.org/D12096
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 27 Jan 2022 22:24:11 +0100
parents 9d7d53771e5f
children a68b37524d50
line wrap: on
line source

#!/bin/sh
#
# wait up to TIMEOUT seconds until a WAIT_ON_FILE is created.
#
# In addition, this script can create CREATE_FILE once it is ready to wait.

if [ $# -lt 2 ] || [ $# -gt 3 ]; then
    echo $#
    echo "USAGE: $0 TIMEOUT WAIT_ON_FILE [CREATE_FILE]"
fi

timer="$1"

# Scale the timeout to match the sleep steps below, i.e. 1/0.02.
timer=$(( 50 * $timer ))
# If the test timeout have been extended, also scale the timer relative
# to the normal timing.
if [ "$HGTEST_TIMEOUT_DEFAULT" -lt "$HGTEST_TIMEOUT" ]; then
    timer=$(( ( $timer * $HGTEST_TIMEOUT) / $HGTEST_TIMEOUT_DEFAULT ))
fi

wait_on="$2"
create=""
if [ $# -eq 3 ]; then
    create="$3"
fi

if [ -n "$create" ]; then
    touch "$create"
    create=""
fi
while [ "$timer" -gt 0 ] && [ ! -f "$wait_on" ]; do
    timer=$(( $timer - 1))
    sleep 0.02
done
if [ "$timer" -le 0 ]; then
    echo "file not created after $1 seconds: $wait_on" >&2
    exit 1
fi