+
    Dfj6                         R 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
 R]P                   4      t ! R R]P                   4      tR# )z>
Test cases for L{twisted.protocols.haproxy.HAProxyProtocol}.
)Optional)mock)address)FactoryProtocol) StringTransportWithDisconnection)unittest)HAProxyWrappingFactoryc                   H   a  ] tR t^t o RtV 3R lR ltV 3R lR ltRtV tR# )StaticProtocolz.
Protocol stand-in that maintains test state.
c                   < V ^8  d   QhRR/#    returnN )format__classdict__s   "M/usr/lib/python3/dist-packages/twisted/protocols/haproxy/test/test_wrapper.py__annotate__StaticProtocol.__annotate__   s     " "$ "    c                >    R V n         R V n        RV n        RV n        R # )Nr   F)sourcedestinationdatadisconnected)selfs   &r   __init__StaticProtocol.__init__   s     267;	!r   c                $   < V ^8  d   QhRS[ RR/# )r   r   r   N)bytes)r   r   s   "r   r   r      s       4 r   c                    V P                   '       g   Q hV P                   P                  4       V n        V P                   P                  4       V n        V ;P
                  V,          un        R # )N)	transportgetPeerr   getHostr   r   )r   r   s   &&r   dataReceivedStaticProtocol.dataReceived   sG    ~~~~nn,,.>>113		T	r   )r   r   r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r%   __static_attributes____classdictcell__r   s   @r   r   r      s     " " r   r   c                      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	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# )HAProxyWrappingFactoryV1TestszQ
Test L{twisted.protocols.haproxy.HAProxyWrappingFactory} with v1 PROXY
headers.
c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   *HAProxyWrappingFactoryV1Tests.__annotate__)        . .t .r   c                4   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pW#n        VP                  V4       VP                  R4       V P                  VP                  4       R# ):
Test if invalid headers result in connectionLost events.
TCP	127.1.1.1  s   NOTPROXY anything can go here
Nr	   r   forProtocolr   buildProtocolr   IPv4Addressr   protocolmakeConnectionr%   assertFalse	connectedr   factoryprotor"   s   &   r   test_invalidHeaderDisconnects;HAProxyWrappingFactoryV1Tests.test_invalidHeaderDisconnects)   s|     ))<)<^)LM%%{D9
 56	"Y'?@,,-r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2   7   s     . .d .r   c                V   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pW#n        VP                  V4       VP                  R4       VP                  R4       V P                  VP                  4       R# )r5   r6   r7   r8   s   PROXY TCP4 1.1.1.1
s   2.2.2.2 8080
Nr9   rA   s   &   r   $test_invalidPartialHeaderDisconnectsBHAProxyWrappingFactoryV1Tests.test_invalidPartialHeaderDisconnects7   s     ))<)<^)LM%%{D9
 56	"Y'45./,,-r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2   F   s     F F$ Fr   c                   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        \        P                  P                  \        P                  P                  R7      pVP                  V4       V P                  VP                  4       \        P                  P                  4       V P                  VP                  4       \        P                  P                  4       R# )zk
Before any data is received the HAProxy protocol will return the same peer
and host as the IP connection.
r6   	127.0.0.1r8   )hostAddresspeerAddressN)r	   r   r:   r   r;   r   r<   r   r   sentinelhost_addresspeer_addressr>   assertEqualr$   r#   rA   s   &   r    test_preDataReceived_getPeerHost>HAProxyWrappingFactoryV1Tests.test_preDataReceived_getPeerHostF   s    
 ))<)<^)LM%%{D9
 52222
	 	Y'$--*D*DE$--*D*DEr   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2   W        
 
$ 
r   c                2   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  R4       V P                  VP                  4       P                  R4       V P                  VP                  4       P                  R4       V P                  VP                  P                  P                  4       P                  R4       V P                  VP                  P                  P                  4       P                  R4       V P                  VP!                  4       P                  R4       V P                  VP!                  4       P                  R4       V P                  VP                  P                  P!                  4       P                  R4       V P                  VP                  P                  P!                  4       P                  R4       R# )	@
Test if IPv4 headers result in the correct host and peer data.
r6   rL   r8   s&   PROXY TCP4 1.1.1.1 2.2.2.2 8080 8888
z1.1.1.1z2.2.2.2"  N)r	   r   r:   r   r;   r   r<   r   r>   r%   rR   r#   hostportwrappedProtocolr"   r$   rA   s   &   r   (test_validIPv4HeaderResolves_getPeerHostFHAProxyWrappingFactoryV1Tests.test_validIPv4HeaderResolves_getPeerHostW   s    ))<)<^)LM%%{D9
 56	Y'FG--y9--t4!!++335::	
 	!!++335::	
 	--y9--t4!!++335::	
 	!!++335::	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2   w   rV   r   c                2   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  R4       V P                  VP                  4       P                  R4       V P                  VP                  4       P                  R4       V P                  VP                  P                  P                  4       P                  R4       V P                  VP                  P                  P                  4       P                  R4       V P                  VP!                  4       P                  R4       V P                  VP!                  4       P                  R4       V P                  VP                  P                  P!                  4       P                  R4       V P                  VP                  P                  P!                  4       P                  R4       R# )@
Test if IPv6 headers result in the correct host and peer data.
r6   ::1r8   s   PROXY TCP6 ::1 ::2 8080 8888
z::2rY   N)r	   r   r:   r   r;   r   IPv6Addressr   r>   r%   rR   r#   rZ   r[   r\   r"   r$   rA   s   &   r   (test_validIPv6HeaderResolves_getPeerHostFHAProxyWrappingFactoryV1Tests.test_validIPv6HeaderResolves_getPeerHostw   s    ))<)<^)LM%%ud3
 56	Y'>?--u5--t4!!++335::	
 	!!++335::	
 	--u5--t4!!++335::	
 	!!++335::	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2           H H Hr   c                >   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  R4       V P                  VP                  P                  R4       R# )>
