def recreate_meta(meta_manager): """Make regress_time mirror_metadata snapshot by patching We write to a tempfile first. Otherwise, in case of a crash, it would seem we would have an intact snapshot and partial diff, not the reverse. """ temprp = [TempFile.new_in_dir(Globals.rbdir)] def callback(rp): temprp[0] = rp writer = metadata.MetadataFile(temprp[0], 'w', check_path=0, callback=callback) for rorp in meta_manager.get_meta_at_time(regress_time, None): writer.write_object(rorp) writer.close() finalrp = Globals.rbdir.append("mirror_metadata.%s.snapshot.gz" % Time.timetostring(regress_time)) assert not finalrp.lstat(), finalrp rpath.rename(temprp[0], finalrp) if Globals.fsync_directories: Globals.rbdir.fsync()
def write(self): """Write the current entry into the journal""" entry_rp = TempFile.new_in_dir(journal_dir_rp) fp = entry_rp.open("wb") fp.write(self.to_string()) entry_rp.fsync(fp) assert not fp.close() sync_journal() self.entry_rp = entry_rp
def recreate_meta(meta_manager): """Make regress_time mirror_metadata snapshot by patching We write to a tempfile first. Otherwise, in case of a crash, it would seem we would have an intact snapshot and partial diff, not the reverse. """ temprp = [TempFile.new_in_dir(Globals.rbdir)] def callback(rp): temprp[0] = rp writer = metadata.MetadataFile(temprp[0], 'w', check_path = 0, callback = callback) for rorp in meta_manager.get_meta_at_time(regress_time, None): writer.write_object(rorp) writer.close() finalrp = Globals.rbdir.append("mirror_metadata.%s.snapshot.gz" % Time.timetostring(regress_time)) assert not finalrp.lstat(), finalrp rpath.rename(temprp[0], finalrp) if Globals.fsync_directories: Globals.rbdir.fsync()
def init_readwrite(self, rbdir): """Set variables using fs tested at rp_base. Run locally. This method creates a temp directory in rp_base and writes to it in order to test various features. Use on a file system that will be written to. """ assert rbdir.conn is Globals.local_connection if not rbdir.isdir(): assert not rbdir.lstat(), (rbdir.path, rbdir.lstat()) rbdir.mkdir() self.root_rp = rbdir self.read_only = 0 subdir = TempFile.new_in_dir(rbdir) subdir.mkdir() self.set_extended_filenames(subdir) self.set_win_reserved_filenames(subdir) self.set_unicode_filenames(subdir) self.set_case_sensitive_readwrite(subdir) self.set_ownership(subdir) self.set_hardlinks(subdir) self.set_fsync_dirs(subdir) self.set_eas(subdir, 1) self.set_acls(subdir) self.set_win_acls(subdir, 1) self.set_dir_inc_perms(subdir) self.set_resource_fork_readwrite(subdir) self.set_carbonfile() self.set_high_perms_readwrite(subdir) self.set_symlink_perms(subdir) self.set_escape_dos_devices(subdir) self.set_escape_trailing_spaces_readwrite(subdir) subdir.delete() return self