#!/bin/sh

source dlog_test_header

trap cleanup 0

export DLOG_CONFIG_PATH="/usr/share/dlog-$type.conf.test"
TESTDIR=/var/lib/dlog-tests

rm "$TESTDIR"/test*

dlog_logger -t 0 -b 0 &
LOGGER=$!
sleep 1

dlogsend -b main -t DLOG_LOGGER_TEST0 -c 100 "hi"
sleep 2
LOG_DETAILS="testing if logger daemon persistent logging works (1/3)"
[ "$(grep -c DLOG_LOGGER_TEST0 "$TESTDIR"/test0)" -eq 100 ] && ok || fail
LOG_DETAILS="testing if logger daemon persistent logging works (2/3)"
[ "$(grep -c DLOG_LOGGER_TEST0 "$TESTDIR"/test1)" -eq 100 ] && ok || fail
LOG_DETAILS="testing if logger daemon persistent logging works (3/3)"
[ "$(grep -c DLOG_LOGGER_TEST0 "$TESTDIR"/test2)" -eq 0 ] && ok || fail

dlogsend -b main -t DLOG_LOGGER_TEST1 -c 500000 "hi"
sleep 4
RESULT=$(du -c "$TESTDIR"/test0* | tail -n 1 | cut -f 1)
LOG_DETAILS="testing if logger daemon log rotating works (1/2)"
[ "$RESULT" -gt 4096 ] && ok || fail # Min 4 MB
LOG_DETAILS="testing if logger daemon log rotating works (2/2)"
[ "$RESULT" -lt 6144 ] && ok || fail # Max 6 MB

dlogutil -cb main
kill $LOGGER > /dev/null
sleep 1
rm "$TESTDIR"/test0*

if [ "$1" = "zero-copy" ]; then
	echo "zero-copy not supported for buffering tests"
	exit 0
fi

dlog_logger -t 5 -b 100000 &
LOGGER=$!
sleep 1

dlogsend -b main -t DLOG_LOGGER_TEST2 -c 100 "hi"
sleep 1
LOG_DETAILS="testing if logger daemon buffering works (1/5)"
[ "$(grep -c DLOG_LOGGER_TEST2 "$TESTDIR"/test0)" -eq 0 ] && ok || fail

sleep 6
LOG_DETAILS="testing if logger daemon buffering works (2/5)"
[ "$(grep -c DLOG_LOGGER_TEST2 "$TESTDIR"/test0)" -eq 100 ] && ok || fail

dlogsend -b main -t DLOG_LOGGER_TEST3 -c 100 "hi"
sleep 1
LOG_DETAILS="testing if logger daemon buffering works (3/5)"
[ "$(grep -c DLOG_LOGGER_TEST3 "$TESTDIR"/test0)" -eq 0 ] && ok || fail

sleep 1
kill $LOGGER > /dev/null
LOGGER=-1
sleep 1
LOG_DETAILS="testing if logger daemon buffering works (4/5)"
[ "$(grep -c DLOG_LOGGER_TEST3 "$TESTDIR"/test0)" -eq 100 ] && ok || fail

dlogutil -cb main

dlog_logger -t 10000 -b 100 &
LOGGER=$!
sleep 1

dlogsend -b main -t DLOG_LOGGER_TEST4 -c 100 "hi"
sleep 1
LOG_DETAILS="testing if logger daemon buffering works (5/5)"
[ "$(grep -c DLOG_LOGGER_TEST4 "$TESTDIR"/test0)" -gt 90 ] && ok || fail

dlogutil -cb main
kill $LOGGER > /dev/null
sleep 1