Test if non-header bytes are passed to the wrapped protocol.
r6   rb   r8   s,   PROXY TCP6 ::1 ::2 8080 8888
HTTP/1.1 / GET   HTTP/1.1 / GETNr	   r   r:   r   r;   r   rc   r   r>   r%   rR   r\   r   rA   s   &   r   'test_overflowBytesSentToWrappedProtocolEHAProxyWrappingFactoryV1Tests.test_overflowBytesSentToWrappedProtocol   s     ))<)<^)LM%%ud3
 56	Y'LM..335FGr   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2           H Ht Hr   c                `   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  R4       VP                  R4       V P                  VP                  P                  R4       R# );
Test if header streaming passes extra data appropriately.
r6   rb   r8      PROXY TCP6 ::1 ::2    8080 8888
HTTP/1.1 / GETrj   Nrk   rA   s   &   r   -test_overflowBytesSentToWrappedProtocolChunksKHAProxyWrappingFactoryV1Tests.test_overflowBytesSentToWrappedProtocolChunks   s     ))<)<^)LM%%ud3
 56	Y'129:..335FGr   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r2      s     P Pd Pr   c                   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  R4       VP                  R4       VP                  R4       V P                  VP                  P                  R4       R# )	zD
Test if wrapper writes all data to wrapped protocol after parsing.
r6   rb   r8   rr   rs   s   

s   HTTP/1.1 / GET

Nrk   rA   s   &   r   ,test_overflowBytesSentToWrappedProtocolAfterJHAProxyWrappingFactoryV1Tests.test_overflowBytesSentToWrappedProtocolAfter   s     ))<)<^)LM%%ud3
 56	Y'129:;'..335NOr   r   N)r'   r(   r)   r*   r+   rD   rH   rS   r]   rd   rl   rt   rx   r,   r-   r.   s   @r   r0   r0   #   sd     
. .. .F F"
 
@
 
