summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/statisticstest.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/testing/statisticstest.py')
-rw-r--r--rdiff-backup/testing/statisticstest.py93
1 files changed, 86 insertions, 7 deletions
diff --git a/rdiff-backup/testing/statisticstest.py b/rdiff-backup/testing/statisticstest.py
index 7e8f02c..85a1b68 100644
--- a/rdiff-backup/testing/statisticstest.py
+++ b/rdiff-backup/testing/statisticstest.py
@@ -1,6 +1,6 @@
-import unittest
+import unittest, time
from commontest import *
-from rdiff_backup import statistics, rpath
+from rdiff_backup import statistics, rpath, restore
class StatsObjTest(unittest.TestCase):
"""Test StatsObj class"""
@@ -29,7 +29,7 @@ class StatsObjTest(unittest.TestCase):
self.set_obj(s)
assert s.get_stat('SourceFiles') == 1
- s1 = statistics.ITRB()
+ s1 = statistics.StatFileObj()
assert s1.get_stat('SourceFiles') == 0
def test_get_stats_string(self):
@@ -40,10 +40,12 @@ class StatsObjTest(unittest.TestCase):
self.set_obj(s)
stats_string = s.get_stats_string()
- assert stats_string == \
-"""StartTime 11.00 (Wed Dec 31 16:00:11 1969)
-EndTime 12.00 (Wed Dec 31 16:00:12 1969)
-ElapsedTime 1.00 (1 second)
+ ss_list = stats_string.split("\n")
+ tail = "\n".join(ss_list[2:]) # Time varies by time zone, don't check
+#"""StartTime 11.00 (Wed Dec 31 16:00:11 1969)
+#EndTime 12.00 (Wed Dec 31 16:00:12 1969)"
+ assert tail == \
+"""ElapsedTime 1.00 (1 second)
SourceFiles 1
SourceFileSize 2 (2 bytes)
MirrorFiles 13
@@ -143,4 +145,81 @@ TotalDestinationSizeChange 7 (7 bytes)
assert s3.SourceFiles == 75
+class IncStatTest(unittest.TestCase):
+ """Test statistics as produced by actual backup"""
+ def stats_check_initial(self, s):
+ """Make sure stats object s compatible with initial mirroring
+
+ A lot of the off by one stuff is because the root directory
+ exists in the below examples.
+
+ """
+ assert s.MirrorFiles == 1 or s.MirrorFiles == 0
+ assert s.MirrorFileSize < 20000
+ assert s.NewFiles <= s.SourceFiles <= s.NewFiles + 1
+ assert s.NewFileSize <= s.SourceFileSize <= s.NewFileSize + 20000
+ assert s.ChangedFiles == 1 or s.ChangedFiles == 0
+ assert s.ChangedSourceSize < 20000
+ assert s.ChangedMirrorSize < 20000
+ assert s.DeletedFiles == s.DeletedFileSize == 0
+ assert s.IncrementFileSize == 0
+
+ def testStatistics(self):
+ """Test the writing of statistics
+
+ The file sizes are approximate because the size of directories
+ could change with different file systems...
+
+ """
+ Globals.compression = 1
+ Myrm("testfiles/output")
+ InternalBackup(1, 1, "testfiles/stattest1", "testfiles/output")
+ InternalBackup(1, 1, "testfiles/stattest2", "testfiles/output",
+ time.time()+1)
+
+ rbdir = rpath.RPath(Globals.local_connection,
+ "testfiles/output/rdiff-backup-data")
+
+ #incs = Restore.get_inclist(rbdir.append("subdir").
+ # append("directory_statistics"))
+ #assert len(incs) == 2
+ #s1 = StatsObj().read_stats_from_rp(incs[0]) # initial mirror stats
+ #assert s1.SourceFiles == 2
+ #assert 400000 < s1.SourceFileSize < 420000
+ #self.stats_check_initial(s1)
+
+ #subdir_stats = StatsObj().read_stats_from_rp(incs[1]) # increment stats
+ #assert subdir_stats.SourceFiles == 2
+ #assert 400000 < subdir_stats.SourceFileSize < 420000
+ #assert subdir_stats.MirrorFiles == 2
+ #assert 400000 < subdir_stats.MirrorFileSize < 420000
+ #assert subdir_stats.NewFiles == subdir_stats.NewFileSize == 0
+ #assert subdir_stats.DeletedFiles == subdir_stats.DeletedFileSize == 0
+ #assert subdir_stats.ChangedFiles == 2
+ #assert 400000 < subdir_stats.ChangedSourceSize < 420000
+ #assert 400000 < subdir_stats.ChangedMirrorSize < 420000
+ #assert 10 < subdir_stats.IncrementFileSize < 20000
+
+ incs = restore.get_inclist(rbdir.append("session_statistics"))
+ assert len(incs) == 2
+ s2 = statistics.StatsObj().read_stats_from_rp(incs[0])
+ assert s2.SourceFiles == 7
+ assert 700000 <= s2.SourceFileSize < 750000
+ self.stats_check_initial(s2)
+
+ root_stats = statistics.StatsObj().read_stats_from_rp(incs[1])
+ assert root_stats.SourceFiles == 7, root_stats.SourceFiles
+ assert 550000 <= root_stats.SourceFileSize < 570000
+ assert root_stats.MirrorFiles == 7
+ assert 700000 <= root_stats.MirrorFileSize < 750000
+ assert root_stats.NewFiles == 1
+ assert root_stats.NewFileSize == 0
+ assert root_stats.DeletedFiles == 1
+ assert root_stats.DeletedFileSize == 200000
+ assert 3 <= root_stats.ChangedFiles <= 4, root_stats.ChangedFiles
+ assert 450000 <= root_stats.ChangedSourceSize < 470000
+ assert 400000 <= root_stats.ChangedMirrorSize < 420000, \
+ root_stats.ChangedMirrorSize
+ assert 10 < root_stats.IncrementFileSize < 30000
+
if __name__ == "__main__": unittest.main()