예제 #1
0
파일: test_base.py 프로젝트: vefimova/swift
    def test_GETorHEAD_base(self):
        base = Controller(self.app)
        req = Request.blank('/v1/a/c/o/with/slashes')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'object', FakeRing(), 'part',
                                       '/a/c/o/with/slashes')
        self.assertTrue('swift.object/a/c/o/with/slashes' in resp.environ)
        self.assertEqual(
            resp.environ['swift.object/a/c/o/with/slashes']['status'], 200)
        req = Request.blank('/v1/a/c/o')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'object', FakeRing(), 'part',
                                       '/a/c/o')
        self.assertTrue('swift.object/a/c/o' in resp.environ)
        self.assertEqual(resp.environ['swift.object/a/c/o']['status'], 200)
        req = Request.blank('/v1/a/c')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'container', FakeRing(), 'part',
                                       '/a/c')
        self.assertTrue('swift.container/a/c' in resp.environ)
        self.assertEqual(resp.environ['swift.container/a/c']['status'], 200)

        req = Request.blank('/v1/a')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'account', FakeRing(), 'part',
                                       '/a')
        self.assertTrue('swift.account/a' in resp.environ)
        self.assertEqual(resp.environ['swift.account/a']['status'], 200)
예제 #2
0
    def test_GETorHEAD_base(self):
        base = Controller(self.app)
        req = Request.blank('/v1/a/c/o/with/slashes')
        ring = FakeRing()
        nodes = list(ring.get_part_nodes(0)) + list(ring.get_more_nodes(0))
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'object', iter(nodes), 'part',
                                       '/a/c/o/with/slashes')
        self.assertTrue('swift.object/a/c/o/with/slashes' in resp.environ)
        self.assertEqual(
            resp.environ['swift.object/a/c/o/with/slashes']['status'], 200)
        req = Request.blank('/v1/a/c/o')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'object', iter(nodes), 'part',
                                       '/a/c/o')
        self.assertTrue('swift.object/a/c/o' in resp.environ)
        self.assertEqual(resp.environ['swift.object/a/c/o']['status'], 200)
        req = Request.blank('/v1/a/c')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'container', iter(nodes), 'part',
                                       '/a/c')
        self.assertTrue('swift.container/a/c' in resp.environ)
        self.assertEqual(resp.environ['swift.container/a/c']['status'], 200)

        req = Request.blank('/v1/a')
        with patch('swift.proxy.controllers.base.'
                   'http_connect', fake_http_connect(200)):
            resp = base.GETorHEAD_base(req, 'account', iter(nodes), 'part',
                                       '/a')
        self.assertTrue('swift.account/a' in resp.environ)
        self.assertEqual(resp.environ['swift.account/a']['status'], 200)

        # Run the above tests again, but this time with concurrent_reads
        # turned on
        policy = next(iter(POLICIES))
        concurrent_get_threads = policy.object_ring.replica_count
        for concurrency_timeout in (0, 2):
            self.app.concurrency_timeout = concurrency_timeout
            req = Request.blank('/v1/a/c/o/with/slashes')
            # NOTE: We are using slow_connect of fake_http_connect as using
            # a concurrency of 0 when mocking the connection is a little too
            # fast for eventlet. Network i/o will make this fine, but mocking
            # it seems is too instantaneous.
            with patch('swift.proxy.controllers.base.http_connect',
                       fake_http_connect(200, slow_connect=True)):
                resp = base.GETorHEAD_base(req,
                                           'object',
                                           iter(nodes),
                                           'part',
                                           '/a/c/o/with/slashes',
                                           concurrency=concurrent_get_threads)
            self.assertTrue('swift.object/a/c/o/with/slashes' in resp.environ)
            self.assertEqual(
                resp.environ['swift.object/a/c/o/with/slashes']['status'], 200)
            req = Request.blank('/v1/a/c/o')
            with patch('swift.proxy.controllers.base.http_connect',
                       fake_http_connect(200, slow_connect=True)):
                resp = base.GETorHEAD_base(req,
                                           'object',
                                           iter(nodes),
                                           'part',
                                           '/a/c/o',
                                           concurrency=concurrent_get_threads)
            self.assertTrue('swift.object/a/c/o' in resp.environ)
            self.assertEqual(resp.environ['swift.object/a/c/o']['status'], 200)
            req = Request.blank('/v1/a/c')
            with patch('swift.proxy.controllers.base.http_connect',
                       fake_http_connect(200, slow_connect=True)):
                resp = base.GETorHEAD_base(req,
                                           'container',
                                           iter(nodes),
                                           'part',
                                           '/a/c',
                                           concurrency=concurrent_get_threads)
            self.assertTrue('swift.container/a/c' in resp.environ)
            self.assertEqual(resp.environ['swift.container/a/c']['status'],
                             200)

            req = Request.blank('/v1/a')
            with patch('swift.proxy.controllers.base.http_connect',
                       fake_http_connect(200, slow_connect=True)):
                resp = base.GETorHEAD_base(req,
                                           'account',
                                           iter(nodes),
                                           'part',
                                           '/a',
                                           concurrency=concurrent_get_threads)
            self.assertTrue('swift.account/a' in resp.environ)
            self.assertEqual(resp.environ['swift.account/a']['status'], 200)