本文整理匯總了Python中twisted.internet.endpoints.HostnameEndpoint方法的典型用法代碼示例。如果您正苦於以下問題:Python endpoints.HostnameEndpoint方法的具體用法?Python endpoints.HostnameEndpoint怎麽用?Python endpoints.HostnameEndpoint使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類twisted.internet.endpoints
的用法示例。
在下文中一共展示了endpoints.HostnameEndpoint方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: createClientEndpoint
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def createClientEndpoint(self, reactor, clientFactory, **connectArgs):
"""
Creates a L{HostnameEndpoint} instance where the hostname is resolved
into a single IPv4 address.
"""
expectedAddress = '1.2.3.4'
address = HostnameAddress(b"example.com", 80)
endpoint = endpoints.HostnameEndpoint(
deterministicResolvingReactor(reactor, [expectedAddress]),
b"example.com", address.port, **connectArgs
)
return (endpoint, (expectedAddress, address.port, clientFactory,
connectArgs.get('timeout', 30),
connectArgs.get('bindAddress', None)),
address)
示例2: test_endpointConnectFailure
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_endpointConnectFailure(self):
"""
If L{HostnameEndpoint.connect} is invoked and there is no server
listening for connections, the returned L{Deferred} will fail with
C{ConnectError}.
"""
expectedError = error.ConnectError(string="Connection Failed")
mreactor = RaisingMemoryReactorWithClock(
connectException=expectedError)
clientFactory = object()
ep, ignoredArgs, ignoredDest = self.createClientEndpoint(
mreactor, clientFactory)
d = ep.connect(clientFactory)
mreactor.advance(endpoints.HostnameEndpoint._DEFAULT_ATTEMPT_DELAY)
self.assertEqual(self.failureResultOf(d).value, expectedError)
self.assertEqual([], mreactor.getDelayedCalls())
示例3: test_endpointConnectFailureAfterIteration
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_endpointConnectFailureAfterIteration(self):
"""
If a connection attempt initiated by
L{HostnameEndpoint.connect} fails only after
L{HostnameEndpoint} has exhausted the list of possible server
addresses, the returned L{Deferred} will fail with
C{ConnectError}.
"""
expectedError = error.ConnectError(string="Connection Failed")
mreactor = MemoryReactor()
clientFactory = object()
ep, ignoredArgs, ignoredDest = self.createClientEndpoint(
mreactor, clientFactory)
d = ep.connect(clientFactory)
mreactor.advance(0.3)
host, port, factory, timeout, bindAddress = mreactor.tcpClients[0]
factory.clientConnectionFailed(mreactor.connectors[0], expectedError)
self.assertEqual(self.failureResultOf(d).value, expectedError)
self.assertEqual([], mreactor.getDelayedCalls())
示例4: test_deferBadEncodingToConnect
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_deferBadEncodingToConnect(self):
"""
Since any client of L{IStreamClientEndpoint} needs to handle Deferred
failures from C{connect}, L{HostnameEndpoint}'s constructor will not
raise exceptions when given bad host names, instead deferring to
returning a failing L{Deferred} from C{connect}.
"""
endpoint = endpoints.HostnameEndpoint(
deterministicResolvingReactor(MemoryReactor(), ['127.0.0.1']),
b'\xff-garbage-\xff', 80
)
deferred = endpoint.connect(Factory.forProtocol(Protocol))
err = self.failureResultOf(deferred, ValueError)
self.assertIn("\\xff-garbage-\\xff", str(err))
endpoint = endpoints.HostnameEndpoint(
deterministicResolvingReactor(MemoryReactor(), ['127.0.0.1']),
u'\u2ff0-garbage-\u2ff0', 80
)
deferred = endpoint.connect(Factory())
err = self.failureResultOf(deferred, ValueError)
self.assertIn("\\u2ff0-garbage-\\u2ff0", str(err))
示例5: test_ignoreUnknownAddressTypes
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_ignoreUnknownAddressTypes(self):
"""
If an address type other than L{IPv4Address} and L{IPv6Address} is
returned by on address resolution, the endpoint ignores that address.
"""
self.mreactor = MemoryReactor()
self.endpoint = endpoints.HostnameEndpoint(
deterministicResolvingReactor(self.mreactor, ['1.2.3.4', object(),
'1:2::3:4']),
b"www.example.com", 80
)
clientFactory = None
self.endpoint.connect(clientFactory)
self.mreactor.advance(0.3)
(host, port, factory, timeout, bindAddress) = self.mreactor.tcpClients[1]
self.assertEqual(len(self.mreactor.tcpClients), 2)
self.assertEqual(host, '1:2::3:4')
self.assertEqual(port, 80)
示例6: test_hostnameEndpointConstruction
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_hostnameEndpointConstruction(self):
"""
A L{HostnameEndpoint} is constructed from parameters passed to
L{clientFromString}.
"""
reactor = object()
endpoint = endpoints.clientFromString(
reactor,
nativeString(
'tls:example.com:443:timeout=10:bindAddress=127.0.0.1'))
hostnameEndpoint = endpoint._wrappedEndpoint
self.assertIs(hostnameEndpoint._reactor, reactor)
self.assertEqual(hostnameEndpoint._hostBytes, b'example.com')
self.assertEqual(hostnameEndpoint._port, 443)
self.assertEqual(hostnameEndpoint._timeout, 10)
self.assertEqual(hostnameEndpoint._bindAddress,
nativeString('127.0.0.1'))
示例7: test_utf8Encoding
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_utf8Encoding(self):
"""
The hostname passed to L{clientFromString} is treated as utf-8 bytes;
it is then encoded as IDNA when it is passed along to
L{HostnameEndpoint}, and passed as unicode to L{optionsForClientTLS}.
"""
reactor = object()
endpoint = endpoints.clientFromString(
reactor, b'tls:\xc3\xa9xample.example.com:443'
)
self.assertEqual(
endpoint._wrappedEndpoint._hostBytes,
b'xn--xample-9ua.example.com'
)
connectionCreator = connectionCreatorFromEndpoint(
reactor, endpoint)
self.assertEqual(connectionCreator._hostname,
u'\xe9xample.example.com')
示例8: test_fallbackNameResolution
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_fallbackNameResolution(self):
"""
L{_fallbackNameResolution} returns a L{Deferred} that fires
with the resoution of the the host and request port.
"""
from twisted.internet import reactor
ep = endpoints.HostnameEndpoint(reactor,
host='ignored',
port=0)
host, port = ("1.2.3.4", 1)
resolutionDeferred = ep._fallbackNameResolution(host, port)
def assertHostPortFamilySockType(result):
self.assertEqual(len(result), 1)
[(family, socktype, _, _, sockaddr)] = result
self.assertEqual(family, AF_INET)
self.assertEqual(socktype, SOCK_STREAM)
self.assertEqual(sockaddr, (host, port))
return resolutionDeferred.addCallback(assertHostPortFamilySockType)
示例9: test_endpointConnectFailure
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_endpointConnectFailure(self):
"""
When L{HostnameEndpoint.connect} cannot connect to its
destination, the returned L{Deferred} will fail with
C{ConnectError}.
"""
expectedError = error.ConnectError(string="Connection Failed")
mreactor = RaisingMemoryReactorWithClock(
connectException=expectedError)
clientFactory = object()
ep, ignoredArgs, ignoredDest = self.createClientEndpoint(
mreactor, clientFactory)
d = ep.connect(clientFactory)
mreactor.advance(endpoints.HostnameEndpoint._DEFAULT_ATTEMPT_DELAY)
self.assertEqual(self.failureResultOf(d).value, expectedError)
self.assertEqual([], mreactor.getDelayedCalls())
示例10: test_deprecation
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_deprecation(self):
"""
Instantiating L{HostnameEndpoint} with a reactor that does not
provide L{IReactorPluggableResolver} emits a deprecation warning.
"""
mreactor = MemoryReactor()
clientFactory = object()
self.createClientEndpoint(mreactor, clientFactory)
warnings = self.flushWarnings()
self.assertEqual(1, len(warnings))
self.assertIs(DeprecationWarning, warnings[0]['category'])
self.assertTrue(warnings[0]['message'].startswith(
'Passing HostnameEndpoint a reactor that does not provide'
' IReactorPluggableNameResolver'
' (twisted.internet.testing.MemoryReactorClock)'
' was deprecated in Twisted 17.5.0;'
' please use a reactor that provides'
' IReactorPluggableNameResolver instead'))
示例11: test_hostIPv6Address
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_hostIPv6Address(self):
"""
When the host passed to L{HostnameEndpoint} is an IPv6 address it is
wrapped in brackets in the string representation, like in a URI. This
prevents the colon separating the host from the port from being
ambiguous.
"""
endpoint = endpoints.HostnameEndpoint(
deterministicResolvingReactor(Clock(), []),
b'::1', 22,
)
rep = repr(endpoint)
self.assertEqual("<HostnameEndpoint [::1]:22>", rep)
self.assertIs(str, type(rep))
示例12: connectionCreatorFromEndpoint
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def connectionCreatorFromEndpoint(memoryReactor, tlsEndpoint):
"""
Given a L{MemoryReactor} and the result of calling L{wrapClientTLS},
extract the L{IOpenSSLClientConnectionCreator} associated with it.
Implementation presently uses private attributes but could (and should) be
refactored to just call C{.connect()} on the endpoint, when
L{HostnameEndpoint} starts directing its C{getaddrinfo} call through the
reactor it is passed somehow rather than via the global threadpool.
@param memoryReactor: the reactor attached to the given endpoint.
(Presently unused, but included so tests won't need to be modified to
honor it.)
@param tlsEndpoint: The result of calling L{wrapClientTLS}.
@return: the client connection creator associated with the endpoint
wrapper.
@rtype: L{IOpenSSLClientConnectionCreator}
"""
return tlsEndpoint._wrapperFactory(None)._connectionCreator
示例13: test_endpoint_from_hint_obj
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def test_endpoint_from_hint_obj(self):
def efho(hint, tor=None):
return endpoint_from_hint_obj(hint, tor, reactor)
self.assertIsInstance(efho(DirectTCPV1Hint("host", 1234, 0.0)),
endpoints.HostnameEndpoint)
self.assertEqual(efho("unknown:stuff:yowza:pivlor"), None)
# tor=None
self.assertEqual(efho(TorTCPV1Hint("host", "port", 0)), None)
self.assertEqual(efho(UnknownHint("foo")), None)
tor = mock.Mock()
def tor_ep(hostname, port):
if hostname == "non-public":
raise ValueError
return ("tor_ep", hostname, port)
tor.stream_via = mock.Mock(side_effect=tor_ep)
self.assertEqual(efho(DirectTCPV1Hint("host", 1234, 0.0), tor),
("tor_ep", "host", 1234))
self.assertEqual(efho(TorTCPV1Hint("host2.onion", 1234, 0.0), tor),
("tor_ep", "host2.onion", 1234))
self.assertEqual( efho(DirectTCPV1Hint("non-public", 1234, 0.0), tor), None)
self.assertEqual(efho(UnknownHint("foo"), tor), None)
示例14: endpoint_from_hint_obj
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def endpoint_from_hint_obj(hint, tor, reactor):
if tor:
if isinstance(hint, (DirectTCPV1Hint, TorTCPV1Hint)):
# this Tor object will throw ValueError for non-public IPv4
# addresses and any IPv6 address
try:
return tor.stream_via(hint.hostname, hint.port)
except ValueError:
return None
return None
if isinstance(hint, DirectTCPV1Hint):
# avoid DNS lookup unless necessary
if isIPAddress(hint.hostname):
return TCP4ClientEndpoint(reactor, hint.hostname, hint.port)
if isIPv6Address(hint.hostname):
return TCP6ClientEndpoint(reactor, hint.hostname, hint.port)
return HostnameEndpoint(reactor, hint.hostname, hint.port)
return None
示例15: __init__
# 需要導入模塊: from twisted.internet import endpoints [as 別名]
# 或者: from twisted.internet.endpoints import HostnameEndpoint [as 別名]
def __init__(self, hosts, clientId=None,
timeout=DEFAULT_REQUEST_TIMEOUT_MSECS,
disconnect_on_timeout=False,
correlation_id=0,
reactor=None,
endpoint_factory=HostnameEndpoint,
retry_policy=_DEFAULT_RETRY_POLICY):
# Afkak used to suport a timeout of None, but that's a bad idea in
# practice (Kafka has been seen to black-hole requests) so support was
# removed in Afkak 3.0.0.
if timeout is None:
raise TypeError('timeout must be a number, not None, since Afkak 3.0.0')
self.timeout = float(timeout) / 1000.0 # msecs to secs
if clientId is not None:
self.clientId = clientId
self._clientIdBytes = _coerce_client_id(clientId)
# FIXME: clients should be private
self.clients = {} # Broker-NodeID -> _KafkaBrokerClient instance
self.topics_to_brokers = {} # TopicAndPartition -> BrokerMetadata
self.partition_meta = {} # TopicAndPartition -> PartitionMetadata
self._group_to_coordinator = {} # consumer_group -> BrokerMetadata
self._coordinator_fetches = {} # consumer_group -> Tuple[Deferred, List[Deferred]]
self.topic_partitions = {} # topic_id -> [0, 1, 2, ...]
self.topic_errors = {} # topic_id -> topic_error_code
self.correlation_id = correlation_id
self.close_dlist = None # Deferred wait on broker client disconnects
# Do we disconnect brokerclients when requests via them timeout?
self._disconnect_on_timeout = disconnect_on_timeout
self._brokers = {} # Broker-NodeID -> BrokerMetadata
self._closing = False # Are we shutting down/shutdown?
self.update_cluster_hosts(hosts) # Store hosts and mark for lookup
if reactor is None:
from twisted.internet import reactor
self.reactor = reactor
self._endpoint_factory = endpoint_factory
assert retry_policy(1) >= 0.0
self._retry_policy = retry_policy