60 |
def write_metadata_to_temp(self): |
def write_metadata_to_temp(self): |
61 |
"""If necessary, write metadata of bigdir to file metadata.gz""" |
"""If necessary, write metadata of bigdir to file metadata.gz""" |
62 |
global tempdir |
global tempdir |
63 |
temprp = tempdir.append("metadata.gz") |
temprp = tempdir.append("mirror_metadata.2005-11-03T14:51:06-06:00.snapshot.gz") |
64 |
if temprp.lstat(): return temprp |
if temprp.lstat(): return temprp |
65 |
|
|
66 |
self.make_temp() |
self.make_temp() |
68 |
rpath_iter = selection.Select(rootrp).set_iter() |
rpath_iter = selection.Select(rootrp).set_iter() |
69 |
|
|
70 |
start_time = time.time() |
start_time = time.time() |
71 |
MetadataFile.open_file(temprp) |
mf = MetadataFile(temprp, 'w') |
72 |
for rp in rpath_iter: MetadataFile.write_object(rp) |
for rp in rpath_iter: mf.write_object(rp) |
73 |
MetadataFile.close_file() |
mf.close() |
74 |
print "Writing metadata took %s seconds" % (time.time() - start_time) |
print "Writing metadata took %s seconds" % (time.time() - start_time) |
75 |
return temprp |
return temprp |
76 |
|
|
77 |
def testSpeed(self): |
def testSpeed(self): |
78 |
"""Test testIterator on 10000 files""" |
"""Test testIterator on 10000 files""" |
79 |
temprp = self.write_metadata_to_temp() |
temprp = self.write_metadata_to_temp() |
80 |
MetadataFile._rp = temprp |
mf = MetadataFile(temprp, 'r') |
81 |
|
|
82 |
start_time = time.time(); i = 0 |
start_time = time.time(); i = 0 |
83 |
for rorp in MetadataFile.get_objects(): i += 1 |
for rorp in mf.get_objects(): i += 1 |
84 |
print "Reading %s metadata entries took %s seconds." % \ |
print "Reading %s metadata entries took %s seconds." % \ |
85 |
(i, time.time() - start_time) |
(i, time.time() - start_time) |
86 |
|
|
102 |
|
|
103 |
""" |
""" |
104 |
temprp = self.write_metadata_to_temp() |
temprp = self.write_metadata_to_temp() |
105 |
MetadataFile._rp = temprp |
mf = MetadataFile(temprp, 'r') |
106 |
start_time = time.time(); i = 0 |
start_time = time.time(); i = 0 |
107 |
for rorp in MetadataFile.get_objects(("subdir3", "subdir10")): i += 1 |
for rorp in mf.get_objects(("subdir3", "subdir10")): i += 1 |
108 |
print "Reading %s metadata entries took %s seconds." % \ |
print "Reading %s metadata entries took %s seconds." % \ |
109 |
(i, time.time() - start_time) |
(i, time.time() - start_time) |
110 |
assert i == 51 |
assert i == 51 |
112 |
def test_write(self): |
def test_write(self): |
113 |
"""Test writing to metadata file, then reading back contents""" |
"""Test writing to metadata file, then reading back contents""" |
114 |
global tempdir |
global tempdir |
115 |
temprp = tempdir.append("write_test.gz") |
temprp = tempdir.append("mirror_metadata.2005-11-03T12:51:06-06:00.snapshot.gz") |
116 |
if temprp.lstat(): temprp.delete() |
if temprp.lstat(): temprp.delete() |
117 |
|
|
118 |
self.make_temp() |
self.make_temp() |
123 |
rps = map(rootrp.append, dirlisting) |
rps = map(rootrp.append, dirlisting) |
124 |
|
|
125 |
assert not temprp.lstat() |
assert not temprp.lstat() |
126 |
MetadataFile.open_file(temprp) |
write_mf = MetadataFile(temprp, 'w') |
127 |
for rp in rps: MetadataFile.write_object(rp) |
for rp in rps: write_mf.write_object(rp) |
128 |
MetadataFile.close_file() |
write_mf.close() |
129 |
assert temprp.lstat() |
assert temprp.lstat() |
130 |
|
|
131 |
reread_rps = list(MetadataFile.get_objects()) |
reread_rps = list(MetadataFile(temprp, 'r').get_objects()) |
132 |
assert len(reread_rps) == len(rps), (len(reread_rps), len(rps)) |
assert len(reread_rps) == len(rps), (len(reread_rps), len(rps)) |
133 |
for i in range(len(reread_rps)): |
for i in range(len(reread_rps)): |
134 |
assert reread_rps[i] == rps[i], i |
assert reread_rps[i] == rps[i], i |
135 |
|
|
136 |
|
def test_patch(self): |
137 |
|
"""Test combining 3 iters of metadata rorps""" |
138 |
|
self.make_temp() |
139 |
|
os.system('cp -a testfiles/various_file_types/* ' + tempdir.path) |
140 |
|
|
141 |
|
rp1 = tempdir.append('regular_file') |
142 |
|
rp2 = tempdir.append('subdir') |
143 |
|
rp3 = rp2.append('subdir_file') |
144 |
|
rp4 = tempdir.append('test') |
145 |
|
|
146 |
|
rp1new = tempdir.append('regular_file') |
147 |
|
rp1new.chmod(0) |
148 |
|
zero = rpath.RORPath(('test',)) |
149 |
|
|
150 |
|
current = [rp1, rp2, rp3] |
151 |
|
diff1 = [rp1, rp4] |
152 |
|
diff2 = [rp1new, rp2, zero] |
153 |
|
|
154 |
|
output = patch(iter(current), iter(diff1), iter(diff2)) |
155 |
|
out1 = output.next() |
156 |
|
assert out1 is rp1new, out1 |
157 |
|
out2 = output.next() |
158 |
|
assert out2 is rp2, out2 |
159 |
|
out3 = output.next() |
160 |
|
assert out3 is rp3, out3 |
161 |
|
self.assertRaises(StopIteration, output.next) |
162 |
|
|
163 |
|
|
164 |
if __name__ == "__main__": unittest.main() |
if __name__ == "__main__": unittest.main() |