
    Yf)                        d dl mZ d dlmZ d dlmZ d dlmZ  G d dej                  Z	 G d dej
                  Zd	S )
    )annotations)protocol)rawudp)unittestc                      e Zd ZddZdd
ZdS )
MyProtocol	expectinglist[tuple[bytes, bytes, int]]returnNonec                .    t          |          | _        d S )N)listr	   )selfr	   s     O/var/www/html/env/lib/python3.11/site-packages/twisted/pair/test/test_rawudp.py__init__zMyProtocol.__init__   s    i    databytespeertuple[bytes, int]c                ,   |\  }}| j         s
J d            | j                             d          \  }}}||k    sJ d                    ||                      ||k    sJ d                    ||                      ||k    sJ d||||fz              d S )Nz(Got a packet when not expecting anymore.r   zExpected data {!r}, got {!r}zExpected host {!r}, got {!r}z&Expected port %d=0x%04x, got %d=0x%04x)r	   popformat)r   r   r   hostport
expectData
expectHost
expectPorts           r   datagramReceivedzMyProtocol.datagramReceived   s    t~IIIII~-1^-?-?-B-B*
J
T!!!#A#H#H$
 $
!!! T!!!#A#H#H$
 $
!!! T!!!#K	O
 $
!!!!!r   N)r	   r
   r   r   )r   r   r   r   r   r   )__name__
__module____qualname__r   r    r   r   r   r      s<        ) ) ) )
 
 
 
 
 
r   r   c                  V    e Zd ZddZddZddZddZddZddZdd	Z	dd
Z
ddZdS )RawUDPTestsr   r   c                    t          j                    }t          dg          }|                    d|           |                    dddddddddddddd           |j        rJ d|j        z              d S 	N   foobar   testHostiC       C ޭfoobarr      dummyr*   partialdestsourcer   versionihltostot_lenfragment_idfragment_offsetdont_fragmentmore_fragmentsttl5Should not expect any more packets, but still want %rr   RawUDPProtocolr   addProtor   r	   r   protop1s      r   testPacketParsingzRawUDPTests.testPacketParsing$   s    %''0
 

 	vr"""
  $"#% 	 	
 	
 	
* < 	
 	
CblR	
 	
 	
 	
r   c                8   t          j                    }t          ddg          }|                    d|           |                    dddddddddddddd           |                    d	ddd
dddddddddd           |j        rJ d|j        z              d S )Nr(      quux	   otherHosti3  r+   r,   r   r-   r*   r.      3 ޭquuxrF   r;   r<   r?   s      r   testMultiplePacketszRawUDPTests.testMultiplePacketsF   s
   %''0/
 
 	vr"""
  $"#% 	 	
 	
 	
( 	
  $"#% 	 	
 	
 	
* < 	
 	
CblR	
 	
 	
 	
r   c                n   t          j                    }t          dg          }t          dg          }|                    d|           |                    d|           |                    dddddddddddddd           |j        rJ d|j        z              |j        rJ d|j        z              d S r'   r<   r   r@   rA   p2s       r   testMultipleSameProtosz"RawUDPTests.testMultipleSameProtos|   s   %''0
 
 0
 
 	vr"""vr"""
  $"#% 	 	
 	
 	
* < 	
 	
CblR	
 	
 < 	
 	
CblR	
 	
 	
 	
r   c                    t          j                    }t          g           }|                    d|           |                    dddddddddddddd           d S )N   r,   r   r-   r*   r.   )r   r=   r   r>   r   r?   s      r   testWrongProtoNotSeenz!RawUDPTests.testWrongProtoNotSeen   s    %''^^q"
  $"#% 	 	
 	
 	
 	
 	
r   c                D   t          j                    }t          ddg          }|                    d|           t          ddg          }|                    d|           |                    ddd	d
d	d	d	d	d	d	d	d	d	d	           |                    ddd	dd	d	d	d	d	d	d	d	d	d	           |                    ddd	d
d	d	d	d	d	d	d	d	d	d	           |                    ddd	dd	d	d	d	d	d	d	d	d	d	           |j        rJ d|j        z              |j        rJ d|j        z              d S )Nr(   rD   r+   )rE   rF   i  )r)   r*   i  iP  s   P ޭquuxr   r-   rF   r.   r,   r*   rG   s   P ޭfoobarr;   r<   rJ   s       r   testDemuxingzRawUDPTests.testDemuxing   s   %''0/
 
 	vr"""/0
 
 	vr"""
  $"#% 	 	
 	
 	
( 	
  $"#% 	 	
 	
 	
( 	
  $"#% 	 	
 	
 	
( 	
  $"#% 	 	
 	
 	
* < 	
 	
CblR	
 	
 < 	
 	
CblR	
 	
 	
 	
r   c                    t          j                    }	 |                    dd           t          d          # t          $ r}|j        dk    rn Y d}~dS d}~ww xY w)z2Adding a wrong level protocol raises an exception.*   	silliness2addProto must raise an exception for bad protocols)z6Added protocol must be an instance of DatagramProtocolN)r   r=   r>   AssertionError	TypeErrorargsr   es     r   testAddingBadProtos_WrongLevelz*RawUDPTests.testAddingBadProtos_WrongLevel-  s    !##	WJJr;''' !!UVVV  	 	 	vTTT 	s   : 
AAAc                    t          j                    }	 |                    dt          j                               t          d          # t          $ r}|j        dk    rn Y d}~dS d}~ww xY w)z=Adding a protocol with a negative number raises an exception.rU   )z'Added protocol must be positive or zeroNr   r=   r>   r   DatagramProtocolrV   rW   rX   rY   s     r   testAddingBadProtos_TooSmallz(RawUDPTests.testAddingBadProtos_TooSmall:  s    !##	WJJr8466777 !!UVVV  	 	 	vEEE 	   'A 
A-A((A-c                    t          j                    }	 |                    dt          j                               t          d          # t          $ r}|j        dk    rn Y d}~dS d}~ww xY w)<Adding a protocol with a number >=2**16 raises an exception.i   rU   z"Added protocol must fit in 16 bitsNr^   rY   s     r   testAddingBadProtos_TooBigz&RawUDPTests.testAddingBadProtos_TooBigG  s    !##	WJJuh799::: !!UVVV  	 	 	v@@@ 	ra   c                    t          j                    }	 |                    dt          j                               t          d          # t          $ r}|j        dk    rn Y d}~dS d}~ww xY w)rc   i  rU   rd   Nr^   rY   s     r   testAddingBadProtos_TooBig2z'RawUDPTests.testAddingBadProtos_TooBig2T  s    !##	WJJy(";"="=>>> !!UVVV  	 	 	v@@@ 	ra   N)r   r   )r    r!   r"   rB   rH   rL   rO   rQ   r[   r`   re   rg   r#   r   r   r%   r%   #   s         
  
  
  
D4
 4
 4
 4
l+
 +
 +
 +
Z
 
 
 
4h
 h
 h
 h
TW W W WW W W WW W W WW W W W W Wr   r%   N)
__future__r   twisted.internetr   twisted.pairr   twisted.trialr   r_   r   TestCaser%   r#   r   r   <module>rm      s    # " " " " " % % % % % %       # " " " " "
 
 
 
 
* 
 
 
.|W |W |W |W |W(# |W |W |W |W |Wr   