summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/regresstest.py
blob: cb13765e7c1d9045ef127a7065cd32c5ca5dbb04 (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
"""regresstest - test the regress module.

Not to be confused with the regression tests.

"""

import unittest
from commontest import *
from rdiff_backup import regress

Log.setverbosity(7)

class RegressTest(unittest.TestCase):
	regress_rp1 = rpath.RPath(Globals.local_connection,
							  "testfiles/regress_output1")
	regress_rp2 = rpath.RPath(Globals.local_connection,
							  "testfiles/regress_output2")
	
	def make_output(self, level):
		"""Set up two rdiff-backup destination dir of level and level+1

		testfiles/regress_output1 will be a copy of
		testfiles/increment1 through testfiles/increment{level}

		testfiles/regress_output2 will have all everything backed up
		in testfiles/regress_output1 + testfiles/increment{level+1}.

		The time of each increment will be 10000*level.

		"""
		assert 1 <= level <= 3
		if self.regress_rp1.lstat(): Myrm(self.regress_rp1.path)
		if self.regress_rp2.lstat(): Myrm(self.regress_rp2.path)

		# Make regress_output1
		Log("Making %s" % (self.regress_rp1.path,), 4)
		for i in range(1, level+1):
			rdiff_backup(1, 1,
						 "testfiles/increment%s" % (i,),
						 self.regress_rp1.path,
						 current_time = 10000*i)

		# Now make regress_output2
		Log("Making %s" % (self.regress_rp2.path,), 4)
		assert not os.system("cp -a %s %s" %
							 (self.regress_rp1.path, self.regress_rp2.path))
		rdiff_backup(1, 1,
					 "testfiles/increment%s" % (level+1),
					 self.regress_rp2.path,
					 current_time = 10000*(level+1))
		self.regress_rp1.setdata()
		self.regress_rp2.setdata()

	def test_full(self):
		"""Test regressing a full directory to older state

		Make two directories, one with one more backup in it.  Then
		regress the bigger one, and then make sure they compare the
		same.

		"""
		for level in range(1, 4):
			self.make_output(level)
			regress.regress_time = 10000*level
			regress.unsuccessful_backup_time = 10000*(level+1)
			regress.time_override_mode = 1
			Globals.rbdir = self.regress_rp2.append_path("rdiff-backup-data")
			Log("######### Beginning regress ###########", 5)
			regress.Regress(self.regress_rp2)

			assert CompareRecursive(self.regress_rp1, self.regress_rp2,
									exclude_rbdir = 0)


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