ó
    Ö›‘h×  ã                   óŽ   • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJr  SSKJr  SS	KJr  SS
KJr   " S S\5      rg)z!
Tests for L{twisted.names.tap}.
é    )ÚThreadedResolver)ÚResolver)ÚPORT)ÚResolverChain)ÚSecondaryAuthorityService)ÚOptionsÚ_buildResolvers)Úplatform)Ú
UsageError)ÚSynchronousTestCasec                   óJ   • \ rS rSrSrS
S jrS
S jrS
S jrS
S jrS
S jr	S	r
g)ÚOptionsTestsé   zZ
Tests for L{Options}, defining how command line arguments for the DNS server
are parsed.
Nc                 ó0  • [        5       nU R                  [        UR                  SS/5        U R                  [        UR                  SS/5        U R                  [        UR                  SS/5        U R                  [        UR                  SS/5        g)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     Ú_C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/names/test/test_tap.pyÚtest_malformedSecondaryÚ$OptionsTests.test_malformedSecondary   sŠ   € ô “)ˆØ×Ñœ* g×&:Ñ&:¸]ÈBÐ<OÔPØ×Ñœ* g×&:Ñ&:¸]ÈIÐ<VÔWØ×ÑÜ˜×,Ñ,¨}¸oÐ.Nô	
ð 	×ÑÜØ× Ñ ØÐ7Ð8õ	
ó    c                 óŠ   • [        5       nUR                  SS/5        U R                  S[        4S/4/UR                  5        g)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                 ó~   • [        5       nUR                  SS/5        U R                  SS/4/UR                  5        g)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.com)r   éé  r   N)r   r   r   r    r   s     r   Útest_secondaryExplicitPortÚ'OptionsTests.test_secondaryExplicitPort5   s@   € ô
 “)ˆØ×Ñ˜mÐ-GÐHÔIØ×ÑÐ,¨}¨oÐ>Ð?À×ATÑATÕUr   c                 ó0  • [        5       nUR                  / SQ5        U R                  [        UR                  5      S5        UR                  S   nU R                  UR                  S   [        5        U R                  UR                  S5        U R                  UR                  S5        UR                  S   nU R                  UR                  S   [        5        U R                  UR                  S5        U R                  UR                  S5        g	)
z„
After parsing I{--secondary} options, L{Options} constructs a
L{SecondaryAuthorityService} instance for each configured secondary.
)r   r$   r   z1.2.3.5:5354/example.comé   r   r   r%   é   z1.2.3.5iê  N)	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                 ó6  • [        5       nUR                  / SQ5        [        U5      u  p#U HZ  n[        U[        5      (       d  M  UR
                  S   n[        U[        5      (       d  M@  UR                  R                  5         M\     [        R                  " 5       S:w  a]  SSKJn  UR                   HG  nU R                  UR                  R                   ["        R$                  5        UR                  5         MI     U R'                  US   [        5        g)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
)z--hosts-filez	hosts.txtz--recursiveéÿÿÿÿÚposixr   )ÚreactorN)r   r   r	   Ú
isinstancer   Ú	resolversr   Ú
_parseCallÚcancelr
   ÚgetTypeÚtwisted.internetr6   Ú_newTimedCallsr   ÚfuncÚ__func__r   Ú_cleanupr-   )r   r   ÚcaÚclÚxÚrecurserr6   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   © )ÚreturnN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r!   r&   r1   rE   Ú__static_attributes__rG   r   r   r   r      s"   † ñô

ô$VôVô0÷0 5r   r   N)rM   Ú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   rG   r   r   Ú<module>rX      s6   ðñõ 3Ý )Ý "Ý /Ý =ß 6Ý +Ý +Ý 6ôc5Ð&õ c5r   