σ
R\c           @@ sl  d  d l  m Z m Z d  d l Z d  d l Td  d l Z d  d l Z d  d l m 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 Z d Z d e j d <d	 Z d
 e f d     YZ d e j j f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ e d k rhe j   n  d S(   i    (   t   absolute_importt   print_functionN(   t   *(   t	   HTTPError(   t   IOLoopg      π?t   20t   ASYNC_TEST_TIMEOUTi   t   TestTermClientc           B@ s   e  Z d  Z d   Z e j j d    Z e j j e d   Z	 d   Z
 e j j e d   Z d   Z e j j d    Z d   Z RS(	   s%   Test connection to a terminal managerc         C@ s   | |  _  d  |  _ d  S(   N(   t   wst   Nonet   pending_read(   t   selft	   websocket(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   __init__"   s    	c         c@ se   |  j  d  k r$ |  j j   |  _  n  |  j  V} d  |  _  | rO t j |  } n  t j j |   d  S(   N(	   R
   R	   R   t   read_messaget   jsont   loadst   tornadot   gent   Return(   R   t   response(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   read_msg&   s    
	c         c@ s   g  } t  j d |  } xi t r y& |  j   } t j j | |  V} Wn) t j j k
 rr t j j |   n X| j	 |  q Wd S(   s"   Read messages until read times outt   secondsN(
   t   datetimet	   timedeltat   TrueR   R   R   t   with_timeoutt   TimeoutErrorR   t   append(   R   t   timeoutt   msglistt   deltat   mft   msg(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   read_all_msg4   s    	c         C@ s   |  j  j t j |   d  S(   N(   R   t   write_messageR   t   dumps(   R   R!   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt	   write_msgB   s    c         c@ s   |  j  |  V} d j g  | D]  } | d d k r | d ^ q  } g  | D] } | d d k rM | ^ qM } t j j | | f   d S(   sk   Read standard output until timeout read reached,
           return stdout and any non-stdout msgs received.t    i    t   stdouti   N(   R"   t   joinR   R   R   (   R   R   R   R!   R'   t   othermsg(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   read_stdoutE   s    6)c         C@ s   |  j  d | g  d S(   s   Write to terminal stdint   stdinN(   R%   (   R   t   data(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   write_stdinN   s    c         c@ s   |  j    V|  j d  |  j    V\ } } t j d k re t j d |  } t | j   d  } n t | j d  d  } t	 j
 j |   d S(   s(   Get process ID of terminal shell processs   echo $$t   nts   echo \$\$\x1b\[0K\r\n(\d+)i    s   
i   N(   R*   R-   t   ost   namet   ret   searcht   intt   groupst   splitR   R   R   (   R   R'   t   extrat   matcht   pid(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   get_pidR   s    c         C@ s   |  j  j   d  S(   N(   R   t   close(   R   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR:   _   s    (   t   __name__t
   __module__t   __doc__R   R   R   t	   coroutineR   t   DONE_TIMEOUTR"   R%   R*   R-   R9   R:   (    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR       s   					t   TermTestCasec           B@ sV   e  Z e j j d     Z e j j d    Z e j j d    Z d   Z d Z	 RS(   c         c@ sn   |  j    } d | | f } t j j | d i d | d 6} t j j |  V} t j j t |    d  S(   Ns   ws://127.0.0.1:%d%st   headerss   http://127.0.0.1:%dt   Origin(	   t   get_http_portR   t
   httpclientt   HTTPRequestR   t   websocket_connectR   R   R   (   R   t   patht   portt   urlt   requestR   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   get_term_clientf   s    c         c@ s9   g  | D] } |  j  |  ^ q V} t j j |   d  S(   N(   RK   R   R   R   (   R   t   pathsRG   t   tms(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   get_term_clientsp   s    #c         c@ sG   g  } x( | D]  } | j    V} | j |  q Wt j j |   d  S(   N(   R9   R   R   R   R   (   R   t   tm_listt   pidst   tmR8   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   get_pidsu   s
    c      	   @ sς   t  d d g d t d |  j  |  _ t d d g d |  j  |  _ t d d g d t d |  j  |  _ |  j   d t j	 j
 f   f d     Y} t j	 j d | f d t i |  j d	 6f d
 t i |  j d	 6f d t i |  j d	 6f g d t S(   Nt   shell_commandt   basht   max_terminalst   ioloopt   NewTerminalHandlerc           @ s   e  Z d  Z   f d   Z RS(   s,   Create a new named terminal, return redirectc         @ s-     j    \ } } |  j d | d t d  S(   Ns   /named/t	   permanent(   t   new_named_terminalt   redirectt   False(   R   R0   t   terminal(   t   named_tm(    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   get   s    (   R;   R<   R=   R^   (    (   R]   (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyRW      s   s   /news   /named/(\w+)t   term_managers   /singles   /uniquet   debug(   t   NamedTermManagert	   MAX_TERMSt   io_loopR]   t   SingleTermManagert	   single_tmt   UniqueTermManagert	   unique_tmR   t   webt   RequestHandlert   Applicationt
   TermSocketR   (   R   RW   (    (   R]   s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   get_app~   s     	"		s   /named/term1s   /uniques   /single(   s   /named/term1s   /uniques   /single(
   R;   R<   R   R   R>   RK   RN   RR   Rl   t	   test_urls(    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR@   b   s
   
		t   CommonTestsc           B@ s2   e  Z e j j d     Z e j j d    Z RS(   c         c@ s   x |  j  D]~ } |  j |  V} | j   V} |  j | d i  g  | j   V} |  j | d d  |  j t | d  d  | j   q
 Wd  S(   Nt   setupi    R'   i   (   Rm   RK   R   t   assertEqualt   assertGreatert   lenR:   (   R   RI   RQ   R   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt
   test_basic   s    c         c@ s¨   x‘ |  j  D] } |  j |  V} | j   V| j d  | j   V\ } } t j d k ro d | k s t  n | j d  s t  | g  k s t  | j	   q
 Wd  S(   Ns   whoami
R.   t   whoamit   who(
   Rm   RK   R"   R-   R*   R/   R0   t   AssertionErrort
   startswithR:   (   R   RI   RQ   R'   t   other(    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   test_basic_command¦   s    (   R;   R<   R   t   testingt   gen_testRs   Ry   (    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyRn      s   t   NamedTermTestsc           B@ s;   e  Z d    Z e j j d    Z e j j d    Z RS(   c         C@ sb   |  j  d d t } |  j | j d  | j d } | j d  d } |  j | |  j j  d  S(   Ns   /newt   follow_redirectsi.  t   Locationt   /i   (	   t   fetchR[   Rp   t   codeRA   R5   t   assertInR]   t	   terminals(   R   R   RI   R0   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   test_new΅   s
    c         c@ s   d g d d g d } |  j  |  V} |  j |  V} |  j | d | d  |  j | d | d  |  j | d | d  d  S(   Ns   /named/1i   s   /named/2i    i   i   (   RN   RR   Rp   t   assertNotEqual(   R   t   namesRM   RP   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   test_namespaceΎ   s    c         c@ s   g  t  t d  D] } d | ^ q } |  j | t   V} |  j |  V} |  j | t  V} | j   V} |  j | d   d  S(   Ni   s	   /named/%d(   t   rangeRb   RN   RR   RK   R   Rp   R	   (   R   t   it   urlsRM   RP   RQ   R!   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   test_max_terminalsΘ   s    '(   R;   R<   R   R   Rz   R{   R   R   (    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR|   ΄   s   		
t   SingleTermTestsc           B@ s   e  Z e j j d     Z RS(   c         c@ sB   |  j  d d g  V} |  j |  V} |  j | d | d  d  S(   Ns   /singlei    i   (   RN   RR   Rp   (   R   RM   RP   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   test_single_processΤ   s    (   R;   R<   R   Rz   R{   R   (    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR   Σ   s   t   UniqueTermTestsc           B@ s2   e  Z e j j d     Z e j j d    Z RS(   c         c@ sB   |  j  d d g  V} |  j |  V} |  j | d | d  d  S(   Ns   /uniquei    i   (   RN   RR   R   (   R   RM   RP   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   test_unique_processesΫ   s    c         c@ sΤ   |  j  d g t  V} |  j |  V} |  j t t |   t  |  j d  V} | j   V} |  j | d   | d j	   | d j   V} |  j
 | d   |  j d  V} | j   V} |  j
 | d d  d  S(   Ns   /uniquei    Ro   (   RN   Rb   RR   Rp   Rr   t   setRK   R   R	   R:   t   assertEquals(   R   RM   RP   RQ   R!   (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR   α   s    (   R;   R<   R   Rz   R{   R   R   (    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyR   Ϊ   s   t   __main__(   t
   __future__R    R   t   unittestt	   terminadoR   t   tornado.httpservert   tornado.httpclientR   t   tornado.ioloopR   t   tornado.testingR   t   loggingR   R/   R1   R?   t   environRb   t   objectR   Rz   t   AsyncHTTPTestCaseR@   Rn   R|   R   R   R;   t   main(    (    (    s9   lib/python2.7/site-packages/terminado/tests/basic_test.pyt   <module>   s.   
B6