def testTracebackPreservedAcrossSuspend(self): backofficeport = self.port + 1 expectedrequest = '' testserver(backofficeport, [], expectedrequest) target = ('localhost', backofficeport, '/') exceptions = [] def failingserver(*args, **kwarg): try: response = yield httpget(*target) except Exception, e: exceptions.append(exc_info())
def testTracebackPreservedAcrossSuspend(self): backofficeport = PortNumberGenerator.next() expectedrequest = '' testserver(backofficeport, [], expectedrequest) target = ('localhost', backofficeport, '/') exceptions = [] def failingserver(*args, **kwarg): response = yield httpget(*target) self.handler = failingserver def requestLine(self, *args, **kwargs): raise RuntimeError("Boom!") try: originalRequestLine = httpRequestModule._requestLine httpRequestModule._requestLine = requestLine clientget('localhost', self.port, '/') with stderr_replaced(): self._loopReactorUntilDone() expectedTraceback = ignoreLineNumbers( """Traceback (most recent call last): File "%(__file__)s", line 0, in handle yield self.handler(*args, **kwargs) File "%(__file__)s", line 192, in failingserver response = yield httpget(*target) File "%(httprequest.py)s", line 129, in httprequest result = s.getResult() File "%(httprequest.py)s", line 83, in _do yield _sendHttpHeaders(sok, method, request, headers) File "%(httprequest.py)s", line 121, in _sendHttpHeaders data = _requestLine(method, request) File "%(__file__)s", line 198, in requestLine raise RuntimeError("Boom!") RuntimeError: Boom!""" % fileDict) resultingTraceback = ''.join(format_exception(*self.error)) self.assertEqualsWS(expectedTraceback, ignoreLineNumbers(resultingTraceback)) finally: httpRequestModule._requestLine = originalRequestLine
def testTracebackPreservedAcrossSuspend(self): backofficeport = PortNumberGenerator.next() expectedrequest = '' testserver(backofficeport, [], expectedrequest) target = ('localhost', backofficeport, '/') exceptions = [] def failingserver(*args, **kwarg): response = yield httpget(*target) self.handler = failingserver def requestLine(self, *args, **kwargs): raise RuntimeError("Boom!") try: originalRequestLine = httpRequestModule._requestLine httpRequestModule._requestLine = requestLine clientget('localhost', self.port, '/') with stderr_replaced(): self._loopReactorUntilDone() expectedTraceback = ignoreLineNumbers("""Traceback (most recent call last): File "%(__file__)s", line 0, in handle yield self.handler(*args, **kwargs) File "%(__file__)s", line 192, in failingserver response = yield httpget(*target) File "%(httprequest.py)s", line 129, in httprequest result = s.getResult() File "%(httprequest.py)s", line 83, in _do yield _sendHttpHeaders(sok, method, request, headers) File "%(httprequest.py)s", line 121, in _sendHttpHeaders data = _requestLine(method, request) File "%(__file__)s", line 198, in requestLine raise RuntimeError("Boom!") RuntimeError: Boom!""" % fileDict) resultingTraceback = ''.join(format_exception(*self.error)) self.assertEqualsWS(expectedTraceback, ignoreLineNumbers(resultingTraceback)) finally: httpRequestModule._requestLine = originalRequestLine
def testPassRequestThruToBackOfficeServerWithHttpRequest(self): backofficeport = PortNumberGenerator.next() def passthruhandler(*args, **kwargs): request = kwargs['RequestURI'] response = yield HttpRequest().httprequest(host='localhost', port=backofficeport, request=request) yield response self.handler = passthruhandler expectedrequest = "GET /depot?arg=1&arg=2 HTTP/1.0\r\n\r\n" responses = (i for i in ['hel', 'lo!']) backofficeserver = testserver(backofficeport, responses, expectedrequest) client = clientget('localhost', self.port, '/depot?arg=1&arg=2') self._loopReactorUntilDone() response = client.recv(99) self.assertEquals('hello!', response)
def testPassRequestThruToBackOfficeServer(self): backofficeport = PortNumberGenerator.next() def passthruhandler(*args, **kwargs): request = kwargs['RequestURI'] response = yield httpget('localhost', backofficeport, request) yield response self.handler = passthruhandler expectedrequest = "GET /depot?arg=1&arg=2 HTTP/1.0\r\n\r\n" responses = (i for i in ['hel', 'lo!']) backofficeserver = testserver(backofficeport, responses, expectedrequest) client = clientget('localhost', self.port, '/depot?arg=1&arg=2') self._loopReactorUntilDone() response = client.recv(99) self.assertEquals('hello!', response)
def testPassRequestThruToBackOfficeServer(self): done = [False] backofficeport = self.port + 1 def passthruhandler(*args, **kwargs): request = kwargs['RequestURI'] response = yield httpget('localhost', backofficeport, request) yield response done[0] = True self.handler = passthruhandler expectedrequest = "GET /depot?arg=1&arg=2 HTTP/1.0\r\n\r\n" responses = (i for i in ['hel', 'lo!']) backofficeserver = testserver(backofficeport, responses, expectedrequest) client = clientget('localhost', self.port, '/depot?arg=1&arg=2') while not done[0]: self.reactor.step() response = client.recv(99) self.assertEquals('hello!', response)