@H HH HP Pr   r0   c                      a  ] tR t^t o RtRtRtRt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V 3R lR ltRtV tR# )HAProxyWrappingFactoryV2TestszQ
Test L{twisted.protocols.haproxy.HAProxyWrappingFactory} with v2 PROXY
headers.
s   

 
QUIT
!     "s4   

 
QUIT
!! $                              "s   

 
QUIT
!1 c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   *HAProxyWrappingFactoryV2Tests.__annotate__   r3   r   c                d   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pW#n        VP                  V4       VP                  RV P                  R,          ,           4       V P                  VP                  4       R# )r5   r6   rb   r8       :   NNN)r	   r   r:   r   r;   r   rc   r   r=   r>   r%   
IPV4HEADERr?   r@   rA   s   &   r   rD   ;HAProxyWrappingFactoryV2Tests.test_invalidHeaderDisconnects   s     ))<)<^)LM%%ud3
 56	"Y'7T__R%889,,-r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r}     rV   r   c                F   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  V P                  4       V P                  VP                  4       P                  R4       V P                  VP                  4       P                  R4       V P                  VP                  P                   P                  4       P                  R4       V P                  VP                  P                   P                  4       P                  R4       V P                  VP#                  4       P                  R4       V P                  VP#                  4       P                  R4       V P                  VP                  P                   P#                  4       P                  R4       V P                  VP                  P                   P#                  4       P                  R4       R# )rX   r6   rL   r8   rY   N)r	   r   r:   r   r;   r   r<   r   r>   r%   r   rR   r#   rZ   r[   r\   r"   r$   rA   s   &   r   r]   FHAProxyWrappingFactoryV2Tests.test_validIPv4HeaderResolves_getPeerHost  s    ))<)<^)LM%%{D9
 56	Y'4??+--{;--t4!!++335::	
 	!!++335::	
 	--{;--t4!!++335::	
 	!!++335::	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r}   (  rV   r   c                F   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  V P                  4       V P                  VP                  4       P                  R4       V P                  VP                  4       P                  R4       V P                  VP                  P                   P                  4       P                  R4       V P                  VP                  P                   P                  4       P                  R4       V P                  VP#                  4       P                  R4       V P                  VP#                  4       P                  R4       V P                  VP                  P                   P#                  4       P                  R4       V P                  VP                  P                   P#                  4       P                  R4       R# )ra   r6   rb   r8   z0:0:0:0:0:0:0:1rY   N)r	   r   r:   r   r;   r   r<   r   r>   r%   
IPV6HEADERrR   r#   rZ   r[   r\   r"   r$   rA   s   &   r   rd   FHAProxyWrappingFactoryV2Tests.test_validIPv6HeaderResolves_getPeerHost(  s    ))<)<^)LM%%ud3
 56	Y'4??+--/@A--t4!!++335::	
 	!!++335::	
 	--/@A--t4!!++335::	
 	!!++335::	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r}   H  s     
 
$ 
r   c                   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! R4      4      p\        4       pVP                  V4       VP                  V P                  4       V P                  VP                  4       P                  R4       V P                  VP                  P                  P                  4       P                  R4       V P                  VP!                  4       P                  R4       V P                  VP                  P                  P!                  4       P                  R4       R# )z@
Test if UNIX headers result in the correct host and peer data.
s   /home/test/sockets/server.socks   /home/tests/mysockets/sockN)r	   r   r:   r   r;   r   UNIXAddressr   r>   r%   
UNIXHEADERrR   r#   namer\   r"   r$   rA   s   &   r   (test_validUNIXHeaderResolves_getPeerHostFHAProxyWrappingFactoryV2Tests.test_validUNIXHeaderResolves_getPeerHostH  s     ))<)<^)LM%% AB
 56	Y'4??+--/LM!!++335::)	
 	--/LM!!++335::)	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r}   ^  rg   r   c                `   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  V P                  R,           4       V P                  VP                  P                  R4       R# )ri   r6   rb   r8   rj   Nr	   r   r:   r   r;   r   rc   r   r>   r%   r   rR   r\   r   rA   s   &   r   rl   EHAProxyWrappingFactoryV2Tests.test_overflowBytesSentToWrappedProtocol^  s     ))<)<^)LM%%ud3
 56	Y'4??->>?..335FGr   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r}   k  ro   r   c                   \        \        P                  ! \        4      4      pVP	                  \
        P                  ! RRR4      4      p\        4       pVP                  V4       VP                  V P                  R,          4       VP                  V P                  R,          R,           4       V P                  VP                  P                  R4       R# )rq   r6   rb   r8   :N   N:r   NNrj   Nr   rA   s   &   r   rt   KHAProxyWrappingFactoryV2Tests.test_overflowBytesSentToWrappedProtocolChunksk  s     ))<)<^)LM%%ud3
 56	Y'4??3/04??3/2CCD..335FGr   r   Nsl   /home/tests/mysockets/sock                                                                                  )r'   r(   r)   r*   r+   r   r   
_SOCK_PATHr   rD   r]   rd   r   rl   rt   r,   r-   r.   s   @r   r{   r{      s     
	  	 "	E  	 	  . .
 
@
 
@
 
,H HH Hr   r{   N)r+   typingr   r   r   twisted.internetr   twisted.internet.protocolr   r   twisted.internet.testingr   twisted.trial_wrapperr	   r   TestCaser0   r{   r   r   r   <module>r      sZ      $ 7 E " -X $\PH$5$5 \P~uHH$5$5 uHr   