#!/bin/sh
#
# Run a simple backup
#   then restore it.
#
TestName="hardlink-test"
JobName=hardlink
. scripts/functions

if test ! -d weird-files ; then
   echo " "
   echo "Weird files not configured. Test not run."
   exit 0
fi

cwd=`pwd`
scripts/cleanup
scripts/copy-test-confs
change_jobname NightlySave $JobName
#
# Note, we save the weird-files directory twice on purpose
#  because this causes problems with hard linked files
#  that are only saved once.  In 1.33, Bareos now deals
#  with this situation.
#
echo "${cwd}/weird-files" >${cwd}/tmp/file-list
echo "${cwd}/weird-files" >>${cwd}/tmp/file-list

start_test

cat <<END_OF_DATA >${cwd}/tmp/bconcmds
@$out /dev/null
messages
@$out ${cwd}/tmp/log1.out
label storage=File
TestVolume001
setdebug level=500 client=localhost-fd trace=1
run job=$JobName
yes
wait
messages
@#
@# now do a restore
@#
@$out ${cwd}/tmp/log2.out
setdebug level=200 client=localhost-fd trace=0
restore where=${cwd}/tmp/bareos-restores storage=File
5
cd ${cwd}/weird-files/subdir
mark another-hardlink
done
yes
wait
messages
@$out ${cwd}/tmp/log3.out
@# They should all have a MD5
sql
SELECT Name, Md5
  FROM File
 WHERE Name LIKE 'hard%' OR Name = 'normalfile';

@$out ${cwd}/tmp/log4.out
sql
SELECT count(1), Md5
  FROM File
 WHERE Name = 'hardlink-to-normalfile'
    OR Name = 'normalfile'
    OR Name = 'another-hardlink-to-normalfile'
 GROUP By Md5;

quit
END_OF_DATA

run_bareos
check_for_zombie_jobs storage=File
stop_bareos

check_two_logs
diff ${cwd}/weird-files/subdir/another-hardlink \
  ${cwd}/tmp/bareos-restores/${cwd}/weird-files/subdir/another-hardlink 2>&1 >/dev/null
dstat=$?

grep ' 0 ' $tmp/log3.out > /dev/null
if [ $? -eq 0 ]; then
    print_debug "ERROR: All hardlinks should have checksums"
    estat=1
fi

nb=`awk '/\| +[1-9]/ { print $0 } ' $tmp/log4.out | wc -l | sed -e 's/^ *//'`
if [ "$nb" != 1 ]; then
    print_debug "ERROR: All selected hardlinks should have the same checksum"
    estat=1
fi

end_test
