コード例 #1
0
ファイル: metadata_tests.py プロジェクト: bytearchive/obnam
 def test_round_trip_for_None_values(self):
     metadata = obnamlib.metadata.Metadata()
     encoded = obnamlib.encode_metadata(metadata)
     decoded = obnamlib.decode_metadata(encoded)
     for name in dir(metadata):
         if name in obnamlib.metadata.metadata_fields:
             self.assertEqual(getattr(decoded, name), None,
                              'attribute %s must be None' % name)
コード例 #2
0
 def setUp(self):
     self.now = None
     self.tempdir = tempfile.mkdtemp()
     fs = obnamlib.LocalFS(self.tempdir)
     self.hooks = obnamlib.HookManager()
     self.hooks.new('repository-toplevel-init')
     self.client = obnamlib.ClientMetadataTree(fs, 'clientid',
                                         obnamlib.DEFAULT_NODE_SIZE,
                                         obnamlib.DEFAULT_UPLOAD_QUEUE_SIZE,
                                         obnamlib.DEFAULT_LRU_SIZE,
                                         self)
     # Force use of filename hash collisions.
     self.client.default_file_id = self.client._bad_default_file_id
     self.client.start_generation()
     self.clientid = self.client.get_generation_id(self.client.tree)
     self.file_metadata = obnamlib.Metadata(st_mode=stat.S_IFREG | 0666)
     self.file_encoded = obnamlib.encode_metadata(self.file_metadata)
     self.dir_metadata = obnamlib.Metadata(st_mode=stat.S_IFDIR | 0777)
     self.dir_encoded = obnamlib.encode_metadata(self.dir_metadata)
コード例 #3
0
 def setUp(self):
     self.now = None
     self.tempdir = tempfile.mkdtemp()
     fs = obnamlib.LocalFS(self.tempdir)
     self.hooks = obnamlib.HookManager()
     self.hooks.new('repository-toplevel-init')
     self.client = obnamlib.ClientMetadataTree(fs, 'clientid',
                                obnamlib.DEFAULT_NODE_SIZE,
                                obnamlib.DEFAULT_UPLOAD_QUEUE_SIZE,
                                obnamlib.DEFAULT_LRU_SIZE, self)
     self.file_size = 123
     self.file_metadata = obnamlib.Metadata(st_mode=stat.S_IFREG | 0666,
                                            st_size=self.file_size)
     self.file_encoded = obnamlib.encode_metadata(self.file_metadata)
コード例 #4
0
ファイル: metadata_tests.py プロジェクト: bytearchive/obnam
 def test_round_trip_for_maximum_values(self):
     unsigned_max = 2**64 - 1
     signed_max = 2**63 - 1
     metadata = obnamlib.metadata.Metadata(
         st_mode=unsigned_max,
         st_mtime_sec=signed_max,
         st_mtime_nsec=unsigned_max,
         st_nlink=unsigned_max,
         st_size=signed_max,
         st_uid=unsigned_max,
         st_blocks=signed_max,
         st_dev=unsigned_max,
         st_gid=unsigned_max,
         st_ino=unsigned_max,
         st_atime_sec=signed_max,
         st_atime_nsec=unsigned_max)
     encoded = obnamlib.encode_metadata(metadata)
     decoded = obnamlib.decode_metadata(encoded)
     self.equal(metadata, decoded)
コード例 #5
0
ファイル: metadata_tests.py プロジェクト: bytearchive/obnam
 def test_round_trip(self):
     metadata = obnamlib.metadata.Metadata(st_mode=1,
                                           st_mtime_sec=2,
                                           st_mtime_nsec=12756,
                                           st_nlink=3,
                                           st_size=4,
                                           st_uid=5,
                                           st_blocks=6,
                                           st_dev=7,
                                           st_gid=8,
                                           st_ino=9,
                                           st_atime_sec=10,
                                           st_atime_nsec=123,
                                           groupname='group',
                                           username='******',
                                           target='target',
                                           md5='checksum')
     encoded = obnamlib.encode_metadata(metadata)
     decoded = obnamlib.decode_metadata(encoded)
     self.equal(metadata, decoded)
コード例 #6
0
ファイル: repo_fmt_6.py プロジェクト: bytearchive/obnam
    def set_file_key(self, generation_id, filename, key, value):
        client_name, gen_number = generation_id
        self._require_client_lock(client_name)
        self._require_existing_file(generation_id, filename)

        client = self._open_client(client_name)

        encoded_metadata = client.get_metadata(gen_number, filename)
        metadata = obnamlib.decode_metadata(encoded_metadata)

        if key == obnamlib.REPO_FILE_MTIME:
            metadata.st_mtime_sec = value
        elif key == obnamlib.REPO_FILE_TEST_KEY:
            metadata.target = value
        else:
            raise obnamlib.RepositoryFileKeyNotAllowed(
                self.format, client_name, key)

        encoded_metadata = obnamlib.encode_metadata(metadata)
        # FIXME: Only sets in unfinished generation
        client.set_metadata(filename, encoded_metadata)
コード例 #7
0
ファイル: repo_fmt_6.py プロジェクト: bytearchive/obnam
 def add_file(self, generation_id, filename):
     client_name, gen_number = generation_id
     self._require_client_lock(client_name)
     client = self._open_client(client_name)
     encoded_metadata = obnamlib.encode_metadata(obnamlib.Metadata())
     client.create(filename, encoded_metadata)
コード例 #8
0
ファイル: repo.py プロジェクト: bytearchive/obnam
 def create(self, filename, metadata):
     '''Create a new (empty) file in the new generation.'''
     self.require_started_generation()
     encoded = obnamlib.encode_metadata(metadata)
     self.client.create(filename, encoded)