All pastes #949009 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-03-19 15:36 UTC
rendered paste body
class TestElisaHttpClientPipeline(ElisaTestCase, SetupServerMixin):
    def setUp(self):
        self.client = ElisaHttpClient(pipeline=True)
        setup_dfr = self.client.open('localhost', SERVER_PORT)

        return setup_dfr

    def tearDown(self):
        self.http_factory.crashed = False
        return self.client.close()

    def test_pipeline(self):
        """Pipeline two requests, expect no errors"""

        res_dfr = defer.Deferred()

        got_first_response = False

        def first_request_done(response):
            global got_first_response
            got_first_response = True
            self.assertEqual(response.code, 200)

            return response

        def second_request_done(response):
            global got_first_response
            self.failUnless(got_first_response)
            
            self.assertEqual(response.code, 200)

            return response

        first_request_dfr = self.client.request('/')
        second_request_dfr = self.client.request('/')

        first_request_dfr.addCallback(first_request_done)
        first_request_dfr.addErrback(res_dfr.errback)
        second_request_dfr.addCallback(second_request_done)
        second_request_dfr.chainDeferred(res_dfr)

        return res_dfr