@ -8,11 +8,10 @@ import attr
from zope . interface import implementer
from twisted . internet import address , threads , udp
from twisted . internet . _resolver import HostResolution
from twisted . internet . address import IPv4Address
from twisted . internet . defer import Deferred
from twisted . internet . _resolver import SimpleResolverComplexifier
from twisted . internet . defer import Deferred , fail , succeed
from twisted . internet . error import DNSLookupError
from twisted . internet . interfaces import IReactorPluggableNameResolver
from twisted . internet . interfaces import IReactorPluggableNameResolver , IResolverSimple
from twisted . python . failure import Failure
from twisted . test . proto_helpers import MemoryReactorClock
from twisted . web . http import unquote
@ -227,30 +226,16 @@ class ThreadedMemoryReactorClock(MemoryReactorClock):
def __init__ ( self ) :
self . _udp = [ ]
self . lookups = { }
class Resolver ( object ) :
def resolveHostName (
_self ,
resolutionReceiver ,
hostName ,
portNumber = 0 ,
addressTypes = None ,
transportSemantics = ' TCP ' ,
) :
resolution = HostResolution ( hostName )
resolutionReceiver . resolutionBegan ( resolution )
if hostName not in self . lookups :
raise DNSLookupError ( " OH NO " )
resolutionReceiver . addressResolved (
IPv4Address ( ' TCP ' , self . lookups [ hostName ] , portNumber )
)
resolutionReceiver . resolutionComplete ( )
return resolution
self . nameResolver = Resolver ( )
lookups = self . lookups = { }
@implementer ( IResolverSimple )
class FakeResolver ( object ) :
def getHostByName ( self , name , timeout = None ) :
if name not in lookups :
return fail ( DNSLookupError ( " OH NO: unknown %s " % ( name , ) ) )
return succeed ( lookups [ name ] )
self . nameResolver = SimpleResolverComplexifier ( FakeResolver ( ) )
super ( ThreadedMemoryReactorClock , self ) . __init__ ( )
def listenUDP ( self , port , protocol , interface = ' ' , maxPacketSize = 8196 ) :