twisted.web.test.test_newclient.HTTP11ClientProtocolTests(TestCase)
class documentationtwisted.web.test.test_newclient
(View In Hierarchy)
Tests for the HTTP 1.1 client protocol implementation, HTTP11ClientProtocol
.
Method | setUp | Create an HTTP11ClientProtocol
connected to a fake transport. |
Method | test_request | HTTP11ClientProtocol.request
accepts a Request and
calls its writeTo method with its own transport. |
Method | test_secondRequest | The second time HTTP11ClientProtocol.request
is called, it returns a Deferred which
immediately fires with a Failure
wrapping a RequestNotSent
exception. |
Method | test_requestAfterConnectionLost | HTTP11ClientProtocol.request
returns a Deferred which
immediately fires with a Failure
wrapping a RequestNotSent
if called after the protocol has been disconnected. |
Method | test_failedWriteTo | No summary |
Method | test_synchronousWriteToError | If Request.writeTo
raises an exception, HTTP11ClientProtocol.request
returns a Deferred which
fires with a Failure of RequestGenerationFailed
wrapping that exception. |
Method | test_connectionLostDuringRequestGeneration | No summary |
Method | test_connectionLostBeforeGenerationFinished | If the request passed to HTTP11ClientProtocol
finishes generation successfully after the HTTP11ClientProtocol 's
connection has been lost, nothing happens. |
Method | test_connectionLostBeforeGenerationFailed | If the request passed to HTTP11ClientProtocol
finished generation with an error after the HTTP11ClientProtocol 's
connection has been lost, nothing happens. |
Method | test_errorMessageOnConnectionLostBeforeGenerationFailedDoesNotConfuse | No summary |
Method | test_receiveSimplestResponse | When a response is delivered to HTTP11ClientProtocol ,
the Deferred
previously returned by the request method is called back with
a Response
instance and the connection is closed. |
Method | test_receiveResponseHeaders | The headers included in a response delivered to HTTP11ClientProtocol
are included on the Response instance
passed to the callback returned by the request method. |
Method | test_receiveResponseBeforeRequestGenerationDone | If response bytes are delivered to HTTP11ClientProtocol
before the Deferred
returned by Request.writeTo
fires, those response bytes are parsed as part of the response. |
Method | test_receiveResponseHeadersTooLong | The connection is closed when the server respond with a header which is above the maximum line. |
Method | test_connectionLostAfterReceivingResponseBeforeRequestGenerationDone | If response bytes are delivered to HTTP11ClientProtocol
before the request completes, calling connectionLost on the
protocol will result in protocol being moved to
'CONNECTION_LOST' state. |
Method | test_receiveResponseBody | The deliverBody method of the response object with which
the Deferred
returned by HTTP11ClientProtocol.request
fires can be used to get the body of the response. |
Method | test_responseBodyFinishedWhenConnectionLostWhenContentLengthIsUnknown | No summary |
Method | test_chunkedResponseBodyUnfinishedWhenConnectionLost | No summary |
Method | test_parserDataReceivedException | No summary |
Method | test_proxyStopped | When the HTTP response parser is disconnected, the TransportProxyProducer
which was connected to it as a transport is stopped. |
Method | test_abortClosesConnection | HTTP11ClientProtocol.abort
will tell the transport to close its connection when it is invoked, and
returns a Deferred that fires when the connection is lost. |
Method | test_abortAfterConnectionLost | HTTP11ClientProtocol.abort
called after the connection is lost returns a Deferred that
fires immediately. |
Method | test_abortBeforeResponseBody | No summary |
Method | test_abortAfterResponseHeaders | No summary |
Method | test_quiescentCallbackCalled | If after a response is done the {HTTP11ClientProtocol} stays open and
returns to QUIESCENT state, all per-request state is reset and the
quiescentCallback is called with the protocol instance. |
Method | test_transportProducingWhenQuiescentAfterFullBody | No summary |
Method | test_quiescentCallbackCalledEmptyResponse | The quiescentCallback is called before the request Deferred
fires, in cases where the response has no body. |
Method | test_quiescentCallbackNotCalled | If after a response is done the {HTTP11ClientProtocol} returns a
Connection: close header in the response, the
quiescentCallback is not called and the connection is
lost. |
Method | test_quiescentCallbackNotCalledNonPersistentQuery | If the request was non-persistent (i.e. sent Connection:
close ), the quiescentCallback is not called and the
connection is lost. |
Method | test_quiescentCallbackThrows | If quiescentCallback throws an exception, the error is
logged and protocol is disconnected. |
Method | test_cancelBeforeResponse | No summary |
Method | test_cancelDuringResponse | No summary |
Method | assertCancelDuringBodyProduction | No summary |
Method | test_cancelDuringBodyProduction | No summary |
Method | test_cancelDuringChunkedBodyProduction | No summary |
Inherited from TestCase:
Instance Variable | timeout | A real number of seconds. If set, the test will raise an error if it takes
longer than timeout seconds. If not set,
util.DEFAULT_TIMEOUT_DURATION is used. |
Method | __init__ | Construct an asynchronous test case for methodName . |
Method | assertFailure | Fail if deferred does not errback with one of
expectedFailures . Returns the original Deferred with callbacks
added. You will need to return this Deferred from your test case. |
Method | __call__ | Run the test. Should always do exactly the same thing as run(). |
Method | deferSetUp | Undocumented |
Method | deferTestMethod | Undocumented |
Method | deferTearDown | Undocumented |
Method | deferRunCleanups | Run any scheduled cleanups and report errors (if any to the result object. |
Method | addCleanup | Extend the base cleanup feature with support for cleanup functions which return Deferreds. |
Method | getSuppress | Undocumented |
Method | getTimeout | No summary |
Method | _run | Run a single method, either a test method or fixture. |
Method | _ebDeferSetUp | Undocumented |
Method | _cbDeferTestMethod | Undocumented |
Method | _ebDeferTestMethod | Undocumented |
Method | _ebDeferTearDown | Undocumented |
Method | _cbDeferRunCleanups | Undocumented |
Method | _cleanUp | Undocumented |
Method | _classCleanUp | Undocumented |
Method | _makeReactorMethod | Create a method which wraps the reactor method name . The
new method issues a deprecation warning and calls the original. |
Method | _deprecateReactor | Deprecate iterate , crash and stop
on reactor . That is, each method is wrapped in a function that
issues a deprecation warning, then calls the original. |
Method | _undeprecateReactor | Restore the deprecated reactor methods. Undoes what _deprecateReactor
did. |
Method | _runCleanups | Run the cleanups added with addCleanup
in order. |
Method | _runFixturesAndTest | Really run setUp , the test method, and
tearDown . Any of these may return defer.Deferred s.
After they complete, do some reactor cleanup. |
Method | _wait | Take a Deferred that only ever callbacks. Block until it happens. |
Inherited from SynchronousTestCase (via TestCase):
Instance Variable | failureException | An exception class, defaulting to FailTest . If the test method
raises this exception, it will be reported as a failure, rather than an
exception. All of the assertion methods raise this if the assertion fails. |
Instance Variable | skip | None
or a string explaining why this test is to be skipped. If defined, the test
will not be run. Instead, it will be reported to the result object as
'skipped' (if the TestResult supports skipping). |
Instance Variable | todo | None ,
a string or a tuple of (errors, reason) where
errors is either an exception class or an iterable of
exception classes, and reason is a string. See Todo or makeTodo for
more information. |
Instance Variable | suppress | None
or a list of tuples of (args, kwargs) to be passed to
warnings.filterwarnings . Use these to suppress warnings raised
in a test. Useful for testing deprecated code. See also util.suppress . |
Method | __eq__ | No summary |
Method | __ne__ | Undocumented |
Method | __hash__ | Undocumented |
Method | shortDescription | Undocumented |
Method | getSkip | No summary |
Method | getTodo | No summary |
Method | runTest | If no methodName argument is passed to the constructor, run
will treat this method as the thing with the actual test inside. |
Method | run | Run the test case, storing the results in result . |
Method | patch | Monkey patch an object for the duration of the test. |
Method | flushLoggedErrors | Remove stored errors received from the log. |
Method | flushWarnings | Remove stored warnings from the list of captured warnings and return them. |
Method | callDeprecated | Call a function that should have been deprecated at a specific version and in favor of a specific alternative, and assert that it was thusly deprecated. |
Method | mktemp | Create a new path name which can be used for a new file or directory. |
Method | _getSuppress | No summary |
Method | _getSkipReason | Return the reason to use for skipping a test method. |
Method | _installObserver | Undocumented |
Method | _removeObserver | Undocumented |
Inherited from _Assertions (via TestCase, SynchronousTestCase):
Method | fail | Absolutely fail the test. Do not pass go, do not collect $200. |
Method | assertFalse | Fail the test if condition evaluates to True. |
Method | assertTrue | Fail the test if condition evaluates to False. |
Method | assertRaises | Fail the test unless calling the function f with the given
args and kwargs raises exception .
The failure will report the traceback and call stack of the unexpected
exception. |
Method | assertEqual | Fail the test if first and second are not
equal. |
Method | assertIs | Fail the test if first is not second . This is
an obect-identity-equality test, not an object equality (i.e.
__eq__ ) test. |
Method | assertIsNot | Fail the test if first is second . This is an
obect-identity-equality test, not an object equality (i.e.
__eq__ ) test. |
Method | assertNotEqual | Fail the test if first == second . |
Method | assertIn | Fail the test if containee is not found in
container . |
Method | assertNotIn | Fail the test if containee is found in
container . |
Method | assertNotAlmostEqual | Fail if the two objects are equal as determined by their difference rounded to the given number of decimal places (default 7) and comparing to zero. |
Method | assertAlmostEqual | Fail if the two objects are unequal as determined by their difference rounded to the given number of decimal places (default 7) and comparing to zero. |
Method | assertApproximates | Fail if first - second >
tolerance |
Method | assertSubstring | Fail if substring does not exist within
astring . |
Method | assertNotSubstring | Fail if astring contains substring . |
Method | assertWarns | Fail if the given function doesn't generate the specified warning when called. It calls the function, checks the warning, and forwards the result of the function if everything is fine. |
Method | assertIsInstance | Fail if instance is not an instance of the given class or
of one of the given classes. |
Method | assertNotIsInstance | Fail if instance is an instance of the given class or of
one of the given classes. |
Method | successResultOf | Return the current success result of deferred or raise
self.failureException . |
Method | failureResultOf | Return the current failure result of deferred or raise
self.failureException . |
Method | assertNoResult | Assert that deferred does not have a result at this
point. |
Method | assertRegex | Fail the test if a regexp search of text
fails. |
HTTP11ClientProtocol.request
accepts a Request
and
calls its writeTo
method with its own transport.
The second time HTTP11ClientProtocol.request
is called, it returns a Deferred
which
immediately fires with a Failure
wrapping a RequestNotSent
exception.
HTTP11ClientProtocol.request
returns a Deferred
which
immediately fires with a Failure
wrapping a RequestNotSent
if called after the protocol has been disconnected.
If the Deferred
returned by Request.writeTo
fires with a Failure
, HTTP11ClientProtocol.request
disconnects its transport and returns a Deferred
which
fires with a Failure
of RequestGenerationFailed
wrapping the underlying failure.
If Request.writeTo
raises an exception, HTTP11ClientProtocol.request
returns a Deferred
which
fires with a Failure
of RequestGenerationFailed
wrapping that exception.
If HTTP11ClientProtocol
's
transport is disconnected before the Deferred
returned by Request.writeTo
fires, the Deferred
returned by HTTP11ClientProtocol.request
fires with a Failure
of RequestTransmissionFailed
wrapping the underlying failure.
If the request passed to HTTP11ClientProtocol
finishes generation successfully after the HTTP11ClientProtocol
's
connection has been lost, nothing happens.
If the request passed to HTTP11ClientProtocol
finished generation with an error after the HTTP11ClientProtocol
's
connection has been lost, nothing happens.
If the request passed to HTTP11ClientProtocol
finished generation with an error after the HTTP11ClientProtocol
's
connection has been lost, an error is logged that gives a non-confusing
hint to user on what went wrong.
When a response is delivered to HTTP11ClientProtocol
,
the Deferred
previously returned by the request
method is called back with
a Response
instance and the connection is closed.
The headers included in a response delivered to HTTP11ClientProtocol
are included on the Response
instance
passed to the callback returned by the request
method.
If response bytes are delivered to HTTP11ClientProtocol
before the Deferred
returned by Request.writeTo
fires, those response bytes are parsed as part of the response.
The connection is also closed, because we're in a confusing state, and
therefore the quiescentCallback
isn't called.
The connection is closed when the server respond with a header which is above the maximum line.
If response bytes are delivered to HTTP11ClientProtocol
before the request completes, calling connectionLost
on the
protocol will result in protocol being moved to
'CONNECTION_LOST'
state.
The deliverBody
method of the response object with which
the Deferred
returned by HTTP11ClientProtocol.request
fires can be used to get the body of the response.
If the length of the response body is unknown, the protocol passed to
the response's deliverBody
method has its
connectionLost
method called with a Failure
wrapping a PotentialDataLoss
exception.
If the final chunk has not been received when the connection is lost
(for any reason), the protocol passed to deliverBody
has its
connectionLost
method called with a Failure
wrapping the exception for that reason.
If the parser HTTP11ClientProtocol
delivers bytes to in dataReceived
raises an exception, the
exception is wrapped in a Failure
and
passed to the parser's connectionLost
and then the HTTP11ClientProtocol
's
transport is disconnected.
When the HTTP response parser is disconnected, the TransportProxyProducer
which was connected to it as a transport is stopped.
HTTP11ClientProtocol.abort
will tell the transport to close its connection when it is invoked, and
returns a Deferred
that fires when the connection is lost.
HTTP11ClientProtocol.abort
called after the connection is lost returns a Deferred
that
fires immediately.
The Deferred returned by HTTP11ClientProtocol.request
will fire with a ResponseFailed
failure containing a ConnectionAborted
exception, if the connection was aborted before all response headers have
been received.
When the connection is aborted after the response headers have been
received and the Response
has been
made available to application code, the response body protocol's
connectionLost
method will be invoked with a ResponseFailed
failure containing a ConnectionAborted
exception.
If after a response is done the {HTTP11ClientProtocol} stays open and
returns to QUIESCENT state, all per-request state is reset and the
quiescentCallback
is called with the protocol instance.
This is useful for implementing a persistent connection pool.
The quiescentCallback
is called *before* the
response-receiving protocol's connectionLost
, so that new
requests triggered by end of first request can re-use a persistent
connection.
The quiescentCallback
passed to HTTP11ClientProtocol
will only be invoked once that protocol is in a state similar to its
initial state. One of the aspects of this initial state is the
producer-state of its transport; an HTTP11ClientProtocol
begins with a transport that is producing, i.e. not
pauseProducing
'd.
Therefore, when quiescentCallback
is invoked the protocol
will still be producing.
The quiescentCallback is called before the request Deferred
fires, in cases where the response has no body.
If after a response is done the {HTTP11ClientProtocol} returns a
Connection: close
header in the response, the
quiescentCallback
is not called and the connection is
lost.
If the request was non-persistent (i.e. sent Connection:
close
), the quiescentCallback
is not called and the
connection is lost.
If quiescentCallback
throws an exception, the error is
logged and protocol is disconnected.
The Deferred
returned by HTTP11ClientProtocol.request
will fire with a ResponseNeverReceived
failure containing a CancelledError
exception if the request was cancelled before any response headers were
received.
The Deferred
returned by HTTP11ClientProtocol.request
will fire with a ResponseFailed
failure containing a CancelledError
exception if the request was cancelled before all response headers were
received.
The Deferred
returned by HTTP11ClientProtocol.request
will fire with a RequestGenerationFailed
failure containing a CancelledError
exception if the request was cancelled before a bodyProducer
has finished producing.
The Deferred
returned by HTTP11ClientProtocol.request
will fire with a RequestGenerationFailed
failure containing a CancelledError
exception if the request was cancelled before a bodyProducer
with an explicit length has finished producing.
The Deferred
returned by HTTP11ClientProtocol.request
will fire with a RequestGenerationFailed
failure containing a CancelledError
exception if the request was cancelled before a bodyProducer
with UNKNOWN_LENGTH
has finished producing.