Esempio n. 1
0
    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))
Esempio n. 2
0
 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))
Esempio n. 3
0
 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))
Esempio n. 4
0
 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
Esempio n. 5
0
 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))
Esempio n. 6
0
 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))
Esempio n. 7
0
 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
Esempio n. 8
0
 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))
Esempio n. 9
0
    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))
Esempio n. 10
0
    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')