def test_quarantine_same_file(self): df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) mkdirs(df.datadir) f = open(os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) new_dir = df.quarantine() quar_dir = os.path.join(self.testdir, 'sda1', 'quarantined', 'objects', os.path.basename(os.path.dirname( df.data_file))) self.assert_(os.path.isdir(quar_dir)) self.assertEquals(quar_dir, new_dir) # have to remake the datadir and file mkdirs(df.datadir) f = open(os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger(), keep_data_fp=True) double_uuid_path = df.quarantine() self.assert_(os.path.isdir(double_uuid_path)) self.assert_('-' in os.path.basename(double_uuid_path))
def _create_ondisk_file(self, df, data, timestamp, ext=".data"): mkdirs(df.datadir) timestamp = normalize_timestamp(timestamp) data_file = os.path.join(df.datadir, timestamp + ext) with open(data_file, "wb") as f: f.write(data) md = {"X-Timestamp": timestamp} setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps(md, diskfile.PICKLE_PROTOCOL))
def _create_ondisk_file(self, df, data, timestamp, ext='.data'): mkdirs(df.datadir) timestamp = normalize_timestamp(timestamp) data_file = os.path.join(df.datadir, timestamp + ext) with open(data_file, 'wb') as f: f.write(data) md = {'X-Timestamp': timestamp} setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps(md, diskfile.PICKLE_PROTOCOL))
def _create_test_file(self, data, keep_data_fp=True): df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) mkdirs(df.datadir) f = open(os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') f.write(data) setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) f.close() df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger(), keep_data_fp=keep_data_fp) return df
def test_quarantine(self): df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) mkdirs(df.datadir) f = open(os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) df.quarantine() quar_dir = os.path.join(self.testdir, 'sda1', 'quarantined', 'objects', os.path.basename(os.path.dirname( df.data_file))) self.assert_(os.path.isdir(quar_dir))
def test_quarantine(self): df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) mkdirs(df.datadir) f = open( os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) df.quarantine() quar_dir = os.path.join( self.testdir, 'sda1', 'quarantined', 'objects', os.path.basename(os.path.dirname(df.data_file))) self.assert_(os.path.isdir(quar_dir))
def _create_test_file(self, data, keep_data_fp=True): df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) mkdirs(df.datadir) f = open( os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') f.write(data) setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) f.close() df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger(), keep_data_fp=keep_data_fp) return df
def _create_ondisk_file(self, df, data, timestamp, metadata=None, ext='.data'): mkdirs(df._datadir) if timestamp is None: timestamp = time() timestamp = normalize_timestamp(timestamp) if not metadata: metadata = {} if 'X-Timestamp' not in metadata: metadata['X-Timestamp'] = normalize_timestamp(timestamp) if 'ETag' not in metadata: etag = md5() etag.update(data) metadata['ETag'] = etag.hexdigest() if 'name' not in metadata: metadata['name'] = '/a/c/o' if 'Content-Length' not in metadata: metadata['Content-Length'] = str(len(data)) data_file = os.path.join(df._datadir, timestamp + ext) with open(data_file, 'wb') as f: f.write(data) setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps(metadata, diskfile.PICKLE_PROTOCOL))
def test_quarantine_same_file(self): df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) mkdirs(df.datadir) f = open( os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger()) new_dir = df.quarantine() quar_dir = os.path.join( self.testdir, 'sda1', 'quarantined', 'objects', os.path.basename(os.path.dirname(df.data_file))) self.assert_(os.path.isdir(quar_dir)) self.assertEquals(quar_dir, new_dir) # have to remake the datadir and file mkdirs(df.datadir) f = open( os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') setxattr(f.fileno(), diskfile.METADATA_KEY, pickle.dumps({}, diskfile.PICKLE_PROTOCOL)) df = diskfile.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', FakeLogger(), keep_data_fp=True) double_uuid_path = df.quarantine() self.assert_(os.path.isdir(double_uuid_path)) self.assert_('-' in os.path.basename(double_uuid_path))
def test_disk_file_app_iter_corners(self): df = object_server.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o') mkdirs(df.datadir) f = open(os.path.join(df.datadir, normalize_timestamp(time()) + '.data'), 'wb') f.write('1234567890') setxattr(f.fileno(), object_server.METADATA_KEY, pickle.dumps({}, object_server.PICKLE_PROTOCOL)) f.close() df = object_server.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', keep_data_fp=True) it = df.app_iter_range(0, None) sio = StringIO() for chunk in it: sio.write(chunk) self.assertEquals(sio.getvalue(), '1234567890') df = object_server.DiskFile(self.testdir, 'sda1', '0', 'a', 'c', 'o', keep_data_fp=True) it = df.app_iter_range(5, None) sio = StringIO() for chunk in it: sio.write(chunk) self.assertEquals(sio.getvalue(), '67890')