snapraid/Makefile.am

596 lines
25 KiB
Text
Raw Normal View History

2011-03-01 22:21:30 +01:00
bin_PROGRAMS = snapraid
2011-03-12 23:21:32 +01:00
check_PROGRAMS = mktest
2013-09-07 19:43:33 +02:00
EXTRA_PROGRAMS = mktables
2011-03-01 22:21:30 +01:00
snapraid_SOURCES = \
snapraid.c \
2011-03-06 22:52:50 +01:00
tommy.c \
util.c \
elem.c \
state.c \
scan.c \
sync.c \
check.c \
dry.c \
rehash.c \
scrub.c \
status.c \
dup.c \
pool.c \
2011-03-06 22:52:50 +01:00
parity.c \
handle.c \
fnmatch.c \
raid.c \
selftest.c \
speed.c \
import.c \
2012-06-20 22:37:19 +02:00
mingw.c \
unix.c
2011-03-01 22:21:30 +01:00
2013-09-07 19:43:33 +02:00
mktables_SOURCES = \
mktables.c
2011-03-01 22:21:30 +01:00
noinst_HEADERS = \
portable.h \
snapraid.h \
2011-03-06 22:52:50 +01:00
util.h \
elem.h \
state.h \
parity.h \
handle.h \
murmur3.c \
murmur3test.c \
spooky2.c \
spooky2test.c \
2011-03-01 22:21:30 +01:00
tommyarray.h \
tommyarrayof.h \
2011-03-01 22:21:30 +01:00
tommychain.h \
tommyhash.h \
tommyhashdyn.h \
tommylist.h \
tommytypes.h \
tommyarray.c \
tommyarrayof.c \
2011-03-01 22:21:30 +01:00
tommyhash.c \
tommyhashdyn.c \
tommylist.c \
fnmatch.h \
cpu.h \
raid.h \
tables.h \
import.h \
2012-06-20 22:37:19 +02:00
mingw.h \
unix.h
2011-03-01 22:21:30 +01:00
2011-03-12 23:21:32 +01:00
mktest_SOURCES = \
mktest.c \
mingw.c
2011-03-01 22:21:30 +01:00
EXTRA_DIST = \
autogen.sh \
noautomake.sh \
2012-09-19 18:30:23 +02:00
README AUTHORS HISTORY INSTALL COPYING TODO TEST INSTALL.windows \
2011-03-22 23:21:19 +01:00
snapraid.d snapraid.1 snapraid.txt \
2013-09-11 23:30:32 +02:00
test-raid5.conf test-raid6.conf test-raidTP.conf test-raidTP-hole.conf \
snapraid.conf.example \
configure.windows-x86 configure.windows-x64 snapraid.conf.example.windows \
2011-03-01 22:21:30 +01:00
acinclude.m4
man_MANS = snapraid.1
2011-03-01 22:21:30 +01:00
clean-local:
2011-03-22 23:21:19 +01:00
rm -f valgrind.log callgrind.log cachegrind.log
2011-03-01 22:21:30 +01:00
rm -rf test
rm -f test.log
rm -f *.gcda *.gcno *.gcov
rm -rf cov
rm -f lcov.info
rm -f gmon.out
2011-03-01 22:21:30 +01:00
2011-03-06 22:52:50 +01:00
maintainer-clean-local:
2011-03-22 23:21:19 +01:00
rm -f snapraid.1 snapraid.txt
2011-03-06 22:52:50 +01:00
# Automatic testing
2011-09-03 11:23:10 +02:00
2013-09-11 23:30:32 +02:00
CHECKFLAGS = --test-skip-device --test-skip-self
CHECKCOUNT = 2000
CHECKSIZE = 4000
2013-09-20 22:06:21 +02:00
CONF = $(srcdir)/test-raidQP.conf
HOLE = $(srcdir)/test-raidQP-hole.conf
2013-09-11 23:30:32 +02:00
RAID5 = $(srcdir)/test-raid5.conf
RAID6 = $(srcdir)/test-raid6.conf
RAIDTP = $(srcdir)/test-raidTP.conf
2013-09-20 22:06:21 +02:00
RAIDQP = $(srcdir)/test-raidQP.conf
2011-03-01 22:21:30 +01:00
check-local:
rm -rf test
rm -f test.log
2011-03-01 22:21:30 +01:00
mkdir test
mkdir test/disk1
mkdir test/disk2
mkdir test/disk3
2013-09-11 23:30:32 +02:00
mkdir test/disk4
2013-09-20 22:06:21 +02:00
mkdir test/disk5
mkdir test/pool
echo --- Help
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) --test-skip-device -h
echo --- SelfTest
$(TESTENV) ./snapraid$(EXEEXT) --test-skip-device -c $(CONF) status
echo --- As empty, sync and check forcing murmur3
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(CONF) diff
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(CONF) dup
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-murmur3 sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
if HAVE_SYMLINK
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) pool
endif
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -a check
echo --- Create some files, sync and check in RAID5/6/TP
2013-09-20 22:06:21 +02:00
$(TESTENV) ./mktest$(EXEEXT) generate 1 5 $(CHECKCOUNT) $(CHECKSIZE)
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(CONF) diff > test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(CONF) diff -G > test.log
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(CONF) dup
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(CONF) dup -G
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-order-physical sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
if HAVE_SYMLINK
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) pool
endif
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -a check
echo --- Create some more files, hardlinks and empty directories, sync RAID5 and check
2013-09-20 22:06:21 +02:00
$(TESTENV) ./mktest$(EXEEXT) generate 2 5 $(CHECKCOUNT) $(CHECKSIZE)
mkdir test/disk1/empty1
mkdir test/disk2/empty2
mkdir test/disk3/empty3a
mkdir test/disk3/empty3a/emptyinner
mkdir test/disk3/empty3b
echo 1 > test/disk1/file_hardlink1
ln test/disk1/file_hardlink1 test/disk1/file_hardlink2
ln test/disk1/file_hardlink1 test/disk1/file_hardlink3
echo 2 > test/disk2/file_hardlink1
ln test/disk2/file_hardlink1 test/disk2/file_hardlink2
ln test/disk2/file_hardlink1 test/disk2/file_hardlink3
echo 3 > test/disk3/file_hardlink1
ln test/disk3/file_hardlink1 test/disk3/file_hardlink2
ln test/disk3/file_hardlink1 test/disk3/file_hardlink3
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(RAID5) diff > test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -v -c $(RAID5) dup
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-skip-fallocate -c $(RAID5) --test-force-order-inode sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-skip-sequential -c $(RAID5) check
if HAVE_SYMLINK
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) pool
endif
2013-09-20 22:06:21 +02:00
echo --- Extend RAID5 to RAIDQP with fix and check
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(CONF) check 2>> test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) fix 2>> test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Dry
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) dry
2013-06-29 18:34:10 +02:00
echo --- Scrub some times
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-scrub 100 scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-scrub 1000 scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-scrub 100000 scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
echo --- Corrupt one file, scrub and fix filtering for error
rm -f test/disk1/content
cp test/content test/disk1/content
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
$(TESTENV) ./mktest$(EXEEXT) damage 1 10 1 test/disk1/content
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-expect-recoverable --test-force-scrub 100000 scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) fix -e
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -p 0 scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -o 0 scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -p 100 scrub
rm test/disk1/content
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
echo --- Make a hole in the disk array and sync with --force-empty
mv test/disk2 test/disk2.old
mkdir test/disk2
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --force-empty sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
2013-08-17 16:17:53 +02:00
echo --- Use with the hole
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(HOLE) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(HOLE) check
rm -r test/disk1/_a
rm -r test/disk3/_a
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(HOLE) fix 2>> test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(HOLE) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(HOLE) dry
echo --- Fill the hole with a new disk
rm -r test/disk2
mv test/disk2.old test/disk2
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete some files, create some new, sync and check
2011-03-22 23:21:19 +01:00
rm test/disk1/1*
rm test/disk2/2*
rm test/disk3/3*
2013-09-11 23:30:32 +02:00
rm test/disk4/4*
2013-09-20 22:06:21 +02:00
$(TESTENV) ./mktest$(EXEEXT) generate 3 5 $(CHECKCOUNT) $(CHECKSIZE)
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Move some files, sync and check
mv test/disk1/7* test/disk1/_a/
mv test/disk2/7* test/disk2/_a/
mv test/disk3/7* test/disk3/_a/
2013-09-11 23:30:32 +02:00
mv test/disk4/7* test/disk4/_a/
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete one disk, fix and check with RAID5
rm -r test/disk3
mkdir test/disk3
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) check 2>> test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) fix 2>> test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Sync after all the fixes with an empty drive to test --force-empty
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --force-empty -c $(CONF) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete two disks, fix and check with RAID6
rm -r test/disk1
mkdir test/disk1
rm -r test/disk2
mkdir test/disk2
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
2013-09-20 22:06:21 +02:00
echo --- Delete three disks, fix and check with RAIDTP
2013-09-11 23:30:32 +02:00
rm -r test/disk1
mkdir test/disk1
rm -r test/disk2
mkdir test/disk2
rm -r test/disk3
mkdir test/disk3
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAIDTP) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAIDTP) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
2013-09-20 22:06:21 +02:00
echo --- Delete four disks, fix and check with RAIDQP
rm -r test/disk1
mkdir test/disk1
rm -r test/disk2
mkdir test/disk2
rm -r test/disk3
mkdir test/disk3
rm -r test/disk4
mkdir test/disk4
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAIDTP) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAIDQP) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAIDQP) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
echo --- Delete some files and create some new, sync and check in multiple steps using text content
rm test/disk1/4*
rm test/disk2/5*
rm test/disk3/6*
2013-09-11 23:30:32 +02:00
rm test/disk4/6*
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -t 10 sync --test-force-content-text
cp test/content test/content.txt
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) test-rewrite
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-content-text test-rewrite
cmp test/content test/content.txt
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check -l test.log
2013-09-20 22:06:21 +02:00
$(TESTENV) ./mktest$(EXEEXT) generate 4 5 $(CHECKCOUNT) $(CHECKSIZE)
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -t 100 sync --test-force-content-text
cp test/content test/content.txt
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) test-rewrite
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-content-text test-rewrite
cmp test/content test/content.txt
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -t 1000 sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
2013-07-01 23:08:25 +02:00
echo --- Rehash to spooky2 and rehash even blocks
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-spooky2 rehash
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-force-scrub-even scrub
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) status
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete files from three disks and fix with import in RAID6
rm -r test/disk1/_a
rm -r test/disk1/_b
rm -r test/disk2/_a
rm -r test/disk2/_b
mv test/disk3/_a test/_a
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -i test/_a -c $(RAID6) fix -l test.log
rm -r test/_a
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
2013-02-26 20:27:51 +01:00
echo --- Abort sync late with additions, delete them and recover with RAID6
echo --- This triggers the recoving with q using p to check the validity
cp -pR test/disk1/_a test/disk1/_c
cp -pR test/disk1/_a test/disk1/_d
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-kill-after-sync -c $(CONF) sync
2013-02-26 20:27:51 +01:00
rm -r test/disk1/_c
rm -r test/disk1/_d
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
2013-02-26 20:27:51 +01:00
rm -r test/disk1/_c
rm -r test/disk1/_d
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
2013-02-26 20:27:51 +01:00
echo --- Abort sync early with additions, delete them and recover with RAID6
echo --- This triggers the recoving with q using p to check the validity, but failing for new block being filled with zero
cp -pR test/disk1/_a test/disk1/_c
cp -pR test/disk1/_a test/disk1/_d
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -t 1 --test-kill-after-sync -c $(CONF) sync
2013-02-26 20:27:51 +01:00
rm -r test/disk1/_c
rm -r test/disk1/_d
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID6) fix -l test.log
2013-02-26 20:27:51 +01:00
rm -r test/disk1/_c
rm -r test/disk1/_d
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
2013-02-26 20:27:51 +01:00
echo --- Abort sync late with additions and then delete the new additions and sync again
cp -pR test/disk1/_a test/disk1/_c
cp -pR test/disk2/_a test/disk2/_c
cp -pR test/disk3/_a test/disk3/_c
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-kill-after-sync -c $(CONF) sync
2011-11-14 19:21:33 +01:00
rm -r test/disk1/_c
rm -r test/disk2/_c
rm -r test/disk3/_c
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
echo --- Abort sync late with additions and then delete some unchanged stuff and fix with RAID5
cp -pR test/disk1/_b test/disk1/_c
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) --test-kill-after-sync sync
rm -r test/disk2
mkdir test/disk2
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) fix -l test.log
echo --- Fixes again with RAIDTP to restore all the parity
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) fix -l test.log
rm -r test/disk1/_c
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
echo --- Abort sync late with more deletions than additions and then delete some unchanged stuff and fix with RAID5
cp -pR test/disk1/_a test/disk1/_c
mv test/disk1/_a test/_a
mv test/disk1/_b test/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) --test-kill-after-sync sync
rm -r test/disk2
mkdir test/disk2
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) fix -l test.log
echo --- Fixes again with RAIDTP to restore all the parity
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) fix -l test.log
-rm -r test/disk1/_a
-rm -r test/disk1/_b
rm -r test/disk1/_c
mv test/_a test/disk1/_a
mv test/_b test/disk1/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
echo --- Abort sync early with more deletions than additions and then delete some unchanged stuff and fix with RAID6
cp -pR test/disk1/_a test/disk1/_c
mv test/disk1/_a test/_a
mv test/disk1/_b test/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -t 1 --test-kill-after-sync sync
rm -r test/disk2
mkdir test/disk2
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
-rm -r test/disk1/_a
-rm -r test/disk1/_b
rm -r test/disk1/_c
mv test/_a test/disk1/_a
mv test/_b test/disk1/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
echo --- Delete some files, fix with -m and check with RAID5
rm test/disk1/8*
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) -m fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete some dirs in a disk, fix with -m and check with RAID5
2011-03-22 23:21:19 +01:00
rm -r test/disk2/_a
rm -r test/disk2/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) -m fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete some dirs in two disks, fix and check with RAID6 using the -d option for each disk
rm -r test/disk2/_a
rm -r test/disk2/_b
rm -r test/disk3/_a
rm -r test/disk3/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) -d disk2 fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) -d disk3 fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete the parity, fix and check with RAID5
rm test/parity
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete the parity and the q-parity, fix and check with RAID6
2011-03-06 22:52:50 +01:00
rm test/parity
rm test/q-parity
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete the parity and a disk, fix and check with RAID6
rm test/parity
rm -r test/disk2/_a
rm -r test/disk2/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Delete the q-parity and a disk, fix and check with RAID6
rm test/q-parity
rm -r test/disk3/_a
rm -r test/disk3/_b
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Corrupt the parity, fix and check with RAID5
$(TESTENV) ./mktest$(EXEEXT) damage 1 100 10000 test/parity
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) -a check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Corrupt the parity and the q-parity, fix and check with RAID6
$(TESTENV) ./mktest$(EXEEXT) damage 2 100 10000 test/parity
$(TESTENV) ./mktest$(EXEEXT) damage 2 100 10000 test/q-parity
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) -a check
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Corrupt some files, fix and check with RAID5
$(TESTENV) ./mktest$(EXEEXT) damage 3 1 500 test/disk2/b*
$(TESTENV) ./mktest$(EXEEXT) append 3 500 test/disk2/c*
$(TESTENV) ./mktest$(EXEEXT) truncate 3 500 test/disk2/d*
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) -a check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID5) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Corrupt some files, fix and check with RAID6
$(TESTENV) ./mktest$(EXEEXT) damage 4 1 500 test/disk2/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) damage 4 1 500 test/disk3/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) damage 4 1 500 test/disk2/_a/_b/*
$(TESTENV) ./mktest$(EXEEXT) damage 4 1 500 test/disk3/_a/_b/*
$(TESTENV) ./mktest$(EXEEXT) append 4 500 test/disk2/_b/_a/*
$(TESTENV) ./mktest$(EXEEXT) append 4 500 test/disk3/_b/_a/*
$(TESTENV) ./mktest$(EXEEXT) truncate 4 500 test/disk2/_b/_b/*
$(TESTENV) ./mktest$(EXEEXT) truncate 4 500 test/disk3/_b/_b/*
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) -a check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) -a check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Another time with different values
$(TESTENV) ./mktest$(EXEEXT) damage 5 2 50 test/disk2/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) damage 5 2 50 test/disk3/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) append 5 500 test/disk2/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) truncate 5 500 test/disk3/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) damage 5 2 50 test/disk2/_a/_b/*
$(TESTENV) ./mktest$(EXEEXT) damage 5 2 50 test/disk3/_a/_b/*
$(TESTENV) ./mktest$(EXEEXT) append 5 1500 test/disk2/_b/_a/*
$(TESTENV) ./mktest$(EXEEXT) append 5 1500 test/disk3/_b/_a/*
$(TESTENV) ./mktest$(EXEEXT) truncate 5 1500 test/disk2/_b/_b/*
$(TESTENV) ./mktest$(EXEEXT) truncate 5 1500 test/disk3/_b/_b/*
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Corrupt the parity and some files, fix and check with RAID6
$(TESTENV) ./mktest$(EXEEXT) damage 6 100 10000 test/parity
$(TESTENV) ./mktest$(EXEEXT) damage 6 1 500 test/disk1/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) damage 6 1 500 test/disk1/_a/_b/*
$(TESTENV) ./mktest$(EXEEXT) append 6 500 test/disk1/_b/_a/*
$(TESTENV) ./mktest$(EXEEXT) truncate 6 500 test/disk1/_b/_b/*
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-unrecoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Corrupt the q-parity and some files, fix and check with RAID6
$(TESTENV) ./mktest$(EXEEXT) damage 7 100 10000 test/q-parity
$(TESTENV) ./mktest$(EXEEXT) damage 7 1 500 test/disk1/_a/_a/*
$(TESTENV) ./mktest$(EXEEXT) damage 7 1 500 test/disk1/_a/_b/*
$(TESTENV) ./mktest$(EXEEXT) append 7 500 test/disk1/_b/_a/*
$(TESTENV) ./mktest$(EXEEXT) truncate 7 500 test/disk1/_b/_b/*
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID5) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) --test-expect-recoverable -c $(RAID6) check -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(RAID6) fix -l test.log
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
echo --- Sync after all the fixes
2013-09-11 23:30:32 +02:00
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) sync
$(TESTENV) ./snapraid$(EXEEXT) $(CHECKFLAGS) -c $(CONF) check
2011-03-01 22:21:30 +01:00
echo Success!
2011-03-22 23:21:19 +01:00
# Manual testing
2013-09-11 23:30:32 +02:00
MANUAL = ./snapraid --test-skip-device -c test-raid5.conf sync
2011-03-01 22:21:30 +01:00
valgrind:
valgrind \
--tool=memcheck \
--track-origins=yes \
--read-var-info=yes \
--leak-check=full \
2011-09-03 11:23:10 +02:00
-v $(MANUAL) \
2011-03-01 22:21:30 +01:00
2> valgrind.log
tail valgrind.log
callgrind:
valgrind \
--tool=callgrind \
--dump-instr=yes \
--trace-jump=yes \
--collect-systime=yes \
2011-09-03 11:23:10 +02:00
-v $(MANUAL) \
2011-03-01 22:21:30 +01:00
2> callgrind.log
tail callgrind.log
cachegrind:
valgrind \
--tool=cachegrind \
2011-09-03 11:23:10 +02:00
-v $(MANUAL) \
2011-03-01 22:21:30 +01:00
2> cachegrind.log
tail cachegrind.log
lcov_reset:
lcov --directory . -z
rm -f ./lcov.info
lcov_capture:
lcov --directory . --capture -o lcov.info
lcov_html:
rm -rf ./cov
mkdir cov
genhtml -o ./cov lcov.info
2011-03-06 22:52:50 +01:00
# Rules for documentation
if HAVE_ADVD2
2011-03-23 20:58:03 +01:00
snapraid.1 : snapraid.d
2011-03-06 22:52:50 +01:00
advd2 man < $(srcdir)/$< > $@
2011-03-23 20:58:03 +01:00
snapraid.txt : snapraid.d
2011-05-02 20:31:33 +02:00
advd2 txt < $(srcdir)/$< | utod > $@
2011-03-06 22:52:50 +01:00
2011-03-23 20:58:03 +01:00
snapraid.html : snapraid.d
2011-03-06 22:52:50 +01:00
advd2 html < $(srcdir)/$< > $@
snapraid.hh : snapraid.d
advd2 frame < $(srcdir)/$< > $@
endif
2011-03-06 22:52:50 +01:00
# Windows distribution
DISTWIN = \
snapraid.txt \
snapraid.exe
2011-03-06 22:52:50 +01:00
2011-04-29 22:07:50 +02:00
distwindows-x86: $(DISTWIN)
2011-03-06 22:52:50 +01:00
rm -f $(PACKAGE)-$(VERSION)-windows-x86.zip
mkdir tmp
cp $(DISTWIN) tmp
2011-05-02 20:31:33 +02:00
utod < snapraid.conf.example.windows > tmp/snapraid.conf.example
utod < INSTALL.windows > tmp/install.txt
utod < README > tmp/readme.txt
utod < AUTHORS > tmp/authors.txt
utod < HISTORY > tmp/history.txt
utod < COPYING > tmp/copying.txt
utod < TODO > tmp/todo.txt
2011-03-06 22:52:50 +01:00
cd tmp && zip -r ../$(PACKAGE)-$(VERSION)-windows-x86.zip *
rm -r tmp
2011-04-29 22:07:50 +02:00
distwindows-x64: $(DISTWIN)
rm -f $(PACKAGE)-$(VERSION)-windows-x64.zip
mkdir tmp
cp $(DISTWIN) tmp
2011-05-02 20:31:33 +02:00
utod < snapraid.conf.example.windows > tmp/snapraid.conf.example
utod < INSTALL.windows > tmp/install.txt
utod < README > tmp/readme.txt
utod < AUTHORS > tmp/authors.txt
utod < HISTORY > tmp/history.txt
utod < COPYING > tmp/copying.txt
utod < TODO > tmp/todo.txt
2011-04-29 22:07:50 +02:00
cd tmp && zip -r ../$(PACKAGE)-$(VERSION)-windows-x64.zip *
rm -r tmp