def test_write_metadata(self): path = "/tmp/foo/w" orig_d = { 'bar' : 'foo' } utils.write_metadata(path, orig_d) xkey = _xkey(path, utils.METADATA_KEY) assert len(_xattrs.keys()) == 1 assert xkey in _xattrs assert orig_d == pickle.loads(_xattrs[xkey]) assert _xattr_op_cnt['set'] == 1
def test_write_metadata_err(self): path = "/tmp/foo/w" orig_d = { 'bar' : 'foo' } xkey = _xkey(path, utils.METADATA_KEY) _xattr_err[xkey] = errno.EOPNOTSUPP try: utils.write_metadata(path, orig_d) except IOError as e: assert e.errno == errno.EOPNOTSUPP assert len(_xattrs.keys()) == 0 assert _xattr_op_cnt['set'] == 1 else: self.fail("Expected an IOError exception on write")
def test_write_metadata_multiple(self): # At 64 KB an xattr key/value pair, this should generate three keys. path = "/tmp/foo/w" orig_d = { 'bar' : 'x' * 150000 } utils.write_metadata(path, orig_d) assert len(_xattrs.keys()) == 3, "Expected 3 keys, found %d" % len(_xattrs.keys()) payload = '' for i in range(0,3): xkey = _xkey(path, "%s%s" % (utils.METADATA_KEY, i or '')) assert xkey in _xattrs assert len(_xattrs[xkey]) <= utils.MAX_XATTR_SIZE payload += _xattrs[xkey] assert orig_d == pickle.loads(payload) assert _xattr_op_cnt['set'] == 3, "%r" % _xattr_op_cnt