ó
Ýà‹]c           @   sH  d  Z  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 m Z Wn e k
 ry d d l Z n Xd d l	 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 d	 l m Z d
 „  Z d „  Z d e f d „  ƒ  YZ e	 j d „  ƒ Z e	 j j d ƒ d e f d „  ƒ  Yƒ Z d S(   s#   test building messages with SessioniÿÿÿÿN(   t   datetime(   t   mock(   t   BaseZMQTestCase(   t	   ZMQStream(   t   session(   t   jsonutil(   t   string_typesc         C   s   t  d ƒ ‚ d  S(   Ns   I don't work(   t	   TypeError(   t   obj(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   _bad_packer   s    c         C   s   t  d ƒ ‚ d  S(   Ns   I don't work either(   R   (   t   bytes(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   _bad_unpacker   s    t   SessionTestCasec           B   s   e  Z d  „  Z RS(   c         C   s    t  j |  ƒ t j ƒ  |  _ d  S(   N(   R   t   setUpt   sst   SessionR   (   t   self(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyR   $   s    (   t   __name__t
   __module__R   (    (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyR   "   s   c           c   s.   t  j j t d d d t ƒ
 d VWd QXd S(   s.   Disable zero-copy optimizations in pyzmq >= 17t   COPY_THRESHOLDi   t   createN(   R   t   patcht   objectt   zmqt   True(    (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   no_copy_threshold)   s    R   t   TestSessionc           B   sÎ   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s  |  j  j d ƒ } t d j ƒ  ƒ } t | j ƒ  ƒ } |  j | | ƒ |  j t | d t ƒ ƒ |  j t | d t ƒ ƒ |  j t | d t ƒ ƒ |  j t | d t ƒ ƒ |  j t | d t	 ƒ ƒ |  j t | d t	 ƒ ƒ |  j | d d d ƒ |  j | d d ƒ d	 S(
   s   message formatt   executes5   header parent_header metadata content msg_type msg_idt   contentt   metadatat   headert   parent_headert   msg_idt   msg_typeN(
   R   t   msgt   sett   splitt   keyst   assertEqualt
   assertTruet
   isinstancet   dictR   (   R   R"   t   thekeyst   s(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_msg3   s    c         C   s=  |  j  j d d t d d d d ƒ ƒ} |  j  j | d d ƒ} |  j  j | ƒ \ } } |  j  j | ƒ } |  j | d	 d ƒ |  j | d
 | d
 ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j t | d d ƒ t | d d ƒ ƒ d  S(   NR   R   t   ai
   t   bgš™™™™™ñ?t   identt   fooi    R    R!   R   R   R   (   R   R"   R)   t	   serializet   feed_identitiest   deserializeR&   t   type(   R   R"   t   msg_listR/   t   new_msg(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_serializeB   s    'c         C   s3   |  j  |  j j t ƒ |  j  |  j j t j ƒ d  S(   N(   t   assertIsInstanceR   t   keyR
   t   autht   hmact   HMAC(   R   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_default_secureQ   s    c         C   sª  t  j ƒ  } | j t  j ƒ } | j t  j ƒ } | j d ƒ | j d ƒ |  j j d d t d d ƒ ƒ} |  j j	 | | d d d d	 g ƒ|  j j
 | j ƒ  ƒ \ } } |  j j | ƒ } |  j | d
 d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d d	 g ƒ | d } | d }	 |  j j |	 d <| d }
 | d } |	 d } |  j j	 | d  d | d |
 d |	 d | d d d d	 g ƒ|  j j
 | j ƒ  ƒ \ } } |  j j | ƒ } |  j | d
 d ƒ |  j | d |	 d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d d	 g ƒ |  j j |	 d <|  j j	 | | d d d d	 g ƒ|  j j | ƒ \ } } |  j | d
 d ƒ |  j | d |	 d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d | d ƒ |  j | d d	 g ƒ |  j t ƒ ' |  j j	 | | d d d d g ƒWd  QXt t j d ƒ ƒ } t j d k rˆ|  j t ƒ 4 |  j j	 | | d d d | d  d  d … g ƒWd  QXn  | j ƒ  | j ƒ  | j ƒ  d  S(   Ns   inproc://testR   R   R-   i
   R/   R0   t   bufferst   bari    R    R!   R   R   R   t   parenti   i   i   i   (   i   i   (   R   t   Contextt   sockett   PAIRt   bindt   connectR   R"   R)   t   sendR2   t   recv_multipartR3   R&   R    t   Nonet   recvt   assertRaisesR   t
   memoryviewt   ost   urandomt   syst   version_infot
   ValueErrort   closet   term(   R   t   ctxt   At   BR"   R/   R5   R6   R   R   R@   R   R!   t   buf(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt	   test_sendU   sn    !"




"(8

c         C   s  |  j  } |  j | j t j k ƒ |  j | j t j k ƒ |  j | j t	 j
 j d d ƒ ƒ t j ƒ  } |  j | j t	 j
 j d d ƒ ƒ |  j t t j d d ƒ|  j t t j d d ƒt t j ƒ  ƒ } t j d d d | ƒ } |  j | j  | ƒ |  j | j d ƒ d	 S(
   s$   initialization arguments for Sessiont   USERu   usernamet   packt   hit   unpackt   usernameu   carrotR   N(   R   R'   RY   R   t   default_packerR[   t   default_unpackerR&   R\   RL   t   environt   getR   RJ   R   t   strt   uuidt   uuid4(   R   R+   t   u(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt	   test_args˜   s    	""c         C   s)  |  j  t j t j ƒ \ } } |  j } d | _ t | ƒ } | j | d d t ƒ} |  j | d t	 j
 k ƒ | j | d d t ƒ} |  j t | d t j ƒ ƒ t j d d t ƒ} | j | d d | g d t ƒ} | d } |  j t | t j ƒ ƒ |  j t j | j d ƒ ~ | j d ƒ d S(	   s   test tracking messagesi   t   hellot   trackt   trackers   hi thereR>   gš™™™™™¹?N(   t   create_bound_pairR   RC   R   t   copy_thresholdR   RF   t   FalseR'   R   t   DONER   R(   t   MessageTrackert   MessageRJ   t   NotDonet   wait(   R   R-   R.   R+   t   streamR"   t   Mt   t(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_tracking©   s    		!
c         C   s`   t  ƒ  } xP t d ƒ D]B } |  j j d ƒ } | d } |  j | | k ƒ | j | ƒ q Wd S(   s%   test that messages receive unique idsi   i   t   testR    Ni   (   R#   t   rangeR   t
   msg_headerR'   t   add(   R   t   idst   it   hR    (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_unique_msg_ids¼   s    	
c         C   sF   d j  ƒ  } t d d d t ƒ  ƒ } |  j j d d | ƒ} | } d S(   s"   scrub the front for zmq IDENTITIESs   engine client othert   codet   whodat   stuffR   R   N(   R$   R)   R   R   R"   (   R   t   theidsR   t   themsgt   pmsg(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_feed_identitiesÅ   s    c         C   sê   t  j ƒ  } | j } | j } |  j | j d ƒ | ƒ t  j ƒ  } | j } | j } |  j | j d ƒ | ƒ d | _ | j } | j } |  j | j d ƒ | ƒ t  j d d ƒ } |  j | j | j j d ƒ ƒ |  j d | j ƒ d  S(   Nt   asciis   something elseR   R   (   R   R   t   bsessionR   R&   t   encode(   R   R   t   bst   us(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_session_idÌ   s    							c         C   s\   t  j d d ƒ } x* t d ƒ D] } | j t j ƒ  j ƒ q W|  j t | j	 ƒ d ƒ d  S(   Nt   digest_history_sizei    i   (
   R   R   Rv   t   _add_digestRb   Rc   R
   R&   t   lent   digest_history(   R   R   Rz   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_zero_digest_historyá   s    c         C   s  t  j d d ƒ } x* t d ƒ D] } | j t j ƒ  j ƒ q W|  j t | j	 ƒ d k ƒ | j t j ƒ  j ƒ |  j t | j	 ƒ d k ƒ x* t d ƒ D] } | j t j ƒ  j ƒ qš W|  j t | j	 ƒ d k ƒ | j t j ƒ  j ƒ |  j t | j	 ƒ d k ƒ d  S(   NRŠ   id   i[   i	   (
   R   R   Rv   R‹   Rb   Rc   R
   R'   RŒ   R   (   R   R   Rz   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_cull_digest_historyç   s    c         C   si   y t  j d t ƒ } Wn? t k
 rW } |  j d t | ƒ ƒ |  j d t | ƒ ƒ n X|  j d ƒ d  S(   NRY   s   could not serializes
   don't works   Should have raised ValueError(   R   R   R	   RP   t   assertInRa   t   fail(   R   R   t   e(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_bad_packô   s    c         C   si   y t  j d t ƒ } Wn? t k
 rW } |  j d t | ƒ ƒ |  j d t | ƒ ƒ n X|  j d ƒ d  S(   NR[   s   could not handle outputs   don't work eithers   Should have raised ValueError(   R   R   R   RP   R   Ra   R‘   (   R   R   R’   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_bad_unpacký   s    c         C   sm   y t  j d t d ƒ } Wn? t k
 r[ } |  j d t | ƒ ƒ |  j d t | ƒ ƒ n X|  j d ƒ d  S(   Nt   packers   ._bad_packers   could not serializes
   don't works   Should have raised ValueError(   R   R   R   RP   R   Ra   R‘   (   R   R   R’   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_bad_packer  s    c         C   sm   y t  j d t d ƒ } Wn? t k
 r[ } |  j d t | ƒ ƒ |  j d t | ƒ ƒ n X|  j d ƒ d  S(   Nt   unpackers   ._bad_unpackers   could not handle outputs   don't work eithers   Should have raised ValueError(   R   R   R   RP   R   Ra   R‘   (   R   R   R’   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_bad_unpacker  s    c         C   s/   |  j  t ƒ  t j d d „  ƒ } Wd  QXd  S(   NR[   c         S   s   d S(   Ni   (    (   R.   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   <lambda>  t    (   RJ   RP   R   R   (   R   R   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_bad_roundtrip  s    c      	   C   s¨  t  d t j ƒ  ƒ } t  d t j ƒ  ƒ } | j d ƒ } | j d d | d | d | d ƒ} | j | ƒ } | j | j | ƒ d ƒ } t | d d t ƒ s¦ t	 ‚ |  j
 | d | d ƒ |  j
 | d	 | d	 ƒ |  j
 | d	 | d	 ƒ t | d d t ƒ st	 ‚ t | d d t ƒ s(t	 ‚ t | d d t ƒ sEt	 ‚ t | d d t ƒ sbt	 ‚ |  j
 | d t j | d ƒ ƒ |  j
 | d t j | d ƒ ƒ d  S(
   NRs   R"   R   R   R@   R   i   t   dateR   (   R)   R   t   utcnowR"   R1   R3   R2   R(   R    t   AssertionErrorR&   R   R   t   extract_dates(   R   R   R   R   t   pR"   t   smsgt   msg2(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   _datetime_test  s     %!c         C   s   |  j  |  j ƒ d  S(   N(   R£   R   (   R   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_datetimes.  s    c         C   s#   t  j d d ƒ } |  j | ƒ d  S(   NR•   t   pickle(   R   R   R£   (   R   R   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_datetimes_pickle1  s    c            sD   t  j d ƒ ‰  t j d ˆ  j d ‡  f d †  ƒ } |  j | ƒ d  S(   Nt   msgpackRY   R[   c            s   ˆ  j  |  d d ƒS(   Nt   encodingt   utf8(   t   unpackb(   RV   (   R§   (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyR™   :  Rš   (   t   pytestt   importorskipR   R   t   packbR£   (   R   R   (    (   R§   s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_datetimes_msgpack5  s
    		c   
      C   s—  t  j ƒ  } | j t  j ƒ } | j t  j ƒ } | j d ƒ | j d ƒ |  j j d d t d d ƒ ƒ} g  d d d d g D] } |  j j	 | | ƒ ^ q~ } |  j j
 | | d	 d
 ƒ|  j j | j ƒ  ƒ \ } } |  j j | ƒ }	 |  j | d d
 ƒ |  j |	 d | d ƒ |  j |	 d | d ƒ |  j |	 d | d ƒ |  j |	 d | d ƒ |  j |	 d | d ƒ | j ƒ  | j ƒ  | j ƒ  d  S(   Ns   inproc://testR   R   R-   i
   R   R   R   R/   R0   i    R!   (   R   RA   RB   RC   RD   RE   R   R"   R)   RY   t   send_rawR2   RG   R3   R&   RQ   RR   (
   R   RS   RT   RU   R"   t   partR5   R/   t   new_msg_listR6   (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   test_send_raw>  s(    !2

c         C   s«   |  j  } | j d ƒ | j ƒ  } | j  | j  k s: t ‚ | j | j k sR t ‚ | j | j k	 sj t ‚ d } | j | ƒ | | j k s’ t ‚ | | j k s§ t ‚ d  S(   Nt   initialt   abcdef(   R   R‹   t   cloneRž   R   (   R   R+   t   s2t   digest(    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt
   test_cloneW  s    	(   R   R   R,   R7   R=   RW   Re   Rt   R|   Rƒ   R‰   RŽ   R   R“   R”   R–   R˜   R›   R£   R¤   R¦   R®   R²   R¸   (    (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyR   0   s,   				C																							(   t   __doc__R;   RL   RN   Rb   R    t   unittestR   t   ImportErrorR«   R   t	   zmq.testsR   t   zmq.eventloop.zmqstreamR   t   jupyter_clientR   R   R   t   ipython_genutils.py3compatR   R	   R   R   t   fixtureR   t   markt   usefixturesR   (    (    (    s@   lib/python2.7/site-packages/jupyter_client/tests/test_session.pyt   <module>   s,   		