Your IP : 216.73.216.213
��Yf� � @ s� d d l Z d d l Z d d l Z d d l Z d d l m Z y d d l Z Wn e k
rj d Z Yn Xd Z Gd d � d � Z Gd d � d e j
� Z
e d k r� e j � d S) � N)�support�
c @ s@ e Z d Z d d � Z d d � Z d d � Z d d � Z d S)
�Timerc C s% t j � | _ d | _ d | _ d S)Nr )� threadingZ Condition�_cond�_time�_stop)�self� r
�4/opt/alt/python35/lib64/python3.5/test/test_sched.py�__init__ s zTimer.__init__c C s | j � | j SWd QRXd S)N)r r )r r
r
r �time s
z
Timer.timec C sZ | j �J | | j 7} x, | j | k rE | j | _ | j j � q W| | _ Wd QRXd S)N)r r r �wait)r �tr
r
r �sleep s
zTimer.sleepc
C s1 | j �! | j | 7_ | j j � Wd QRXd S)N)r r Z
notify_all)r r r
r
r �advance# s
z
Timer.advanceN)�__name__�
__module__�__qualname__r r
r r r
r
r
r r s
r c @ s� e Z d Z d d � Z d d � Z e j e d � d d � � Z d d � Z d
d � Z
e j e d � d d
� � Z d d � Z d d � Z
d d � Z d d � Z d S)�TestCasec s� g � � f d d � } t j t j t j � } x8 d d d d d g D]! } | j | d | | f � } qF W| j � | j � d d d d d g � d S) Nc s
� j | � S)N)�append)�x)�lr
r �<lambda>. s z%TestCase.test_enter.<locals>.<lambda>g �?g�������?g333333�?g�������?g�������?� )�sched� schedulerr
r �enter�run�assertEqual)r �funr r �zr
)r r �
test_enter, s
zTestCase.test_enterc s� g � � f d d � } t j t j t j � } x8 d d d d d g D]! } | j | d | | f � } qF W| j � | j � d d d d d g � d S) Nc s
� j | � S)N)r )r )r r
r r 7 s z(TestCase.test_enterabs.<locals>.<lambda>g�������?g{�G�z�?g���Q��?g{�G�z�?g{�G�z�?r )r r r
r �enterabsr r )r r r r r! r
)r r �
test_enterabs5 s
zTestCase.test_enterabsz!Threading required for this test.c C s# t j � } | j } t � } t j | j | j � } | j d d | d � | j d d | d
� t j
d | j � } | j � | j
d � | j | j d t � d � | j | j � � x6 d d d g D]% } | j | d d | | f � } q� W| j
d � | j | j d t � d � | j | j d t � d � | j | j � � | j
d � | j | j d t � d � | j | j � � | j
d � | j | j d t � d � | j | j � � | j
d � | j d t � | j | j � � | j | j � � | j | j � d � d S)Nr � �target�timeout� � � i� )r )r% )�queue�Queue�putr r r r
r r r �Threadr �startr r �get�TIMEOUT�
assertTrue�empty�join�assertFalse�is_alive)r �qr �timerr r r r! r
r
r �test_enter_concurrent>