ó
L]c           @   sµ   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z e j d ƒ Z d  d l Z d  d l	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z d e f d	 „  ƒ  YZ d S(
   iÿÿÿÿ(   t	   timedeltaNs   tornado.gen(   t   future(   t   IOLoop(   t   u(   t   BaseZMQTestCaset   TestFutureSocketc           B   si  e  Z e j Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j j e e d ƒ d d ƒd	 „  ƒ Z e
 j j e e d
 ƒ d d ƒd „  ƒ Z e
 j j d „  ƒ Z e
 j j d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e
 j j e j j d ƒ d d ƒd „  ƒ Z d „  Z e
 j j e j j d ƒ d d ƒd „  ƒ Z  RS(   c         C   s0   t  ƒ  |  _ |  j j ƒ  t t |  ƒ j ƒ  d  S(   N(   R   t   loopt   make_currentt   superR   t   setUp(   t   self(    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR	      s    c         C   sJ   t  t |  ƒ j ƒ  |  j r2 |  j j d t ƒ n  t j ƒ  t j ƒ  d  S(   Nt   all_fds(	   R   R   t   tearDownR   t   closet   TrueR   t   clear_currentt   clear_instance(   R
   (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR      s
    	
c         C   s;   |  j  j t j ƒ } t | t j ƒ s- t ‚ | j ƒ  d  S(   N(	   t   contextt   sockett   zmqt   PUSHt
   isinstanceR   t   Sockett   AssertionErrorR   (   R
   t   s(    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_socket_class#   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   si   ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  s= t ‚ |  j d ƒ V| V} ˆ  j | d g ƒ d  S(   Nt   hi(	   t   create_bound_pairR   R   t   PULLt   recv_multipartt   doneR   t   sendt   assertEqual(   t   at   bt   ft   recvd(   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test)   s    (   t   gent	   coroutineR   t   run_sync(   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_multipart(   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s³   ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  } | j ƒ  sI t ‚ | j ƒ  s\ t ‚ |  j d d g ƒ V| V} | j ƒ  s‰ t ‚ ˆ  j | j	 ƒ  d ƒ ˆ  j | d ƒ d  S(   NR   t   there(
   R   R   R   R   t   recvR   R   t   send_multipartR    t   result(   R!   R"   t   f1t   f2R$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   4   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt	   test_recv3   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   sÆ   ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  } | j ƒ  sH t ‚ | j ƒ  sZ t ‚ | j ƒ  sm t ‚ |  j	 d d g ƒ V| V} | j
 ƒ  sš t ‚ | j ƒ  s¬ t ‚ ˆ  j | d d g ƒ d  S(   NR   R*   (   R   R   R   R   R+   R   t   cancelR   R   R,   t	   cancelledR    (   R!   R"   R.   R/   R$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   C   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_cancelB   s    t   RCVTIMEOt   reasons   requires RCVTIMEOc            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s­   ˆ  j  t j t j ƒ \ }  } d | _ | j ƒ  } d | _ | j ƒ  } t j t j	 ƒ 
 | VWd  QX|  j
 d d g ƒ V| V} | j ƒ  s“ t ‚ ˆ  j | d d g ƒ d  S(   Nid   iè  R   R*   (   R   R   R   R   t   rcvtimeoR+   R   t   pytestt   raisest   AgainR,   R   R   R    (   R!   R"   R.   R/   R$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   T   s    		(   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_timeoutR   s    t   SNDTIMEOs   requires SNDTIMEOc            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   sF   ˆ  j  t j ƒ }  d |  _ t j t j ƒ  |  j d ƒ VWd  QXd  S(   Nid   s   not going anywhere(   R   R   R   t   sndtimeoR7   R8   R9   R   (   R   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   e   s    	(   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_send_timeoutc   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   sF   ˆ  j  t j ƒ }  t j t j ƒ  |  j d d t j ƒVWd  QXd  S(   Ns   not going anywheret   flags(   R   R   R   R7   R8   R9   R   t   NOBLOCK(   R   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   o   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_send_noblockm   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   sI   ˆ  j  t j ƒ }  t j t j ƒ  |  j d g d t j ƒVWd  QXd  S(   Ns   not going anywhereR>   (   R   R   R   R7   R8   R9   R,   R?   (   R   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   x   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_send_multipart_noblockv   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   sš   ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  s= t ‚ t d ƒ } |  j | ƒ V| V} | j ƒ  sp t ‚ ˆ  j	 | j
 ƒ  | ƒ ˆ  j	 | | ƒ d  S(   Ns   Ï€Ã¸Ã¸Ï€(   R   R   R   R   t   recv_stringR   R   R   t   send_stringR    R-   (   R!   R"   R#   t   msgR$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   €   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_string   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s   ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  s= t ‚ t d d ƒ } |  j | ƒ V| V} | j ƒ  ss t ‚ ˆ  j	 | j
 ƒ  | ƒ ˆ  j	 | | ƒ d  S(   NR!   i   (   R   R   R   R   t	   recv_jsonR   R   t   dictt	   send_jsonR    R-   (   R!   R"   R#   t   objR$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   Ž   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_json   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s	  ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  s= t ‚ | j ƒ  t j	 d ƒ Vt
 d d ƒ } |  j | ƒ Vt j t j ƒ  | V} Wd  QX| j ƒ  s¤ t ‚ | j d d ƒ V} | sÃ t ‚ t j	 d ƒ Vt j t d d ƒ | j ƒ  ƒ V} | | k st ‚ d  S(   Ni    R!   i   t   timeoutt   seconds(   R   R   R   R   RF   R   R   R1   R&   t   sleepRG   RH   R7   R8   R   t   CancelledErrort   pollt   with_timeoutR    (   R!   R"   R#   RI   R$   t   events(   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   œ   s    
"(   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_json_cancelled›   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s   ˆ  j  t j t j ƒ \ }  } | j ƒ  } | j ƒ  s= t ‚ t d d ƒ } |  j | ƒ V| V} | j ƒ  ss t ‚ ˆ  j	 | j
 ƒ  | ƒ ˆ  j	 | | ƒ d  S(   NR!   i   (   R   R   R   R   t
   recv_pyobjR   R   RG   t
   send_pyobjR    R-   (   R!   R"   R#   RI   R$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   ³   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_recv_pyobj²   s    c            sD   d „  ‰ d „  ‰  t  j ‡  ‡ ‡ f d †  ƒ } ˆ j j | ƒ d  S(   Nc         S   sL   g  } | j  |  j d g  ƒ ƒ t j |  d ƒ j d ƒ } | j | ƒ | S(   Nt
   identitiest   contentt   utf8(   t   extendt   gett   jsont   dumpst   encodet   append(   RD   t   framesRW   (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt	   serializeÁ   s
    c         S   s8   |  d  } t  j |  d j d ƒ ƒ } i | d 6| d 6S(   NiÿÿÿÿRX   RV   RW   (   R[   t   loadst   decode(   R_   RV   RW   (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   deserializeÈ   s
    
c          3   sÔ   ˆ j  t j t j ƒ \ }  } i i d d 6d d 6d 6} |  j | ˆ ƒ V| j ˆ  ƒ V} | d | d k st t ‚ | d s„ t ‚ | j | ˆ ƒ V|  j ˆ  ƒ V} | d | d k s¿ t ‚ | d sÐ t ‚ d  S(   Ni   R!   t   beeR"   RW   RV   (   R   R   t   DEALERt   ROUTERt   send_serializedt   recv_serializedR   (   R!   R"   RD   R$   t   r2(   Rc   R
   R`   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   Ð   s    (   R&   R'   R   R(   (   R
   R%   (    (   Rc   R
   R`   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_custom_serializeÀ   s    		c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   sž   ˆ  j  t j t j ƒ \ }  } i i d d 6d d 6d 6} t j t ƒ  |  j t t j	 ƒ VWd  QX|  j
 d ƒ Vt j t ƒ  | j t j ƒ V} Wd  QXd  S(   Ni   R!   Rd   R"   RW   s   not json(   R   R   Re   Rf   R7   R8   t	   TypeErrorRg   R[   R\   R   Rh   Ra   (   R!   R"   RD   R$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   æ   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_custom_serialize_errorå   s    c            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s  ˆ  j  t j t j ƒ \ }  } | j d d ƒ } | j ƒ  sB t ‚ ˆ  j | j ƒ  d ƒ | j d d ƒ } | j ƒ  s} t ‚ | V} ˆ  j | d ƒ | j d d ƒ } | j ƒ  s¹ t ‚ |  j	 d d g ƒ V| V} ˆ  j | t j
 ƒ | j ƒ  V} ˆ  j | d d g ƒ d  S(   NRK   i    i   iè  R   R*   (   R   R   R   R   RO   R   R   R    R-   R,   t   POLLINR   (   R!   R"   R#   t   evtR$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   ù   s    (   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt	   test_pollø   s    t   wins   Windows unsupported socket typec            s,   t  j ‡  f d †  ƒ } ˆ  j j | ƒ d  S(   Nc          3   s$  t  j ƒ  }  d } |  j t  j ƒ } |  j t  j ƒ } ˆ  j j | | g ƒ | j | ƒ | j | ƒ t	 j
 ƒ  } | j | t  j ƒ | j d d ƒ } | j ƒ  sª t ‚ | j d d g ƒ | V} ˆ  j | | t  j f g ƒ | j ƒ  } ˆ  j | d d g ƒ | j ƒ  | j ƒ  |  j ƒ  d  S(   Ns   inproc://testRK   iè  R   R*   (   R   t   ContextR   R   R   t   socketsRY   t   bindt   connectR   t   Pollert   registerRm   RO   R   R   R,   R    R   R   t   term(   t   ctxt   urlR!   R"   t   pollerR#   Rn   R$   (   R
   (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%     s&    

(   R&   R'   R   R(   (   R
   R%   (    (   R
   s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_poll_base_socket  s    c         C   sA   |  j  t j ƒ } |  j j d t ƒ d  |  _ | j s= t ‚ d  S(   NR   (	   R   R   t   PUBR   R   R   t   Nonet   closedR   (   R
   R   (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_close_all_fds+  s    	s)   Windows does not support polling on filesc         C   s&   t  j d „  ƒ } |  j j | ƒ d  S(   Nc          s   sƒ  t  j ƒ  }  t j ƒ  \ } } t j | d ƒ } t j | d ƒ } |  j | t j ƒ |  j | t j ƒ |  j	 d d ƒ V} t
 | ƒ } | j ƒ  | k sŸ t ‚ | j ƒ  | k s· t ‚ | | j ƒ  t j k sÖ t ‚ |  j | ƒ | j d ƒ | j ƒ  |  j	 d d ƒ V} t
 | ƒ } | j ƒ  | k s1t ‚ | | j ƒ  t j k sPt ‚ | j d ƒ d k skt ‚ | j ƒ  | j ƒ  d  S(   Nt   rbt   wbRK   i   t   xiè  (   R   Ru   t   ost   pipet   fdopenRv   R   Rm   t   POLLOUTRO   RG   t   filenoR   t
   unregistert   writet   flusht   readR   (   t   pt   rt   wt   evts(    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR%   5  s*    

(   R&   R'   R   R(   (   R
   R%   (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   test_poll_raw1  s    (!   t   __name__t
   __module__R   Rq   R	   R   R   R)   R0   R3   R7   t   markt   skipift   hasattrR   R:   R=   t   nowR@   RA   RE   RJ   RR   RU   Rj   Rl   Ro   t   syst   platformt
   startswithR{   R   R   (    (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyR      s2   							++
							%					(   t   datetimeR    Rƒ   R[   R—   R7   t   importorskipR&   R   t   zmq.eventloopR   t   tornado.ioloopR   t   zmq.utils.strtypesR   t	   zmq.testsR   R   (    (    (    s4   lib/python2.7/site-packages/zmq/tests/test_future.pyt   <module>   s   