a
    Db&                     @   s   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 deZe ZeeZG dd deZG dd deZdS )zTests for the session manager.    )partial)TestCase)genweb)IOLoop   )SessionManager)MappingKernelManager)ContentsManager)utcnow	isoformatc                   @   s   e Zd ZdddZdS )DummyKernelpythonc                 C   s
   || _ d S Nkernel_name)selfr    r   Slib/python3.9/site-packages/notebook/services/sessions/tests/test_sessionmanager.py__init__   s    zDummyKernel.__init__N)r   )__name__
__module____qualname__r   r   r   r   r   r      s   r   c                       s<   e Zd ZdZ fddZdd Zddd	ZdddZ  ZS )DummyMKMzFMappingKernelManager interface that doesn't start kernels, for testingc                    s    t  j|i | td| _d S )NZABCDEFGHIJK)superr   iter
id_letters)r   argskwargs	__class__r   r   r      s    zDummyMKM.__init__c                 C   s
   t | jS r   )nextr   r   r   r   r   _new_id   s    zDummyMKM._new_idNr   c                 K   s:   |p
|   }t|d }| j|< d| j|< t|_d|_|S )Nr   r   idle)r#   r   _kernelsZ_kernel_connections
dummy_datelast_activityexecution_state)r   	kernel_idpathr   r   kr   r   r   start_kernel   s    
zDummyMKM.start_kernelFc                 C   s   | j |= d S r   )r%   )r   r)   Znowr   r   r   shutdown_kernel&   s    zDummyMKM.shutdown_kernel)NNr   )F)	r   r   r   __doc__r   r#   r,   r-   __classcell__r   r   r   r   r      s
   
r   c                   @   sl   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )TestSessionManagerc                 C   s4   t t t d| _t | _| t| jjdd d S )N)kernel_managerZcontents_managerT)Zall_fds)	r   r   r
   smr   loopZ
