+
    üÐj×  ã                   ó�   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
 ^ RIHtHt ^ RIHt ^ RIHt ^ R	IHt  ! R
 R]4      tR# )z!
Tests for L{twisted.names.tap}.
)ÚThreadedResolver)ÚResolver)ÚPORT)ÚResolverChain)ÚSecondaryAuthorityService)ÚOptionsÚ_buildResolvers)Úplatform)Ú
UsageError)ÚSynchronousTestCasec                   ó~   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	Rt
V tR# )ÚOptionsTestszZ
Tests for L{Options}, defining how command line arguments for the DNS server
are parsed.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€Ú=/usr/lib/python3/dist-packages/twisted/names/test/test_tap.pyÚ__annotate__ÚOptionsTests.__annotate__   s   ø€ ÷ 
ñ 
¨ñ 
ó    c                ó2  € \        4       pV P                  \        VP                  RR.4       V P                  \        VP                  RR.4       V P                  \        VP                  RR.4       V P                  \        VP                  RR.4       R# )z¯
If the value supplied for an I{--secondary} option does not provide a
server IP address, optional port number, and domain name,
L{Options.parseOptions} raises L{UsageError}.
ú--secondaryÚ ú1.2.3.4z1.2.3.4:helloz1.2.3.4:hello/example.comN)r   ÚassertRaisesr
   ÚparseOptions©ÚselfÚoptionss   & r   Útest_malformedSecondaryÚ$OptionsTests.test_malformedSecondary   sŠ   € ô “)ˆØ×Ñœ* g×&:Ñ&:¸]ÈBÐ<OÔPØ×Ñœ* g×&:Ñ&:¸]ÈIÐ<VÔWØ×ÑÜ˜×,Ñ,¨}¸oÐ.Nô	
ð 	×ÑÜØ× Ñ ØÐ7Ð8ö	
r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   +   s   ø€ ÷ Vñ V ñ Vr   c                óŒ   € \        4       pVP                  RR.4       V P                  R\        3R.3.VP                  4       R# )z§
An argument of the form C{"ip/domain"} is parsed by L{Options} for the
I{--secondary} option and added to its list of secondaries, using the
default DNS port number.
r   z1.2.3.4/example.comr   úexample.comN)r   r   ÚassertEqualr   Úsecondariesr   s   & r   Útest_secondaryÚOptionsTests.test_secondary+   sD   € ô “)ˆØ×Ñ˜mÐ-BÐCÔDØ×Ñ˜I¤tÐ,¨}¨oÐ>Ð?À×ATÑATÖUr   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   5   s   ø€ ÷ Vñ V¨Dñ Vr   c                ó€   € \        4       pVP                  RR.4       V P                  RR.3.VP                  4       R# )z~
An argument of the form C{"ip:port/domain"} can be used to specify an
alternate port number for which to act as a secondary.
r   ú1.2.3.4:5353/example.comr&   N)r   éé  )r   r   r'   r(   r   s   & r   Útest_secondaryExplicitPortÚ'OptionsTests.test_secondaryExplicitPort5   s@   € ô
 “)ˆØ×Ñ˜mÐ-GÐHÔIØ×ÑÐ,¨}¨oÐ>Ð?À×ATÑATÖUr   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   >   s   ø€ ÷ 0ñ 0°ñ 0r   c                óR  € \        4       pVP                  . RO4       V P                  \        VP                  4      ^4       VP                  ^ ,          pV P                  VP                  ^ ,          \        4       V P                  VP                  R4       V P                  VP                  R4       VP                  ^,          pV P                  VP                  ^,          \        4       V P                  VP                  R4       V P                  VP                  R4       R# )z„
After parsing I{--secondary} options, L{Options} constructs a
L{SecondaryAuthorityService} instance for each configured secondary.
r   r.   z1.2.3.5iê  N)r   r-   r   z1.2.3.5:5354/example.com)	r   r   r'   ÚlenÚsvcsÚassertIsInstancer   ÚprimaryÚ_port)r    r!   Ú	secondarys   &  r   Útest_secondaryAuthorityServicesÚ,OptionsTests.test_secondaryAuthorityServices>   sÙ   € ô
 “)ˆØ×Ñòô	
ð 	×Ñœ˜WŸ\™\Ó*¨AÔ.Ø—L‘L •Oˆ	Ø×Ñ˜gŸl™l¨1�oÔ/HÔIØ×Ñ˜×*Ñ*¨IÔ6Ø×Ñ˜Ÿ™¨$Ô/Ø—L‘L •Oˆ	Ø×Ñ˜gŸl™l¨1�oÔ/HÔIØ×Ñ˜×*Ñ*¨IÔ6Ø×Ñ˜Ÿ™¨$Ö/r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   V   s   ø€ ÷  5ñ  5¨Tñ  5r   c                óN  € \        4       pVP                  . RO4       \        V4      w  r#V F`  p\        V\        4      '       g   K  VP
                  R,          p\        V\        4      '       g   KF  VP                  P                  4        Kb  	  \        P                  ! 4       R8w  d^   ^ RIHp VP                   FG  pV P                  VP                  P                   \"        P$                  4       VP                  4        KI  	  V P'                  VR,          \        4       R# )z¦
Recursive DNS lookups, if enabled, should be a last-resort option.
Any other lookup method (cache, local lookup, etc.) should take
precedence over recursive lookups
Úposix)ÚreactorN)z--hosts-filez	hosts.txtz--recursiveéÿÿÿÿ)r   r   r   Ú
isinstancer   Ú	resolversr   Ú
_parseCallÚcancelr	   ÚgetTypeÚtwisted.internetr>   Ú_newTimedCallsr'   ÚfuncÚ__func__r   Ú_cleanupr5   )r    r!   ÚcaÚclÚxÚrecurserr>   s   &      r   Útest_recursiveConfigurationÚ(OptionsTests.test_recursiveConfigurationV   sÑ   € ô “)ˆØ×ÑÒIÔJÜ  Ó)‰ˆó ˆAÜ˜!œ]×+Ô+ØŸ;™; r�?�Ü˜h¬×1Ô1Ø×'Ñ'×.Ñ.Ö0ñ	 ô ×ÒÓ Ô(õ 1à×+Ô+�Ø× Ñ  §¡§¡Ô2B×2KÑ2KÔLØ—‘–
ñ ,ð 	×Ñ˜b �f¤mÖ4r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r"   r)   r/   r9   rN   Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      s@   ø‡ € ñ÷

ð 
÷$Vð V÷Vð V÷0ð 0÷0 5ö  5r   r   N)rT   Útwisted.internet.baser   Útwisted.names.clientr   Útwisted.names.dnsr   Útwisted.names.resolver   Útwisted.names.secondaryr   Útwisted.names.tapr   r   Útwisted.python.runtimer	   Útwisted.python.usager
   Útwisted.trial.unittestr   r   r   r   r   Ú<module>r`      s6   ðñõ 3Ý )Ý "Ý /Ý =ß 6Ý +Ý +Ý 6ôc5Ð&ö c5r   