summaryrefslogtreecommitdiff
path: root/rdiff-backup/testing/comparetest.py
blob: 1d0b67d6811223dba01921cace10896f8e677b89 (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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import unittest
from commontest import *
from rdiff_backup import compare

"""Test the compare.py module and overall compare functionality"""

class CompareTest(unittest.TestCase):
	def setUp(self):
		Myrm("testfiles/output")
		rdiff_backup(1, 1, 'testfiles/increment2', 'testfiles/output',
					 current_time = 10000)
		rdiff_backup(1, 1, 'testfiles/increment3', 'testfiles/output',
					 current_time = 20000)

	def generic_test(self, local, compare_option):
		"""Used for 6 tests below"""
		rdiff_backup(local, local, 'testfiles/increment3', 'testfiles/output',
					 extra_options = compare_option)
		ret_val = rdiff_backup(local, local, 'testfiles/increment2',
		             'testfiles/output', extra_options = compare_option,
					  check_return_val = 0)
		assert ret_val, ret_val
		rdiff_backup(local, local, 'testfiles/increment2', 'testfiles/output',
					 extra_options = compare_option + "-at-time 10000")
		ret_val = rdiff_backup(local, local, 'testfiles/increment3',
			'testfiles/output',
			extra_options = compare_option + "-at-time 10000",
			check_return_val = 0)
		assert ret_val, ret_val

	def testBasicLocal(self):
		"""Test basic --compare and --compare-at-time modes"""
		self.generic_test(1, "--compare")

	def testBasicRemote(self):
		"""Test basic --compare and --compare-at-time modes, both remote"""
		self.generic_test(0, "--compare")

	def testHashLocal(self):
		"""Test --compare-hash and --compare-hash-at-time modes local"""
		self.generic_test(1, "--compare-hash")

	def testHashRemote(self):
		"""Test --compare-hash and -at-time remotely"""
		self.generic_test(0, "--compare-hash")

	def testFullLocal(self):
		"""Test --compare-full and --compare-full-at-time"""
		self.generic_test(1, "--compare-full")

	def testFullRemote(self):
		"""Test full file compare remotely"""
		self.generic_test(0, "--compare-full")

	def generic_selective_test(self, local, compare_option):
		"""Used for selective tests--just compare part of a backup"""
		rdiff_backup(local, local, 'testfiles/increment3/various_file_types',
					 'testfiles/output/various_file_types',
					 extra_options = compare_option)
		ret_val = rdiff_backup(local, local,
							   'testfiles/increment2/increment1',
							   'testfiles/output/increment1',
							   extra_options = compare_option,
							   check_return_val = 0)
		assert ret_val, ret_val

		rdiff_backup(local, local, 'testfiles/increment2/newdir',
					 'testfiles/output/newdir',
					 extra_options = compare_option + "-at-time 10000")
		ret_val = rdiff_backup(local, local,
							   'testfiles/increment3/newdir',
							   'testfiles/output/newdir',
						extra_options = compare_option + "-at-time 10000",
							   check_return_val = 0)
		assert ret_val, ret_val

	def testSelLocal(self):
		"""Test basic local compare of single subdirectory"""
		self.generic_selective_test(1, "--compare")

	def testSelRemote(self):
		"""Test --compare of single directory, remote"""
		self.generic_selective_test(0, "--compare")		

	def testSelHashLocal(self):
		"""Test --compare-hash of subdirectory, local"""
		self.generic_selective_test(1, "--compare-hash")

	def testSelHashRemote(self):
		"""Test --compare-hash of subdirectory, remote"""
		self.generic_selective_test(0, "--compare-hash")

	def testSelFullLocal(self):
		"""Test --compare-full of subdirectory, local"""
		self.generic_selective_test(1, "--compare-full")		

	def testSelFullRemote(self):
		"""Test --compare-full of subdirectory, remote"""
		self.generic_selective_test(0, "--compare-full")		

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