+
    Dfj                     l    R t ^ RIHt ^ RIHt ^RIHt ^RIHtH	t	H
t
  ! R R]P                  4      tR# )z7
Test cases for L{twisted.protocols.haproxy.V1Parser}.
)address)unittest)	_v1parser)InvalidNetworkProtocolInvalidProxyHeaderMissingAddressDatac                      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V 3R lR ltV 3R lR ltRtV tR# )V1ParserTestsz7
Test L{twisted.protocols.haproxy.V1Parser} behaviour.
c                   < V ^8  d   QhRR/#    returnN )format__classdict__s   "N/usr/lib/python3/dist-packages/twisted/protocols/haproxy/test/test_v1parser.py__annotate__V1ParserTests.__annotate__   s     
 
d 
    c                d    V P                  \        \        P                  P                  R4       R# )zD
Test that an exception is raised when the PROXY header is missing.
s	   NOTPROXY N)assertRaisesr   r   V1Parserparseselfs   &r   test_missingPROXYHeaderValue*V1ParserTests.test_missingPROXYHeaderValue   s'     	$$	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r      s     
 
T 
r   c                d    V P                  \        \        P                  P                  R4       R# )zH
Test that an exception is raised when the proto is not TCP or UNKNOWN.
s   PROXY WUTPROTO N)r   r   r   r   r   r   s   &r   test_invalidNetworkProtocol)V1ParserTests.test_invalidNetworkProtocol   s'     	"$$	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   '   s     
 
 
r   c                d    V P                  \        \        P                  P                  R4       R# )zE
Test that an exception is raised when the proto has no source data.
s   PROXY TCP4 Nr   r   r   r   r   r   s   &r   test_missingSourceData$V1ParserTests.test_missingSourceData'   s'     	$$	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   1   s     
 
d 
r   c                d    V P                  \        \        P                  P                  R4       R# )zE
Test that an exception is raised when the proto has no destination.
s   PROXY TCP4 127.0.0.1 8080 8888Nr#   r   s   &r   test_missingDestData"V1ParserTests.test_missingDestData1   s'     	$$-	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   ;   s     6 6 6r   c                x   \         P                  P                  R4      pV P                  VP                  \
        P                  4       \        VP                  \
        P                  4      '       g   Q h\        VP                  \
        P                  4      '       g   Q hV P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       R# )z5
Test that parsing is successful for a PROXY header.
s(   PROXY TCP4 127.0.0.1 127.0.0.1 8080 8888	127.0.0.1  "  N)r   r   r   assertIsInstancesourcer   IPv4Address
isinstancedestinationassertEqualhostportr   infos   & r   test_fullParsingSuccess%V1ParserTests.test_fullParsingSuccess;   s     !!''7
 	dkk7+>+>?$++w':':;;;;$**G,?,?@@@@));7))40))..<))..5r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   J   s     6 6d 6r   c                x   \         P                  P                  R4      pV P                  VP                  \
        P                  4       \        VP                  \
        P                  4      '       g   Q h\        VP                  \
        P                  4      '       g   Q hV P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       R# )z;
Test that parsing is successful for an IPv6 PROXY header.
s   PROXY TCP6 ::1 ::1 8080 8888z::1r-   r.   N)r   r   r   r/   r0   r   IPv6Addressr2   r3   r4   r5   r6   r7   s   & r   test_fullParsingSuccess_IPv6*V1ParserTests.test_fullParsingSuccess_IPv6J   s     !!''+
 	dkk7+>+>?$++w':':;;;;$**G,?,?@@@@))51))40))..6))..5r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   Y   s     , , ,r   c                    \         P                  P                  R4      pV P                  VP                  4       V P                  VP
                  4       R# )z=
Test that parsing is successful for a UNKNOWN PROXY header.
s$   PROXY UNKNOWN anything could go hereN)r   r   r   assertIsNoner0   r3   r7   s   & r   test_fullParsingSuccess_UNKNOWN-V1ParserTests.test_fullParsingSuccess_UNKNOWNY   sE     !!''3
 	$++&$**+r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   c   s     6 6$ 6r   c                   \         P                  ! 4       pVP                  R4      w  r#V P                  V4       V P                  V4       VP                  R4      w  r#V P                  V4       V P                  V4       VP                  R4      w  r#V P                  V4       Vf   Q hVf   Q hV P	                  VP
                  \        P                  4       \        VP
                  \        P                  4      '       g   Q h\        VP                  \        P                  4      '       g   Q hV P                  VP
                  P                  R4       V P                  VP
                  P                  R4       V P                  VP                  P                  R4       V P                  VP                  P                  R4       R# )z5
Test that parsing happens when fed a complete line.
   PROXY TCP4 127.0.0.1 127.0.0.1 	   8080 8888s   
Nr,   r-   r.   )r   r   feedassertFalser/   r0   r   r1   r2   r3   r4   r5   r6   r   parserr8   	remainings   &   r   test_feedParsingV1ParserTests.test_feedParsingc   sc    ##% ++&HI# ++l3# ++g.#$$$dkk7+>+>?$++w':':;;;;$**G,?,?@@@@));7))40))..<))..5r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r   z   s     
 
 
r   c                F   \         P                  ! 4       pVP                  R4      w  r#V P                  V4       V P                  V4       VP                  R4      w  r#V P                  V4       V P                  V4       V P	                  \
        VP                  R4       R# )z>
Test that parsing fails if no newline is found in 108 bytes.
rG   rH   Nsd                                                                                                       )r   r   rI   rJ   r   r   rK   s   &   r   test_feedParsingTooLong%V1ParserTests.test_feedParsingTooLongz   s     ##% ++&HI# ++l3#KK	
r   c                   < V ^8  d   QhRR/# r   r   )r   r   s   "r   r   r      s     
( 
($ 
(r   c                    \         P                  ! 4       pVP                  R4      w  r#V P                  V4       V P	                  VR4       V P                  VP                  4       R# )z8
Test that parsing leaves overflow bytes in the buffer.
s:   PROXY TCP4 127.0.0.1 127.0.0.1 8080 8888
HTTP/1.1 GET /
s   HTTP/1.1 GET /
N)r   r   rI   
assertTruer4   rJ   bufferrK   s   &   r   test_feedParsingOverflow&V1ParserTests.test_feedParsingOverflow   sV     ##% ++M
 	$9:'r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   r$   r(   r9   r>   rC   rN   rR   rX   __static_attributes____classdictcell__)r   s   @r   r	   r	      sn     
 

 

 

 
6 66 6, ,6 6.
 
"
( 
(r   r	   N)r^   twisted.internetr   twisted.trialr    r   _exceptionsr   r   r   TestCaser	   r   r   r   <module>rf      s/    % "  X XG(H%% G(r   