summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/statisticstest.py
blob: 1fd88479c7a4a6172c262dbc9935dd9fa469fc8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import unittest
execfile("commontest.py")
rbexec("statistics.py")

class StatsObjTest(unittest.TestCase):
	"""Test StatsObj class"""
	def set_obj(self, s):
		"""Set values of s's statistics"""
		s.SourceFiles = 1
		s.SourceFileSize = 2
		s.NewFiles = 3
		s.NewFileSize = 4
		s.DeletedFiles = 5
		s.DeletedFileSize = 6
		s.ChangedFiles = 7
		s.ChangedSourceSize = 8
		s.ChangedMirrorSize = 9
		s.IncrementFileSize = 10
		s.StartTime = 11
		s.EndTime = 12

	def test_get_stats(self):
		"""Test reading and writing stat objects"""
		s = StatsObj()
		assert s.get_stat('SourceFiles') is None
		self.set_obj(s)
		assert s.get_stat('SourceFiles') == 1

		s1 = StatsITR()
		assert s1.get_stat('SourceFiles') == 0

	def test_get_stats_string(self):
		"""Test conversion of stat object into string"""
		s = StatsObj()
		stats_string = s.get_stats_string()
		assert stats_string == "", stats_string

		self.set_obj(s)
		stats_string = s.get_stats_string()
		assert stats_string == \
"""StartTime 11
EndTime 12
SourceFiles 1
SourceFileSize 2
NewFiles 3
NewFileSize 4
DeletedFiles 5
DeletedFileSize 6
ChangedFiles 7
ChangedSourceSize 8
ChangedMirrorSize 9
IncrementFileSize 10""", "'%s'" % stats_string

	def test_init_stats(self):
		"""Test setting stat object from string"""
		s = StatsObj()
		s.init_stats_from_string("NewFiles 3 hello there")
		for attr in s.stat_attrs:
			if attr == 'NewFiles': assert s.get_stat(attr) == 3
			else: assert s.get_stat(attr) is None, (attr, s.__dict__[attr])

		s1 = StatsObj()
		self.set_obj(s1)
		assert not s1.stats_equal(s)

		s2 = StatsObj()
		s2.init_stats_from_string(s1.get_stats_string())
		assert s1.stats_equal(s2)

	def test_write_rp(self):
		"""Test reading and writing of statistics object"""
		rp = RPath(Globals.local_connection, "testfiles/statstest")
		if rp.lstat(): rp.delete()
		s = StatsObj()
		self.set_obj(s)
		s.write_stats_to_rp(rp)

		s2 = StatsObj()
		assert not s2.stats_equal(s)
		s2.read_stats_from_rp(rp)
		assert s2.stats_equal(s)


if __name__ == "__main__": unittest.main()