addCleanupr   closer"   r   r   r   setUp,   s    zTestSessionManager.setUpc                    s    t j fdd}j|S )Nc                  3   sF   g }  D ].}| dd jjf i |V }| | qt| d S )Ntypenotebook)
setdefaultr2   create_sessionappendr   ZReturn)sessionsr   session
kwarg_listr   r   r   co_add5   s    z2TestSessionManager.create_sessions.<locals>.co_add)r   	coroutiner3   run_sync)r   r>   r?   r   r=   r   create_sessions4   s    z"TestSessionManager.create_sessionsc                 K   s   |  |d S )Nr   )rB   )r   r   r   r   r   r9   ?   s    z!TestSessionManager.create_sessionc                    sb   | j | jdddd  | j fdd} ddd ddd d	dd
tddd}| || d S )N/path/to/test.ipynbZbarr*   r   idc                      s   j  dS N
session_idZget_sessionr   rH   r2   r   r   <lambda>E       z5TestSessionManager.test_get_session.<locals>.<lambda>r*   namer7   Ar   r$   rE   rN   Zconnectionsr'   r(   )rE   r*   r7   r6   rN   kernelr2   r9   r3   rA   dummy_date_sassertEqualr   Zmodelexpectedr   rJ   r   test_get_sessionB   s     z#TestSessionManager.test_get_sessionc                    s\   | j | jdddd  | t& | j fdd W d    n1 sN0    Y  d S )NrC   foorD   rE   c                      s   j  dS )N)Zbad_idrI   r   rJ   r   r   rK   Z   rL   z9TestSessionManager.test_bad_get_session.<locals>.<lambda>r2   r9   assertRaises	TypeErrorr3   rA   r"   r   rJ   r   test_bad_get_sessionT   s    z'TestSessionManager.test_bad_get_sessionc                    s   | j | jddd j d d  | tj& | j fdd W d    n1 s`0    Y  | jfdd}| 	|g  d S )	N/path/to/1/test1.ipynbr   rD   rQ   rE   c                      s   j  d dS )NrE   rG   rI   r   r<   r2   r   r   rK   b   rL   zATestSessionManager.test_get_session_dead_kernel.<locals>.<lambda>c                      s      S r   Zlist_sessionsr   r2   r   r   rK   d   rL   )
r2   r9   r1   r-   rZ   r   	HTTPErrorr3   rA   rT   )r   listedr   r^   r   test_get_session_dead_kernel\   s    4z/TestSessionManager.test_get_session_dead_kernelc                    s   | j  | tdddtddddtddd	dd
}| j fd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}| || d S )Nr]   r   rD   z/path/to/2/test2.pyfile)r*   r6   r   
/path/to/3rX   consoler*   rN   r6   r   c                      s      S r   r_   r   r`   r   r   rK   o   rL   z7TestSessionManager.test_list_sessions.<locals>.<lambda>r   rE   r7   rM   rO   r$   rP   )rE   r*   r6   r7   rN   rQ      B)rE   r*   r6   rN   rQ   r   Cr2   rB   dictr3   rA   rS   rT   )r   r;   rV   r   r`   r   test_list_sessionsg   sV    



(z%TestSessionManager.test_list_sessionsc                    s   | j  | tdddtddd} j|d d d  | j fdd	}|d
 d ddd dd ddddtdddg}| || d S )Nr]   r   rD   /path/to/2/test2.ipynbr   rQ   rE   c                      s      S r   r_   r   r`   r   r   rK      rL   zCTestSessionManager.test_list_sessions_dead_kernel.<locals>.<lambda>rh   r7   rM   ri   r$   rP   rE   r*   r6   rN   r7   rQ   )	r2   rB   rl   r1   r-   r3   rA   rS   rT   )r   r;   rb   rV   r   r`   r   test_list_sessions_dead_kernel   s*    


z1TestSessionManager.test_list_sessions_dead_kernelc                    sx   | j | jdddd  | j fdd | j fdd} dd	d dd d
dddtddd}| || d S )NrC   ZjuliarD   rE   c                      s   j  ddS )N/path/to/new_name.ipynb)r*   Zupdate_sessionr   rJ   r   r   rK      rL   z8TestSessionManager.test_update_session.<locals>.<lambda>c                      s   j  dS rF   rI   r   rJ   r   r   rK      rL   rq   r7   rM   rO   r   r$   rP   ro   rR   rU   r   rJ   r   test_update_session   s*    z&TestSessionManager.test_update_sessionc                    s\   | j | jdddd  | t& | j fdd W d    n1 sN0    Y  d S )NrC   ZirrD   rE   c                      s   j  ddS )Nz
test.ipynb)rH   Zbad_kwrr   r   rJ   r   r   rK      rL   z<TestSessionManager.test_bad_update_session.<locals>.<lambda>rY   r"   r   rJ   r   test_bad_update_session   s    z*TestSessionManager.test_bad_update_sessionc                    s   | j | tdddtdddtddddd | j fd	d
 | jfd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}| || d S )Nr]   r   rD   rn   re   rX   rf   rg   c                      s     d d S )Nrh   rE   Zdelete_sessionr   r;   r2   r   r   rK      rL   z8TestSessionManager.test_delete_session.<locals>.<lambda>c                      s      S r   r_   r   r`   r   r   rK      rL   r   rE   r7   rM   rO   r$   rP   ro   r   rj   )rE   r6   r*   rN   rQ   rk   )r   Znew_sessionsrV   r   rv   r   test_delete_session   sB    



z&TestSessionManager.test_delete_sessionc                    s   | j  | jddd | t$ | j fdd W d    n1 sH0    Y  | tj$ | j fdd W d    n1 s0    Y  d S )NrC   r   rD   c                      s    j ddS )N23424)Z	bad_kwargru   r   r`   r   r   rK      rL   z<TestSessionManager.test_bad_delete_session.<locals>.<lambda>c                      s    j ddS )Nrx   rG   ru   r   r`   r   r   rK      rL   )r2   r9   rZ   r[   r3   rA   r   ra   r"   r   r`   r   test_bad_delete_session   s    2z*TestSessionManager.test_bad_delete_sessionN)r   r   r   r5   rB   r9   rW   r\   rc   rm   rp   rs   rt   rw   ry   r   r   r   r   r0   *   s   3&r0   N)r.   	functoolsr   Zunittestr   Ztornador   r   Ztornado.ioloopr   Zsessionmanagerr   Z'notebook.services.kernels.kernelmanagerr	   Z"notebook.services.contents.managerr
   Znotebook._tzr   r   objectr   r&   rS   r   r0   r   r   r   r   <module>   s   