Commit cfc0fc57 authored by ben's avatar ben

Added probabilistic stuff to killtest.py


git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup@122 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
parent 0e71ea74
...@@ -130,6 +130,7 @@ def InternalRestore(mirror_local, dest_local, mirror_dir, dest_dir, time): ...@@ -130,6 +130,7 @@ def InternalRestore(mirror_local, dest_local, mirror_dir, dest_dir, time):
mirror_rp, dest_rp = SetConnections.InitRPs([mirror_dir, dest_dir], mirror_rp, dest_rp = SetConnections.InitRPs([mirror_dir, dest_dir],
remote_schema) remote_schema)
Time.setcurtime()
inc = get_increment_rp(mirror_rp, time) inc = get_increment_rp(mirror_rp, time)
if inc: if inc:
_get_main().Restore(get_increment_rp(mirror_rp, time), dest_rp) _get_main().Restore(get_increment_rp(mirror_rp, time), dest_rp)
...@@ -163,7 +164,8 @@ def _get_main(): ...@@ -163,7 +164,8 @@ def _get_main():
return Globals.Main return Globals.Main
def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1,
equality_func = None, exclude_rbdir = 1): equality_func = None, exclude_rbdir = 1,
ignore_tmp_files = None):
"""Compare src_rp and dest_rp, which can be directories """Compare src_rp and dest_rp, which can be directories
This only compares file attributes, not the actual data. This This only compares file attributes, not the actual data. This
...@@ -179,6 +181,16 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, ...@@ -179,6 +181,16 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1,
compare_hardlinks), 3) compare_hardlinks), 3)
src_select = Select(DSRPath(1, src_rp)) src_select = Select(DSRPath(1, src_rp))
dest_select = Select(DSRPath(None, dest_rp)) dest_select = Select(DSRPath(None, dest_rp))
if ignore_tmp_files:
# Ignoring temp files can be useful when we want to check the
# correctness of a backup which aborted in the middle. In
# these cases it is OK to have tmp files lying around.
src_select.add_selection_func(src_select.regexp_get_sf(
".*rdiff-backup.tmp.[^/]+$", 0))
dest_select.add_selection_func(dest_select.regexp_get_sf(
".*rdiff-backup.tmp.[^/]+$", 0))
if exclude_rbdir: if exclude_rbdir:
src_select.parse_rbdir_exclude() src_select.parse_rbdir_exclude()
dest_select.parse_rbdir_exclude() dest_select.parse_rbdir_exclude()
...@@ -186,13 +198,13 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, ...@@ -186,13 +198,13 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1,
# include rdiff-backup-data/increments # include rdiff-backup-data/increments
src_select.add_selection_func(src_select.glob_get_tuple_sf( src_select.add_selection_func(src_select.glob_get_tuple_sf(
('rdiff-backup-data', 'increments'), 1)) ('rdiff-backup-data', 'increments'), 1))
dest_select.add_selection_func(src_select.glob_get_tuple_sf( dest_select.add_selection_func(dest_select.glob_get_tuple_sf(
('rdiff-backup-data', 'increments'), 1)) ('rdiff-backup-data', 'increments'), 1))
# but exclude rdiff-backup-data # but exclude rdiff-backup-data
src_select.add_selection_func(src_select.glob_get_tuple_sf( src_select.add_selection_func(src_select.glob_get_tuple_sf(
('rdiff-backup-data',), 0)) ('rdiff-backup-data',), 0))
dest_select.add_selection_func(src_select.glob_get_tuple_sf( dest_select.add_selection_func(dest_select.glob_get_tuple_sf(
('rdiff-backup-data',), 0)) ('rdiff-backup-data',), 0))
src_select.set_iter() src_select.set_iter()
...@@ -221,20 +233,23 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1, ...@@ -221,20 +233,23 @@ def CompareRecursive(src_rp, dest_rp, compare_hardlinks = 1,
if dest_rorp.index[-1].endswith('gz'): return 1 if dest_rorp.index[-1].endswith('gz'): return 1
# Don't compare .missing increments because they don't matter # Don't compare .missing increments because they don't matter
if dest_rorp.index[-1].endswith('.missing'): return 1 if dest_rorp.index[-1].endswith('.missing'): return 1
if src_rorp != dest_rorp: return None if compare_hardlinks:
if Hardlink.rorp_eq(src_rorp, dest_rorp): return 1 if Hardlink.rorp_eq(src_rorp, dest_rorp): return 1
elif src_rorp == dest_rorp: return 1
Log("%s: %s" % (src_rorp.index, Hardlink.get_indicies(src_rorp, 1)), 3) Log("%s: %s" % (src_rorp.index, Hardlink.get_indicies(src_rorp, 1)), 3)
Log("%s: %s" % (dest_rorp.index, Log("%s: %s" % (dest_rorp.index,
Hardlink.get_indicies(dest_rorp, None)), 3) Hardlink.get_indicies(dest_rorp, None)), 3)
return None return None
if compare_hardlinks: if equality_func: result = Iter.equal(dsiter1, dsiter2, 1, equality_func)
elif compare_hardlinks:
dsiter1 = Hardlink.add_rorp_iter(dsiter1, 1) dsiter1 = Hardlink.add_rorp_iter(dsiter1, 1)
dsiter2 = Hardlink.add_rorp_iter(dsiter2, None) dsiter2 = Hardlink.add_rorp_iter(dsiter2, None)
if exclude_rbdir: if exclude_rbdir:
result = Iter.equal(dsiter1, dsiter2, 1, hardlink_equal) result = Iter.equal(dsiter1, dsiter2, 1, hardlink_equal)
else: result = Iter.equal(dsiter1, dsiter2, 1, rbdir_equal) else: result = Iter.equal(dsiter1, dsiter2, 1, rbdir_equal)
elif equality_func: result = Iter.equal(dsiter1, dsiter2, 1, equality_func) elif not exclude_rbdir:
result = Iter.equal(dsiter1, dsiter2, 1, rbdir_equal)
else: result = Iter.equal(dsiter1, dsiter2, 1) else: result = Iter.equal(dsiter1, dsiter2, 1)
for i in dsiter1: pass # make sure all files processed anyway for i in dsiter1: pass # make sure all files processed anyway
......
This diff is collapsed.
...@@ -13,7 +13,7 @@ testfiles ...@@ -13,7 +13,7 @@ testfiles
Globals.set('change_source_perms', 1) Globals.set('change_source_perms', 1)
Globals.counter = 0 Globals.counter = 0
Log.setverbosity(7) Log.setverbosity(3)
class Local: class Local:
"""This is just a place to put increments relative to the local """This is just a place to put increments relative to the local
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment