
    Ib&                         d Z ddlmZ ddlmZ ddlmZ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  G d d      Z e       Z ee      Z G d de      Z G d de      Zy)zTests for the session manager.    )partial)TestCase)genweb)IOLoop   )SessionManager)MappingKernelManager)ContentsManager)utcnow	isoformatc                       e Zd ZddZy)DummyKernelc                     || _         y Nkernel_name)selfr   s     V/usr/lib/python3/dist-packages/notebook/services/sessions/tests/test_sessionmanager.py__init__zDummyKernel.__init__   s
    &    N)python)__name__
__module____qualname__r    r   r   r   r      s    'r   r   c                   8     e Zd ZdZ fdZd ZddZddZ xZS )DummyMKMzFMappingKernelManager interface that doesn't start kernels, for testingc                 D    t        |   |i | t        d      | _        y )NABCDEFGHIJK)superr   iter
id_letters)r   argskwargs	__class__s      r   r   zDummyMKM.__init__   s!    $)&)}-r   c                 ,    t        | j                        S r   )nextr#   r   s    r   _new_idzDummyMKM._new_id   s    DOO$$r   c                     |xs | j                         }t        |      x}| j                  |<   d| j                  |<   t        |_        d|_        |S )Nr   r   idle)r*   r   _kernels_kernel_connections
dummy_datelast_activityexecution_state)r   	kernel_idpathr   r%   ks         r   start_kernelzDummyMKM.start_kernel   sO    /	'2{'KKDMM)$./  +$"r   c                     | j                   |= y r   )r-   )r   r2   nows      r   shutdown_kernelzDummyMKM.shutdown_kernel&   s    MM)$r   )NNr   )F)	r   r   r   __doc__r   r*   r5   r8   __classcell__)r&   s   @r   r   r      s    P.%%r   r   c                   T    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y)TestSessionManagerc                     t        t               t                     | _        t	               | _        | j                  t        | j
                  j                  d             y )N)kernel_managercontents_managerT)all_fds)	r	   r   r   smr   loop
addCleanupr   closer)   s    r   setUpzTestSessionManager.setUp,   s?     #:,.
 H			>?r   c                 n     t         j                   fd       } j                  j                  |      S )Nc               3      K   g } D ]C  }|j                  dd        j                  j                  di |}| j                  |       E t	        j
                  |       w)Ntypenotebookr   )
setdefaultrA   create_sessionappendr   Return)sessionsr%   session
kwarg_listr   s      r   co_addz2TestSessionManager.create_sessions.<locals>.co_add5   sd     H$ )!!&*5 6 6 6 @ @@() **X&&s   A A#)r   	coroutinerB   run_sync)r   rP   rQ   s   `` r   create_sessionsz"TestSessionManager.create_sessions4   s0    		' 
	' yy!!&))r   c                 *    | j                  |      d   S )Nr   )rT   )r   r%   s     r   rK   z!TestSessionManager.create_session?   s    ##F+A..r   c                     | j                   | j                  dd      d   | j                  j                  fd      }ddd ddd ddd	t        d
dd}| j                  ||       y )N/path/to/test.ipynbbarr3   r   idc                  (    j                         S N
session_idget_sessionr^   rA   s   r   <lambda>z5TestSessionManager.test_get_session.<locals>.<lambda>E       2>>Z>+P r   r3   namerI   Ar   r,   rZ   re   connectionsr0   r1   )rZ   r3   rI   rH   re   kernelrA   rK   rB   rS   dummy_date_sassertEqualr   modelexpectedr^   rA   s      @@r   test_get_sessionz#TestSessionManager.test_get_sessionB   s    WW((.CQV(WX\]
		""#PQ#1)> M& ! %'()5+1 	)r   c                     | j                   | j                  dd      d   | j                  t              5  | j                  j                  fd       d d d        y # 1 sw Y   y xY w)NrW   foorY   rZ   c                  (    j                         S )N)bad_idr_   ra   s   r   rb   z9TestSessionManager.test_bad_get_session.<locals>.<lambda>Z   s    r~~Z~'H r   rA   rK   assertRaises	TypeErrorrB   rS   r   r^   rA   s    @@r   test_bad_get_sessionz'TestSessionManager.test_bad_get_sessionT   sj    WW((.C38 ) ::>@
y) 	JIIHI	J 	J 	J    A##A,c                    | j                   | j                  dd      j                  j                  d   d          | j	                  t
        j                        5  | j                  j                  fd       d d d        | j                  j                  fd      }| j                  |g        y # 1 sw Y   :xY w)N/path/to/1/test1.ipynbr   rY   ri   rZ   c                  .    j                   d         S )NrZ   r]   r_   )rO   rA   s   r   rb   zATestSessionManager.test_get_session_dead_kernel.<locals>.<lambda>b   s    r~~~'O r   c                  $     j                         S r   list_sessionsrA   s   r   rb   zATestSessionManager.test_get_session_dead_kernel.<locals>.<lambda>d       B,<,<,> r   )
rA   rK   r>   r8   rv   r   	HTTPErrorrB   rS   rl   )r   listedrO   rA   s     @@r   test_get_session_dead_kernelz/TestSessionManager.test_get_session_dead_kernel\   s    WW%%+CQY%Z
))'(*;D*ABs}}- 	QIIOP	Q ##$>?$		Q 	Qs   " B;;Cc                 R   | j                   | j                  dddddddddd	dd
      }| j                  j                  fd      }|d   d   dddd dd dddt        ddd|d   d   ddd dddt        ddd|d   d   dd	ddddt        dddg}| j                  ||       y )Nr|   r   rY   z/path/to/2/test2.pyfile)r3   rH   r   
/path/to/3rr   consoler3   re   rH   r   c                  $     j                         S r   r   r   s   r   rb   z7TestSessionManager.test_list_sessions.<locals>.<lambda>o   s    b.>.>.@ r   r   rZ   rI   rd   rf   r,   rg   )rZ   r3   rH   rI   re   ri      B)rZ   r3   rH   re   ri   r   C)rA   rT   rB   rS   rk   rl   )r   rN   ro   rA   s      @r   test_list_sessionsz%TestSessionManager.test_list_sessionsg   s   WW''-hG*F8T!5)T\]
 99%%&@A a[&0"%=tL##$%1'- a[&-##$%1'- a[&$!##$%1'-5'
P 	8,r   c                 P   | j                   | j                  t        dd      t        dd            }j                  j	                  |d   d   d          | j
                  j                  fd      }|d	   d   dd
d dd ddddt        dddg}| j                  ||       y )Nr|   r   rY   /path/to/2/test2.ipynbr   ri   rZ   c                  $     j                         S r   r   r   s   r   rb   zCTestSessionManager.test_list_sessions_dead_kernel.<locals>.<lambda>   r   r   r   rI   rd   r   r,   rg   rZ   r3   rH   re   rI   ri   )	rA   rT   dictr>   r8   rB   rS   rk   rl   )r   rN   r   ro   rA   s       @r   test_list_sessions_dead_kernelz1TestSessionManager.test_list_sessions_dead_kernel   s    WW''.HE.HE

 	))(1+h*?*EF##$>? qk$'0"%=tL##$%1'-
  	*r   c                    | j                   | j                  dd      d   | j                  j                  fd       | j                  j                  fd      }ddd dd d	d
ddt        ddd}| j                  ||       y )NrW   juliarY   rZ   c                  *    j                   d      S )N/path/to/new_name.ipynb)r3   update_sessionra   s   r   rb   z8TestSessionManager.test_update_session.<locals>.<lambda>   s    2#4#4ZF_#4#` r   c                  (    j                         S r\   r_   ra   s   r   rb   z8TestSessionManager.test_update_session.<locals>.<lambda>   rc   r   r   rI   rd   rf   r   r,   rg   r   rj   rm   s      @@r   test_update_sessionz&TestSessionManager.test_update_session   s    WW((.C3: ) <<@B
		`a		""#PQ#5& )BD Q!&'()5+1
 	)r   c                     | j                   | j                  dd      d   | j                  t              5  | j                  j                  fd       d d d        y # 1 sw Y   y xY w)NrW   irrY   rZ   c                  *    j                   d      S )Nz
test.ipynb)r^   bad_kwr   ra   s   r   rb   z<TestSessionManager.test_bad_update_session.<locals>.<lambda>   s    r'8'8JWc'8'd r   ru   rx   s    @@r   test_bad_update_sessionz*TestSessionManager.test_bad_update_session   si    WW((.C37 ) 99=?
y) 	fIIde	f 	f 	frz   c                    | j                   | j                  t        dd      t        dd      t        dddd            | j                  j	                  fd	       | j                  j	                  fd
      }d   d   ddd dd ddddt
        dddd   d   ddddddt
        dddg}| j                  ||       y )Nr|   r   rY   r   r   rr   r   r   c                  2    j                   d   d         S )Nr   rZ   delete_session)rN   rA   s   r   rb   z8TestSessionManager.test_delete_session.<locals>.<lambda>   s    2#4#4Xa[5F#G r   c                  $     j                         S r   r   r   s   r   rb   z8TestSessionManager.test_delete_session.<locals>.<lambda>   s    "2B2B2D r   r   rZ   rI   rd   rf   r,   rg   r   r   r   )rZ   rH   r3   re   ri   )rA   rT   r   rB   rS   rk   rl   )r   new_sessionsro   rN   rA   s      @@r   test_delete_sessionz&TestSessionManager.test_delete_session   s    WW''.HE.HElYHU

 			GHyy))*DEqk$'0"%=tL##$%1'- qk$'!$##$%1'-
6 	x0r   c                 x   | j                   | j                  dd       | j                  t              5  | j                  j                  fd       d d d        | j                  t        j                        5  | j                  j                  fd       d d d        y # 1 sw Y   PxY w# 1 sw Y   y xY w)NrW   r   rY   c                  (     j                  d      S )N23424)	bad_kwargr   r   s   r   rb   z<TestSessionManager.test_bad_delete_session.<locals>.<lambda>   s    (9(9G(9(L r   c                  (     j                  d      S )Nr   r]   r   r   s   r   rb   z<TestSessionManager.test_bad_delete_session.<locals>.<lambda>   s    (9(9W(9(M r   )rA   rK   rv   rw   rB   rS   r   r   )r   rA   s    @r   test_bad_delete_sessionz*TestSessionManager.test_bad_delete_session   s    WW!6HMy) 	NIILM	Ns}}- 	OIIMN	O 	O	N 	N	O 	Os   B$<B0$B-0B9N)r   r   r   rE   rT   rK   rp   ry   r   r   r   r   r   r   r   r   r   r   r<   r<   *   sD    @	*/*$J	%1-f+6**f$1LOr   r<   N)r9   	functoolsr   unittestr   tornador   r   tornado.ioloopr   sessionmanagerr	   'notebook.services.kernels.kernelmanagerr
   "notebook.services.contents.managerr   notebook._tzr   r   r   r/   rk   r   r<   r   r   r   <module>r      sZ    $    ! + H > *' ' X
$%# %*UO UOr   