ó
úR‹_c           @` sE  d  d l  m Z m Z m Z d  d l Z d  d l m Z d  d l Z d  d l m Z d  d l m Z m	 Z	 d  d l m
 Z d  d l m Z d  d l m Z d  d	 l m Z d
 e j f d „  ƒ  YZ e j e e d ƒ d ƒ d e f d „  ƒ  Yƒ Z e j e e d ƒ d ƒ d e j f d „  ƒ  Yƒ Z e d k rAe j ƒ  n  d S(   i    (   t   print_functiont   absolute_importt   divisionN(   t   pipe(   t   os(   t   Greenlett   joinall(   t   testing(   t   mock(   t   six(   t   skipOnLibuvOnPyPyOnWint	   TestOS_tpc           B` s‹   e  Z e j Z d  „  Z e e j ƒ Z	 e e j
 ƒ Z e d ƒ d „  ƒ Z e j d d k  rj d „  Z n  e j d  d	 k r‰ d „  Z n  RS(
   c         C` s   t  ƒ  S(   N(   R   (   t   self(    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyR      s    s   Sometimes times outc         ` sâ   ˆ j  ƒ  \ ‰ ‰ d ‰ d d } | | ƒ ‰  d g ‰ d g ‰ ‡  ‡ ‡ ‡ ‡ f d †  } ‡ ‡ ‡ ‡ f d †  } t | ƒ } | j ƒ  t | ƒ } | j d ƒ t | | g ƒ ˆ j ˆ d ˆ ƒ ˆ j ˆ d ˆ d ƒ d  S(   Ni@B t   xi   i    c       	   ` sR   xK ˆ d ˆ k rM ˆ ˆ d }  ˆ d c ˆ j  ˆ ˆ  t |  d ƒ  ƒ 7<q Wd  S(   Ni    i   (   t   writet   min(   t	   bytesleft(   t   buft   byteswrittent   nbytesR   t   w(    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   produce&   s    c       	   ` sT   xM ˆ  d ˆ k rO ˆ ˆ  d }  ˆ  d c t  ˆ j ˆ t |  d ƒ ƒ ƒ 7<q Wd  S(   Ni    i   (   t   lent   readR   (   R   (   t	   bytesreadR   t   rR   (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   consume+   s    i   (   R   R   t   startt   start_laterR   t   assertEqual(   R   t   buffer_classt   blockR   R   t   producert   consumer(    (   R   R   R   R   R   R   R   sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   _test_if_pipe_blocks   s    
		
i    i   c         C` s   |  j  t j j ƒ d  S(   N(   R"   R	   t   builtinst   buffer(   R   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_if_pipe_blocks_buffer=   s    i   i   c         C` s   |  j  t j j ƒ d  S(   N(   R"   R	   R#   t
   memoryview(   R   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_if_pipe_blocks_memoryviewB   s    (   i   i   (   t   __name__t
   __module__t	   greentestt   LARGE_TIMEOUTt   __timeout__R   t   staticmethodR   t   tp_readR   t   tp_writeR   R
   R"   t   syst   version_infoR%   R'   (    (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyR      s   		 t   make_nonblockings   Only on POSIXt	   TestOS_nbc           B` sã   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 j
 d ƒ e	 j
 d ƒ d	 „  ƒ ƒ Z e	 j
 d ƒ e	 j
 d ƒ d
 „  ƒ ƒ Z e	 j
 d ƒ e	 j
 d ƒ d „  ƒ ƒ Z e	 j
 d ƒ e	 j
 d ƒ d „  ƒ ƒ Z RS(   c         C` s   t  j | | ƒ S(   N(   R   t   nb_read(   R   t   fdt   count(    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyR   J   s    c         C` s   t  j | | ƒ S(   N(   R   t   nb_write(   R   R5   R6   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyR   M   s    c         C` s?   t  t |  ƒ j ƒ  \ } } t j | ƒ t j | ƒ | | f S(   N(   t   superR3   R   R   R2   (   R   R   R   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyR   P   s    c         C` s%   d d  l  } t ƒ  } | j | _  | S(   Ni    (   t   errnot   OSErrort   EINTR(   R   R9   t   ignored_oserror(    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   _make_ignored_oserrorV   s    	c         C` sI   | j  ƒ  | j } | j j } | j  | | ƒ | j } | j j  ƒ  d  S(   N(   t   assert_called_once_witht   return_valuet   loopt   iot   close(   R   t   mock_get_hubR5   t   eventt   hubRA   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   _check_hub_event_closed]   s    
		c         C` sQ   |  j  ƒ  d g | _ d } | | | ƒ } |  j | d ƒ |  j | | | ƒ d  S(   Ni*   id   (   R=   t   side_effectR   RF   (   R   t   nb_funct   nb_argt   mock_ioRC   RD   R5   t   result(    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   _test_event_closed_on_normal_iof   s
    c         C` sX   |  j  ƒ  t ƒ  g | _ d } |  j t ƒ  | | | ƒ Wd  QX|  j | | | ƒ d  S(   Nid   (   R=   t
   ValueErrorRG   t   assertRaisesRF   (   R   RH   RI   RJ   RC   RD   R5   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   _test_event_closed_on_io_errorp   s
    s   gevent.os.get_hubs   gevent.os._writec         C` s    |  j  t j d | | d ƒ d  S(   NR   i   (   RL   R   R7   (   R   t
   mock_writeRC   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_event_closed_on_write{   s    c         C` s    |  j  t j d | | d ƒ d  S(   NR   i   (   RO   R   R7   (   R   RP   RC   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt    test_event_closed_on_write_error‚   s    s   gevent.os._readc         C` s    |  j  t j d | | d ƒ d  S(   NR   i   (   RL   R   R4   (   R   t	   mock_readRC   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_event_closed_on_read‰   s    c         C` s    |  j  t j d | | d ƒ d  S(   NR   i   (   RO   R   R4   (   R   RS   RC   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_event_closed_on_read_error   s    (   R(   R)   R   R   R   R=   RF   RL   RO   R   t   patchRQ   RR   RT   RU   (    (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyR3   F   s   							
	t   fork_and_watcht   TestForkAndWatchc           B` s,   e  Z e j Z d  „  Z d „  Z d „  Z RS(   c         C` sP   t  j ƒ  } | r2 t  j d d ƒ t  j d ƒ n t j d ƒ t  j d ƒ d  S(   Niÿÿÿÿi    i   (   R   RW   t   waitpidt   _reap_childrent   geventt   sleept   _exit(   R   t   pid(    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_waitpid_allž   s    c         C` s   |  j  t t j d d ƒ d  S(   Niþÿÿÿi    (   RN   R:   R   RY   (   R   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_waitpid_wrong_negª   s    c         C` s   |  j  t t j d d ƒ d  S(   Ni   i    (   RN   R:   R   RY   (   R   (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   test_waitpid_wrong_pos­   s    (   R(   R)   R*   R+   R,   R_   R`   Ra   (    (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyRX   ˜   s   			t   __main__(   t
   __future__R    R   R   R0   R   R   R[   R   R   R   R*   t   gevent.testingR   R	   t   gevent.testing.skippingR
   t   TestCaseR   t
   skipUnlesst   hasattrR3   RX   R(   t   main(    (    (    sN   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__os.pyt   <module>   s$   5	P	