Exemplo n.º 1
0
 def test_get_object_metadata_file(self):
     tf = tempfile.NamedTemporaryFile()
     tf.file.write('123'); tf.file.flush()
     md = utils.get_object_metadata(tf.name)
     for key in self.obj_keys:
         assert key in md, "Expected key %s in %r" % (key, md)
     assert md[utils.X_TYPE] == utils.OBJECT
     assert md[utils.X_OBJECT_TYPE] == utils.FILE
     assert md[utils.X_CONTENT_TYPE] == utils.FILE_TYPE
     assert md[utils.X_CONTENT_LENGTH] == os.path.getsize(tf.name)
     assert md[utils.X_TIMESTAMP] == normalize_timestamp(os.path.getctime(tf.name))
     assert md[utils.X_ETAG] == utils._get_etag(tf.name)
Exemplo n.º 2
0
 def test_get_etag(self):
     tf = tempfile.NamedTemporaryFile()
     tf.file.write('123' * utils.CHUNK_SIZE)
     tf.file.flush()
     hd = utils._get_etag(tf.name)
     tf.file.seek(0)
     md5 = hashlib.md5()
     while True:
         chunk = tf.file.read(utils.CHUNK_SIZE)
         if not chunk:
             break
         md5.update(chunk)
     assert hd == md5.hexdigest()
Exemplo n.º 3
0
    def test_get_etag_dup_fd_closed(self):
        fd, path = tempfile.mkstemp()
        data = "It's not who we are underneath, but what we do that defines us"
        os.write(fd, data)
        os.lseek(fd, 0, os.SEEK_SET)

        mock_do_close = Mock()
        with patch("gluster.swift.common.utils.do_close", mock_do_close):
            etag = utils._get_etag(fd)
        self.assertEqual(etag, hashlib.md5(data).hexdigest())
        self.assertTrue(mock_do_close.called)

        # We mocked out close, so we have to close the fd for real
        os.close(mock_do_close.call_args[0][0])
        os.close(fd)
Exemplo n.º 4
0
    def test_get_etag_dup_fd_closed(self):
        fd, path = tempfile.mkstemp()
        data = "It's not who we are underneath, but what we do that defines us"
        os.write(fd, data)
        os.lseek(fd, 0, os.SEEK_SET)

        mock_do_close = Mock()
        with patch("gluster.swift.common.utils.do_close", mock_do_close):
            etag = utils._get_etag(fd)
        self.assertEqual(etag, hashlib.md5(data).hexdigest())
        self.assertTrue(mock_do_close.called)

        # We mocked out close, so we have to close the fd for real
        os.close(mock_do_close.call_args[0][0])
        os.close(fd)
Exemplo n.º 5
0
    def test_create_object_metadata_file(self):
        tf = tempfile.NamedTemporaryFile()
        tf.file.write('4567'); tf.file.flush()
        r_md = utils.create_object_metadata(tf.name)

        xkey = _xkey(tf.name, utils.METADATA_KEY)
        assert len(_xattrs.keys()) == 1
        assert xkey in _xattrs
        assert _xattr_op_cnt['get'] == 1
        assert _xattr_op_cnt['set'] == 1
        md = pickle.loads(_xattrs[xkey])
        assert r_md == md

        for key in self.obj_keys:
            assert key in md, "Expected key %s in %r" % (key, md)
        assert md[utils.X_TYPE] == utils.OBJECT
        assert md[utils.X_OBJECT_TYPE] == utils.FILE
        assert md[utils.X_CONTENT_TYPE] == utils.FILE_TYPE
        assert md[utils.X_CONTENT_LENGTH] == os.path.getsize(tf.name)
        assert md[utils.X_TIMESTAMP] == normalize_timestamp(os.path.getctime(tf.name))
        assert md[utils.X_ETAG] == utils._get_etag(tf.name)
Exemplo n.º 6
0
 def test_get_etag_empty(self):
     tf = tempfile.NamedTemporaryFile()
     hd = utils._get_etag(tf.name)
     assert hd == hashlib.md5().hexdigest()