1#!/bin/sh
2#
3# $OpenBSD: follow-overwrite-data.sh,v 1.2 2012/11/03 08:41:25 ajacoutot Exp $
4
5# test if tail follows a file overwritten by data
6
7#set TMPDIR to a nfs-based dir for nfs testing
8DIR=$(mktemp -d)
9echo DIR=${DIR}
10
11NAME=${0##*/}
12OUT=${DIR}/${NAME%%.sh}.out
13ERR=${DIR}/${NAME%%.sh}.err
14echo bar > ${DIR}/bar
15
16# retry until file appears for nfs
17RET=1
18while [ ${RET} == 1 ] ; do
19	tail -f ${DIR}/bar 2> ${ERR} > ${OUT} &
20	RET=$?
21	PID=$!
22	sleep 1
23done
24
25# smaller data
26echo 'ba' > ${DIR}/bar
27sleep 1
28# bigger data with delay
29echo 'baar' > ${DIR}/bar
30# smaller data without delay
31echo 'bar' > ${DIR}/bar
32
33# hey nfs !
34sleep 5
35kill ${PID}
36diff -u ${OUT} ${0%%.sh}.out || exit 1
37[ $(grep -c "tail: ${DIR}/bar has been truncated, resetting." ${ERR}) -eq 3 ] || exit 2
38
39# cleanup if okay
40rm -Rf ${DIR}
41