ó
Ýà‹]c           @   s'  d  Z  d d l Z d d l Z e j j Z d d l Z d d l m Z d d l	 Z	 d d l
 Z
 d d l Z d 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
 d l m Z m Z d Z d e f d „  ƒ  YZ e j j d d d „  ƒ  Yƒ Z  d S(   s   Tests for the KernelManageriÿÿÿÿN(   t   PIPE(   t   TestCase(   t   Config(   t   paths(   t   KernelManageri   (   t   start_new_kerneli   (   t   test_envt
   skip_win32i   t   TestKernelManagerc           B   sw   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e	 d „  ƒ Z
 d „  Z e	 d	 „  ƒ Z d
 „  Z RS(   c         C   s   t  ƒ  |  _ |  j j ƒ  d  S(   N(   R   t	   env_patcht   start(   t   self(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   setUp   s    c         C   s   |  j  j ƒ  d  S(   N(   R	   t   stop(   R   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   tearDown    s    c         C   s€   t  t j ƒ  d d ƒ } t j | ƒ t t  | d ƒ d ƒ = } | j t j i t	 j
 d d d d g d	 6d
 d 6ƒ ƒ Wd  QXd  S(   Nt   kernelst
   signaltests   kernel.jsont   ws   -ms!   jupyter_client.tests.signalkernels   -fs   {connection_file}t   argvs   Signal Test Kernelt   display_name(   t   pjoinR   t   jupyter_data_dirt   ost   makedirst   opent   writet   jsont   dumpst   syst
   executable(   R   t
   kernel_dirt   f(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   _install_test_kernel#   s    c         C   s   t  ƒ  } t d | ƒ } | S(   Nt   config(   R   R   (   R   t   ct   km(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   _get_tcp_km.   s    	c         C   s4   t  ƒ  } d | j _ d | j _ t d | ƒ } | S(   Nt   ipct   testR!   (   R   R   t	   transportt   ip(   R   R"   R#   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   _get_ipc_km3   s
    	c         C   s€   | j  d t d t ƒ |  j | j ƒ  ƒ | j d t ƒ |  j | j ƒ  ƒ | j ƒ  |  j t | t ƒ ƒ | j	 d t ƒ d  S(   Nt   stdoutt   stderrt   now(
   t   start_kernelR    t
   assertTruet   is_alivet   restart_kernelt   Truet   interrupt_kernelt
   isinstanceR   t   shutdown_kernel(   R   R#   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   _run_lifecycle:   s    
c         C   s   |  j  ƒ  } |  j | ƒ d  S(   N(   R$   R5   (   R   R#   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   test_tcp_lifecycleC   s    c         C   s   |  j  ƒ  } |  j | ƒ d  S(   N(   R)   R5   (   R   R#   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   test_ipc_lifecycleG   s    c      
   C   se   |  j  ƒ  } | j ƒ  } t | j ƒ  ƒ } t d d d d d d d d d	 g	 ƒ } |  j | | ƒ d  S(
   NR(   R'   t   hb_portt
   shell_portt
   stdin_portt
   iopub_portt   control_portt   keyt   signature_scheme(   R$   t   get_connection_infot   sortedt   keyst   assertEqual(   R   R#   t   cinfoRA   t   expected(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   test_get_connect_infoL   s    c            s“  ˆ j  ƒ  t d d ƒ \ } ‰  ‡  ‡ f d †  } ˆ j ˆ  j ƒ ˆ j | j ƒ d } x t | ƒ D] } | d ƒ qd Wt j d ƒ | d ƒ } ˆ j | d d	 d  g | ƒ ˆ  j
 d
 ƒ t j d ƒ | j ƒ  ˆ  j t ƒ } | d } ˆ j | d d ƒ ˆ j | d d t ƒ xP t d ƒ D]B } | d ƒ } | d d	 t j g | k rgt j d ƒ q&Pq&Wˆ j | d d	 t j g | ƒ d  S(   Nt   kernel_nameR   c            s>   ˆ  j  |  ƒ ˆ  j t ƒ } | d } ˆ j | d d ƒ | S(   Nt   contentt   statust   ok(   t   executet   get_shell_msgt   TIMEOUTRB   (   t   cmdt   replyRG   (   t   kcR   (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyRJ   [   s
    
i   R
   i   t   checkt   user_expressionst   pollt   sleepRG   RH   RI   t   interruptedi2   gš™™™™™¹?(   R    R   t
   addCleanupt   stop_channelsR4   t   ranget   timeRS   RB   t   NoneRJ   R2   RK   RL   R1   t   signalt   SIGINT(   R   R#   RJ   t   Nt   iRN   RG   (    (   RO   R   sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   test_signal_kernel_subprocessesW   s0    


c         C   si   |  j  ƒ  t d d ƒ \ } } |  j | j ƒ |  j | j ƒ |  j | j ƒ  ƒ |  j | j ƒ  ƒ d  S(   NRF   R   (   R    R   RU   RV   R4   R.   R/   (   R   R#   RO   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   test_start_new_kernel}   s    
(   t   __name__t
   __module__R   R   R    R$   R)   R5   R6   R   R7   RE   R^   R_   (    (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyR      s   									&t   TestParallelc           B   s›   e  Z e j d  e ƒ d „  ƒ Z e j d d d g ƒ d „  ƒ Z e j d „  ƒ Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z e d „ Z d d „ Z RS(   t   autousec         c   s&   t  ƒ  } | j ƒ  d  V| j ƒ  d  S(   N(   R   R
   R   (   R   R	   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   env‰   s    	
t   paramst   tcpR%   c         C   s   | j  S(   N(   t   param(   R   t   request(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyR'      s    c         C   s.   t  ƒ  } | | _ | d k r* d | _ n  | S(   NR%   R&   (   R   R'   R(   (   R   R'   R"   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyR!   ”   s
    		c         C   s€   t  t j ƒ  d d ƒ } t j | ƒ t t  | d ƒ d ƒ = } | j t j i t	 j
 d d d d g d	 6d
 d 6ƒ ƒ Wd  QXd  S(   NR   R   s   kernel.jsonR   s   -ms!   jupyter_client.tests.signalkernels   -fs   {connection_file}R   s   Signal Test KernelR   (   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyR    œ   s    c         C   s5   |  j  ƒ  |  j | ƒ |  j | ƒ |  j | ƒ d S(   sA   Ensure that a sequence of kernel startups doesn't break anything.N(   R    t   _run_signaltest_lifecycle(   R   R!   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   test_start_sequence_kernels§   s    
c         C   s‡   |  j  ƒ  |  j | ƒ t j d |  j d | f ƒ } t j d |  j d | f ƒ } z | j ƒ  | j ƒ  Wd  | j ƒ  | j ƒ  Xd  S(   Nt   targett   args(   R    Ri   t	   threadingt   ThreadR
   t   join(   R   R!   t   threadt   thread2(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt"   test_start_parallel_thread_kernels¯   s    


c         C   sœ   |  j  ƒ  |  j | ƒ t j d |  j d | f ƒ } t j d |  j d | f ƒ } z | j ƒ  | j ƒ  Wd  | j ƒ  | j ƒ  X| j d k s˜ t	 ‚ d  S(   NRk   Rl   i    (
   R    Ri   Rm   Rn   t   mpt   ProcessR
   Ro   t   exitcodet   AssertionError(   R   R!   Rp   t   proc(    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt#   test_start_parallel_process_kernels¼   s    


c         C   sj   |  j  ƒ  |  j | ƒ t j d |  j d | f ƒ } z | j ƒ  Wd  | j ƒ  X| j d k sf t ‚ d  S(   NRk   Rl   i    (   R    Ri   Rs   Rt   R
   Ro   Ru   Rv   (   R   R!   Rw   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt#   test_start_sequence_process_kernelsË   s    
c         K   sf   | j  |   | j ƒ  } | j ƒ  y | j d | ƒ Wn( t k
 ra | j ƒ  | j ƒ  ‚  n X| S(   Nt   timeout(   R-   t   clientt   start_channelst   wait_for_readyt   RuntimeErrorRV   R4   (   R   R#   t   startup_timeoutt   kwargsRO   (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   _prepare_kernelÖ   s    


c            s±   t  d | d d ƒ } |  j | d t d t ƒ‰  ‡  f d †  } | d ƒ | j ƒ  s[ t ‚ | d ƒ | j ƒ  sw t ‚ | j d	 t ƒ | j ƒ  s™ t ‚ | d ƒ | j ƒ  d  S(
   NR!   RF   R   R*   R+   c            s@   ˆ  j  |  ƒ ˆ  j t ƒ } | d } | d d k s< t ‚ | S(   NRG   RH   RI   (   RJ   RK   RL   Rv   (   RM   RN   RG   (   RO   (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyRJ   ç   s
    
R
   RP   R,   (   R   R   R    R/   Rv   R0   R1   R4   (   R   R!   R#   RJ   (    (   RO   sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyRi   ã   s    


N(   R`   Ra   t   pytestt   fixtureR1   Rd   R'   R!   R    Rj   Rr   Rx   Ry   RL   R   RY   Ri   (    (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyRb   †   s   !					(    (!   t   __doc__R   R   t   pathRo   R   RZ   t
   subprocessR    R   RX   Rm   t   multiprocessingRs   R‚   t   unittestR   t   traitlets.config.loaderR   t   jupyter_coreR   t   jupyter_clientR   t   managerR   t   utilsR   R   RL   R   t   markt   parallelRb   (    (    (    sF   lib/python2.7/site-packages/jupyter_client/tests/test_kernelmanager.pyt   <module>   s&   k