now yields errors and mismatches
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
from basetest import *
|
||||
from zfs_autobackup.BlockHasher import BlockHasher
|
||||
|
||||
|
||||
# sha1 sums of files, (bs=4096)
|
||||
# da39a3ee5e6b4b0d3255bfef95601890afd80709 empty
|
||||
# 642027d63bb0afd7e0ba197f2c66ad03e3d70de1 partial
|
||||
@ -12,47 +13,47 @@ from zfs_autobackup.BlockHasher import BlockHasher
|
||||
|
||||
class TestTreeHasher(unittest2.TestCase):
|
||||
|
||||
|
||||
|
||||
def test_treehasher(self):
|
||||
|
||||
shelltest("rm -rf /tmp/treehashertest; mkdir /tmp/treehashertest")
|
||||
shelltest("cp tests/data/whole /tmp/treehashertest")
|
||||
shelltest("mkdir /tmp/treehashertest/emptydir")
|
||||
shelltest("mkdir /tmp/treehashertest/dir")
|
||||
shelltest("cp tests/data/whole_whole2_partial /tmp/treehashertest/dir")
|
||||
|
||||
#it should ignore these:
|
||||
# it should ignore these:
|
||||
shelltest("ln -s / /tmp/treehashertest/symlink")
|
||||
shelltest("mknod /tmp/treehashertest/c c 1 1")
|
||||
shelltest("mknod /tmp/treehashertest/b b 1 1")
|
||||
shelltest("mkfifo /tmp/treehashertest/f")
|
||||
|
||||
block_hasher=BlockHasher(count=2)
|
||||
tree_hasher=TreeHasher(block_hasher)
|
||||
block_hasher = BlockHasher(count=2)
|
||||
tree_hasher = TreeHasher(block_hasher)
|
||||
|
||||
with self.subTest("Test output"):
|
||||
self.assertEqual(list(tree_hasher.generate("/tmp/treehashertest")),[
|
||||
self.assertEqual(list(tree_hasher.generate("/tmp/treehashertest")), [
|
||||
('whole', 0, '3c0bf91170d873b8e327d3bafb6bc074580d11b7'),
|
||||
('dir/whole_whole2_partial', 0, '959e6b58078f0cfd2fb3d37e978fda51820473ff'),
|
||||
('dir/whole_whole2_partial', 1, '642027d63bb0afd7e0ba197f2c66ad03e3d70de1')
|
||||
])
|
||||
|
||||
with self.subTest("Test compare"):
|
||||
generator=tree_hasher.generate("/tmp/treehashertest")
|
||||
count=tree_hasher.compare("/tmp/treehashertest", generator)
|
||||
self.assertEqual(count,2)
|
||||
generator = tree_hasher.generate("/tmp/treehashertest")
|
||||
errors = list(tree_hasher.compare("/tmp/treehashertest", generator))
|
||||
self.assertEqual(errors, [])
|
||||
|
||||
with self.subTest("Test mismatch"):
|
||||
generator=list(tree_hasher.generate("/tmp/treehashertest"))
|
||||
generator = list(tree_hasher.generate("/tmp/treehashertest"))
|
||||
shelltest("cp tests/data/whole2 /tmp/treehashertest/whole")
|
||||
|
||||
with self.assertRaisesRegex(Exception,"mismatch"):
|
||||
tree_hasher.compare("/tmp/treehashertest", generator)
|
||||
self.assertEqual(list(tree_hasher.compare("/tmp/treehashertest", generator)),
|
||||
[('whole',
|
||||
0,
|
||||
'3c0bf91170d873b8e327d3bafb6bc074580d11b7',
|
||||
'2e863f1fcccd6642e4e28453eba10d2d3f74d798')])
|
||||
|
||||
with self.subTest("Test missig file compare"):
|
||||
generator=list(tree_hasher.generate("/tmp/treehashertest"))
|
||||
with self.subTest("Test missing file compare"):
|
||||
generator = list(tree_hasher.generate("/tmp/treehashertest"))
|
||||
shelltest("rm /tmp/treehashertest/whole")
|
||||
|
||||
with self.assertRaises(Exception):
|
||||
tree_hasher.compare("/tmp/treehashertest", generator)
|
||||
self.assertEqual(list(tree_hasher.compare("/tmp/treehashertest", generator)),
|
||||
[('whole', '-', '-', "ERROR: [Errno 2] No such file or directory: 'whole'")])
|
||||
|
||||
Reference in New Issue
Block a user