Ejemplo n.º 1
0
    def test_no_content_length_then_a_content_length(self):
        self.mock_swift = mock.Mock()
        self.mock_swift.get_object.side_effect = [
            (200, {}, FakeStream()),
            (200, {
                'Content-Length': '1024'
            }, FakeStream()),
        ]
        wrapper = utils.FileWrapper(self.mock_swift,
                                    'account',
                                    'container',
                                    'key',
                                    headers={'a': 'b'})

        with self.assertRaises(TypeError):
            len(wrapper)

        chunk_size = wrapper._swift_stream.chunk_size
        self.assertEqual('A' * (2 * chunk_size),
                         wrapper.read(4000) + next(wrapper))

        wrapper.seek(0, 'ignored')

        self.assertEqual(1024, len(wrapper))
        self.assertEqual('A' * 1024, wrapper.read())
Ejemplo n.º 2
0
    def test_no_content_length(self):
        content = 'shimmyjimmy' * 3
        self.mock_swift = FakeSwiftClient(content_length=None, content=content)
        wrapper = utils.FileWrapper(self.mock_swift,
                                    'account',
                                    'container',
                                    'key',
                                    headers={'a': 'b'})

        with self.assertRaises(TypeError):
            len(wrapper)
        self.assertEqual({
            'X-Object-Meta-Foo': 'baR',
        }, wrapper.get_headers())
        self.assertEqual(
            {
                # gets lowercased, I guess
                'foo': 'baR',
            },
            wrapper.get_s3_headers())
        self.assertEqual({'a': 'b'}, self.mock_swift.got_headers)

        chunk_size = wrapper._swift_stream.chunk_size
        self.assertGreater(chunk_size, 2)
        self.assertEqual(content[:2], wrapper.read(2))
        self.assertEqual(content[2:chunk_size], wrapper.next())

        wrapper.reset()
        self.assertEqual(content, wrapper.read())

        wrapper.reset()
        self.assertEqual(content, ''.join(wrapper))
Ejemplo n.º 3
0
 def test_failed_req(self):
     self.mock_swift = FakeSwiftClient(status=401)
     with self.assertRaises(RuntimeError) as cm:
         utils.FileWrapper(self.mock_swift,
                           'account',
                           'container',
                           'key',
                           headers={'a': 'b'})
     self.assertEqual('Failed to get the object', cm.exception.message)
Ejemplo n.º 4
0
 def test_reads_extra_byte(self):
     content = 'deadbeef' * 12
     self.mock_swift = FakeSwiftClient(content_length=len(content),
                                       content=content)
     wrapper = utils.FileWrapper(self.mock_swift, 'account', 'container',
                                 'key')
     self.assertEqual(len(content), len(wrapper))
     recvd_content = ''
     while len(recvd_content) < len(content):
         recvd_content += wrapper.read(len(content) - len(recvd_content))
     self.assertTrue(wrapper._swift_stream.raised_stop_iter)
     self.assertEqual(content, recvd_content)
Ejemplo n.º 5
0
 def test_close(self):
     wrapper = utils.FileWrapper(self.mock_swift,
                                 'account',
                                 'container',
                                 'key',
                                 headers={'a': 'b'})
     self.assertEqual(1024, len(wrapper))
     chunk_size = self.mock_swift.fake_stream.chunk_size
     self.assertEqual('A' * chunk_size, next(wrapper))
     self.assertNotEqual(None, wrapper._swift_stream)
     wrapper.close()
     self.assertEqual(None, wrapper._swift_stream)
     wrapper.close()  # idemptotent
     self.assertRaises(ValueError, wrapper.read)
     self.assertRaises(ValueError, wrapper.readlines)
     self.assertRaises(ValueError, wrapper.next)
     with self.assertRaises(ValueError):
         next(wrapper)
Ejemplo n.º 6
0
 def test_open(self):
     wrapper = utils.FileWrapper(self.mock_swift,
                                 'account',
                                 'container',
                                 'key',
                                 headers={'a': 'b'})
     self.assertEqual(1024, len(wrapper))
     self.assertEqual(
         {
             'Content-Length': '1024',
             'X-Object-Meta-Foo': 'baR',
         }, wrapper.get_headers())
     self.assertEqual(
         {
             # gets lowercased, I guess
             'foo': 'baR',
         },
         wrapper.get_s3_headers())
     self.assertEqual({'a': 'b'}, self.mock_swift.got_headers)
Ejemplo n.º 7
0
 def test_seek(self):
     wrapper = utils.FileWrapper(self.mock_swift, 'account', 'container',
                                 'key')
     chunk_size = self.mock_swift.fake_stream.chunk_size
     self.assertGreater(256, chunk_size)  # sanity check
     self.assertEqual('A' * chunk_size, wrapper.read(256))
     self.assertEqual(chunk_size, wrapper.tell())
     self.assertEqual(None, wrapper.buf)
     # A short read will be of that length, leaving remainder in a buffer
     self.assertEqual('A', wrapper.read(1))
     self.assertEqual('A' * (chunk_size - 1), wrapper.buf)
     self.assertEqual(chunk_size + 1, wrapper.tell())
     # A turn of the crank will just return remaining buffer
     got_next = wrapper.next()
     self.assertEqual(
         'A' * (chunk_size - 1), got_next,
         'Exp %d bytes, got %d' % (chunk_size - 1, len(got_next)))
     self.assertEqual(2 * chunk_size, wrapper.tell())
     wrapper.seek(0)
     self.assertEqual(0, wrapper.tell())
     got_all = ''.join(wrapper)
     self.assertEqual('A' * 1024, got_all,
                      'Exp %d bytes, got %d' % (1024, len(got_all)))
     self.assertEqual(1024, wrapper.tell())
Ejemplo n.º 8
0
 def test_seek(self):
     wrapper = utils.FileWrapper(self.mock_swift, 'account', 'container',
                                 'key')
     wrapper.read(256)
     wrapper.seek(0)
     self.assertEqual(0, self.mock_swift.fake_stream.current_pos)
Ejemplo n.º 9
0
 def test_open(self):
     wrapper = utils.FileWrapper(self.mock_swift, 'account', 'container',
                                 'key')
     self.assertEqual(1024, len(wrapper))