U
    
W[v  ã                   @   s–   d dd… Z ddlmZ ddlmZ ddlmZ G dd	„ d	ƒZG d
d„ dejƒZ	G dd„ dej
ƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )z$Revision: 1.3 $é   éþÿÿÿé    )Úunittest)Úhtbé   )ÚDummyConsumerc                   @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú
DummyClockr   c                 C   s
   || _ d S ©N©Útime)ÚselfZwhen© r   ú7/usr/lib/python3/dist-packages/twisted/test/test_htb.pyÚset   s    zDummyClock.setc                 C   s   | j S r	   r
   ©r   r   r   r   Ú__call__   s    zDummyClock.__call__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   	   s   r   c                   @   s   e Zd ZdZdZdS )Ú
SomeBucketéd   é   N)r   r   r   ZmaxburstÚrater   r   r   r   r      s   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestBucketBasec                 C   s   t j| _tƒ | _| jt _d S r	   )r   r   Ú_realTimeFuncr   Úclockr   r   r   r   ÚsetUp   s    zTestBucketBase.setUpc                 C   s   | j t_d S r	   )r   r   r   r   r   r   r   ÚtearDown   s    zTestBucketBase.tearDownN)r   r   r   r   r   r   r   r   r   r      s   r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚBucketTestsc                 C   s    t ƒ }| d¡}|  d|¡ dS )z1
        Testing the size of the bucket.
        éè  r   N)r   ÚaddÚassertEqual©r   ÚbÚfitr   r   r   ÚtestBucketSize%   s    
zBucketTests.testBucketSizec                 C   s6   t ƒ }| d¡}| j d¡ | d¡}|  d|¡ dS )z2
        Testing the bucket's drain rate.
        r   é
   é   N)r   r    r   r   r!   r"   r   r   r   ÚtestBucketDrain.   s
    

zBucketTests.testBucketDrainc                 C   sP   t ƒ }| d¡ | j d¡ | ¡ }|  |¡ | j d¡ | ¡ }|  |¡ dS )z\
        L{htb.Bucket.drip} returns C{True} if the bucket is empty after that drip.
        r'   é	   r&   N)r   r    r   r   ZdripZassertFalseZ
assertTrue)r   r#   Úemptyr   r   r   Útest_bucketEmpty9   s    

zBucketTests.test_bucketEmptyN)r   r   r   r%   r(   r+   r   r   r   r   r   $   s   	r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚBucketNestingTestsc                 C   s.   t  | ¡ tƒ | _t| jƒ| _t| jƒ| _d S r	   )r   r   r   ÚparentÚchild1Úchild2r   r   r   r   r   I   s    
zBucketNestingTests.setUpc                 C   s(   | j  d¡ | j d¡}|  d|¡ d S )NéZ   r&   )r.   r    r/   r!   ©r   r$   r   r   r   ÚtestBucketParentSizeP   s    z'BucketNestingTests.testBucketParentSizec                 C   s<   d| j _| j d¡ | j d¡ | j d¡}|  d|¡ d S )Nr   r   r&   )r-   r   r.   r    r   r   r!   r1   r   r   r   ÚtestBucketParentRateW   s
    z'BucketNestingTests.testBucketParentRateN)r   r   r   r   r2   r3   r   r   r   r   r,   H   s   r,   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚConsumerShaperTestsc                 C   s0   t  | ¡ tƒ | _tƒ | _t | j| j¡| _d S r	   )	r   r   r   Ú
underlyingr   Úbucketr   ZShapedConsumerÚshapedr   r   r   r   r   h   s    
zConsumerShaperTests.setUpc                 C   sT   d}| j  d¡ | j d¡ | j |¡ | j ¡  |  t| j	 
¡ ƒ|| j j ¡ d S )Nr&   r   Zdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r6   r    r7   Úwriter   r   ZresumeProducingr!   Úlenr5   Úgetvaluer   )r   Zdelta_tr   r   r   ÚtestRateo   s    

ÿzConsumerShaperTests.testRatec                 C   s.   |   | jjd¡ | j ¡  |   | jjd¡ d S )Nr   r   )r!   r6   Z	_refcountr7   ZstopProducingr   r   r   r   ÚtestBucketRefs{   s    
z"ConsumerShaperTests.testBucketRefsN)r   r   r   r   r;   r<   r   r   r   r   r4   g   s   r4   N)Ú__version__Ztwisted.trialr   Ztwisted.protocolsr   Ztest_pcpr   r   ZBucketr   ZTestCaser   r   r,   r4   r   r   r   r   Ú<module>   s   
$