ó
L]c           @   sv  d  d l  Z  d  d l Z d  d l m Z d  d l m Z y d  d l m Z Wn! e k
 ro d  d l m Z n Xd  d l	 m
 Z
 d  d l Z d  d l m Z y& d  d l Z d  d l m Z e Z Wn e k
 rÛ e Z n Xd e  j k Z d	 „  Z e
 j e d
 d ƒZ e
 j e j ƒ  d k  d
 d ƒZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d d „  ƒ  YZ d „  Z d S(   iÿÿÿÿN(   t   Thread(   t   TestCase(   t   SkipTest(   t   mark(   t   jsonapi(   t   greent   PyPyc         C   s   |  S(   N(    (   t   x(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   <lambda>    t    t   reasons   Doesn't work on PyPyi   s   requires zmq >= 4t   BaseZMQTestCasec           B   s•   e  Z e Z d  Z e d „  ƒ Z d „  Z d „  Z d „  Z	 e
 j e
 j d d „ Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z RS(   i
   c         C   s   |  j  r t j St j Sd  S(   N(   R   t   gzmqt   Contextt   zmq(   t   self(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR   -   s    	c         C   s&   |  j  j | ƒ } |  j j | ƒ | S(   N(   t   contextt   sockett   socketst   append(   R   t   socket_typet   s(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR   4   s    c         C   sQ   t  t |  ƒ j ƒ  |  j r2 t r2 t d ƒ ‚ n  |  j j ƒ  |  _ g  |  _	 d  S(   Ns   requires gevent(
   t   superR   t   setUpR   t   have_geventR   R   t   instanceR   R   (   R   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR   9   s
    c         C   sÛ   t  |  j g ƒ } x9 |  j rM |  j j ƒ  } | j | j ƒ | j d ƒ q Wxs | D]k } t d | j ƒ } t | _	 | j
 ƒ  | j d |  j ƒ | j ƒ  rU d  t j j j _ t d ƒ ‚ qU qU Wt t |  ƒ j ƒ  d  S(   Ni    t   targett   timeouts?   context could not terminate, open sockets likely remain in test(   t   setR   R   t   popt   addt   closeR    t   termt   Truet   daemont   startt   joint   teardown_timeoutt   is_alivet   NoneR   t   sugarR   t	   _instancet   RuntimeErrorR   R   t   tearDown(   R   t   contextst   sockt   ctxt   t(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR+   @   s    	
s   tcp://127.0.0.1c         C   s   |  j  j | ƒ } | j t j d ƒ | j | ƒ } |  j  j | ƒ } | j t j d ƒ | j d | | f ƒ |  j j | | g ƒ | | f S(   s/   Create a bound socket pair using a random port.i    s   %s:%s(	   R   R   t
   setsockoptR   t   LINGERt   bind_to_random_portt   connectR   t   extend(   R   t   type1t   type2t	   interfacet   s1t   portt   s2(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   create_bound_pairQ   s    c         C   s6   | j  | ƒ | j ƒ  } | j  | ƒ | j ƒ  } | S(   N(   t   sendt   recv(   R   R8   R:   t   msgt   msg2t   msg3(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt	   ping_pong\   s
    c         C   sT   t  j d  k r t d ƒ ‚ n  | j | ƒ | j ƒ  } | j | ƒ | j ƒ  } | S(   Ns   No json library(   R   t   jsonmodR'   R   t	   send_jsont	   recv_json(   R   R8   R:   t   ot   o2t   o3(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   ping_pong_jsonc   s    c         C   s6   | j  | ƒ | j ƒ  } | j  | ƒ | j ƒ  } | S(   N(   t
   send_pyobjt
   recv_pyobj(   R   R8   R:   RE   RF   RG   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   ping_pong_pyobjl   s
    c         O   sp   y | | | Ž  WnK t  j k
 r^ } |  j | j | d t  j | ƒ t  j | j ƒ f ƒ n X|  j d ƒ d  S(   Ns*   wrong error raised, expected '%s' got '%s's    Function did not raise any error(   R   t   ZMQErrort   assertEqualt   errnot   fail(   R   RN   t   funct   argst   kwargst   e(    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   assertRaisesErrnos   s    *c         K   s²   t  j ƒ  d	 k r" t j d ƒ n  t  j | g g  g  d | j d d ƒ ƒ\ } } } t | ƒ d k ss t d ƒ ‚ t  j | j	 d d ƒ B| d <| rŸ | j
 n | j } | |   S(
   sI   call recv[_multipart] in a way that raises if there is nothing to receivei   i   i    gš™™™™™¹?R   i   s   Should have received a messaget   flags(   i   i   i    (   R   t   zmq_version_infot   timet   sleept   selectR   t   lent   AssertionErrort   DONTWAITt   gett   recv_multipartR=   (   R   t	   multipartR   RR   t   rt   wR   R=   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   _select_recv|   s    3c         K   s   |  j  t | |  S(   s=   call recv in a way that raises if there is nothing to receive(   Rb   t   False(   R   R   RR   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR=   ‹   s    c         K   s   |  j  t | |  S(   sG   call recv_multipart in a way that raises if there is nothing to receive(   Rb   R!   (   R   R   RR   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR^      s    (   t   __name__t
   __module__Rc   R   R%   t   propertyR   R   R   R+   R   t   PAIRR;   RA   RH   RK   RT   Rb   R=   R^   (    (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR   )   s   											t   PollZMQTestCasec           B   s   e  Z RS(    (   Rd   Re   (    (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyRh   ”   s   t	   GreenTestc           B   s5   e  Z d  Z e Z d Z d „  Z d „  Z d „  Z RS(   s/   Mixin for making green versions of test classesi
   c         O   sœ   | t  j k r t d ƒ ‚ n  y | | | Ž  WnY t  j k
 rŠ t j ƒ  d } |  j | j | d t  j | ƒ t  j | j ƒ f ƒ n X|  j d ƒ d  S(   Ns   Skipping because we're green.i   s*   wrong error raised, expected '%s' got '%s's    Function did not raise any error(	   R   t   EAGAINR   RL   t   syst   exc_infoRM   RN   RO   (   R   RN   RP   RQ   RR   RS   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyRT   œ   s    *c         C   s±   t  |  j g ƒ } x6 |  j rJ |  j j ƒ  } | j | j ƒ | j ƒ  q Wy? t j g  | D] } t j | j	 ƒ ^ q[ d |  j
 d t ƒWn  t j k
 r¬ t d ƒ ‚ n Xd  S(   NR   t   raise_errors?   context could not terminate, open sockets likely remain in test(   R   R   R   R   R   R   t   geventt   joinallt   spawnR    R%   R!   t   TimeoutR*   (   R   R,   R-   R.   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyR+   ¨   s    %	c         C   s   t  d ƒ ‚ d  S(   Ns   Skipping because we are green(   R   (   R   (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt
   skip_green·   s    (	   Rd   Re   t   __doc__R!   R   R%   RT   R+   Rr   (    (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyRi   —   s   		c            s   ‡  f d †  } | S(   Nc            s,   |  j  r t d ƒ ‚ n ˆ  |  | | Ž Sd  S(   Ns   Skipping because we are green(   R   R   (   R   RQ   RR   (   t   f(    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   skipping_test»   s    	(    (   Rt   Ru   (    (   Rt   s1   lib/python2.7/site-packages/zmq/tests/__init__.pyRr   º   s    (   i   (    (   Rk   RW   t	   threadingR    t   unittestR   R   t   ImportErrort	   unittest2t   pytestR   R   t	   zmq.utilsR   Rn   R   R   R!   R   Rc   t   versiont   PYPYt   _idt   skipift	   skip_pypyRV   t   require_zmq_4R   Rh   Ri   Rr   (    (    (    s1   lib/python2.7/site-packages/zmq/tests/__init__.pyt   <module>   s0   

	!k#