
    Ib(                        d 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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
Zej.                  j0                  Z G d d      Z G d de      Z G d de      Zy# e$ r dZY @w xY w)z"Test the sessions web service API.    N)partial)SkipTest)url_path_join)NotebookTestBaseassert_http_error)new_notebook)write)AsyncMultiKernelManagerTFc                   \    e Zd ZdZd ZddZd Zd ZddZd Z	d	 Z
d
 Zd Zd Zd Zd Zy)
SessionAPIzWrapper for notebook API calls.c                     || _         y N)request)selfr   s     T/usr/lib/python3/dist-packages/notebook/services/sessions/tests/test_sessions_api.py__init__zSessionAPI.__init__   s	        Nc                     | j                  |t        d|      |      }d|j                  cxk  rdk  rn n	 |j                         d   |_        |j                          |S #  Y xY w)Nzapi/sessions)datai  iX  message)r   r   status_codejsonreasonraise_for_status)r   verbpathbodyresponses        r   _reqzSessionAPI._req   sm    <<nd3$   @ (&&,,"*--/)"< 	!!#	s   A" "A&c                 &    | j                  dd      S )NGET r   )r   s    r   listzSessionAPI.list,       yy##r   c                 &    | j                  d|      S )Nr!   r#   r   ids     r   getzSessionAPI.get/   r%   r   c                 `    t        j                  ||||dd      }| j                  dd|      S )Nnamer(   )r   typekernelPOSTr"   r   dumpsr   )r   r   r-   kernel_name	kernel_idr   s         r   createzSessionAPI.create2   s:    zz4#'.9,5&78 9 yyT**r   c                 b    t        j                  d|idddd      }| j                  dd|      S )Nr   pythonfoor+   )notebookr.   r/   r"   r0   )r   r   r   s      r   create_deprecatedzSessionAPI.create_deprecated9   s;    zz~.6,1&34 5 yyT**r   c                 V    t        j                  d|i      }| j                  d||      S )Nr   PATCHr0   r   r(   r   r   s       r   modify_pathzSessionAPI.modify_path?   '    zz64.)yy"d++r   c                 Z    t        j                  dd|ii      }| j                  d||      S )Nr8   r   r;   r0   r<   s       r   modify_path_deprecatedz!SessionAPI.modify_path_deprecatedC   s,    zz:~67yy"d++r   c                 V    t        j                  d|i      }| j                  d||      S )Nr-   r;   r0   )r   r(   r-   r   s       r   modify_typezSessionAPI.modify_typeG   r>   r   c                 Z    t        j                  dd|ii      }| j                  d||      S )Nr.   r,   r;   r0   )r   r(   r2   r   s       r   modify_kernel_namezSessionAPI.modify_kernel_nameK   s-    zz8fk%:;<yy"d++r   c                 \    t        j                  d|ddi      }| j                  d||      S )Nr.   r7   )r(   r,   r;   r0   )r   r(   r3   r   s       r   modify_kernel_idzSessionAPI.modify_kernel_idO   s-    zz8Iu%EFGyy"d++r   c                 &    | j                  d|      S )NDELETEr#   r'   s     r   deletezSessionAPI.deleteT   s    yy2&&r   r   )r8   r6   N)__name__
__module____qualname____doc__r   r   r$   r)   r4   r9   r=   r@   rB   rD   rF   rI    r   r   r   r      sA    )$$++,,,,,
'r   r   c                   X    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y)SessionAPITestz!Test the sessions web service APIc                      j                   }t        |d      }	 t        j                  |        j                  t        t        j                  |d             t        t        |d      dd      5 }t               }t        ||d	       d d d        t         j                         _         j                   fd
       }y # t        $ r(}|j
                  t
        j                  k7  r Y d }~d }~ww xY w# 1 sw Y   lxY w)Nr7   T)ignore_errorsz	nb1.ipynbwzutf-8)encoding   )versionc                      j                   j                         j                         D ]   } j                   j                  | d          " t	        j
                  d       y )Nr(   g?)sess_apir$   r   rI   timesleep)sessionr   s    r   cleanup_sessionsz.SessionAPITest.setUp.<locals>.cleanup_sessionsl   sK    ==--/446 4$$WT]34 JJsOr   )notebook_dirpjoinosmkdirOSErrorerrnoEEXIST
addCleanupr   shutilrmtreeopenr   r	   r   r   rX   )r   nbdirsubdirefnbr\   s   `      r   setUpzSessionAPITest.setUpZ   s    !!ue$	HHV
 	vTJK%,cGD 	$B"a#	$ #4<<0	
	 

	  	ww%,,& '		$ 	$s#   C 3C7	C4C//C47D c                    | j                   j                         j                         }| j                  t	        |      d       | j                   j                  d      }| j                  |j                  d       |j                         }| j                  d|       | j                  |d   d       | j                  |d   d       | j                  |j                  d   | j                   d	|d           | j                   j                         j                         }| j                  ||g       |d   }| j                   j                  |      j                         }| j                  ||       y )
Nr   foo/nb1.ipynb   r(   r   r-   r8   Locationapi/sessions/)rX   r$   r   assertEquallenr4   r   assertInheaders
url_prefixr)   )r   sessionsresp
newsessionsidgots         r   test_createzSessionAPITest.test_createy   s5   ==%%',,.X*}}##O4))3/YY[
dJ'F+_=F+Z8j1doo5FmT^_cTdSe3fg==%%',,.J<0 mm$))+j)r   c                     | j                   j                  dd      }| j                  |j                  d       |j	                         }| j                  |d   d       | j                  |d   d       y )Nz
foo/nb1.pyfiler-   rp   r   r-   rX   r4   rs   r   r   r   ry   rz   s      r   test_create_file_sessionz'SessionAPITest.test_create_file_session   sf    }}##Lv#>))3/YY[
F+\:F+V4r   c                     | j                   j                  dd      }| j                  |j                  d       |j	                         }| j                  |d   d       | j                  |d   d       y )Nz
foo/abc123consoler   rp   r   r-   r   r   s      r   test_create_console_sessionz*SessionAPITest.test_create_console_session   sf    }}##Ly#A))3/YY[
F+\:F+Y7r   c                    | j                   j                  d      }| j                  |j                  d       |j	                         }| j                  |d   d       | j                  |d   d       | j                  |d   d   d       y )Nro   rp   r   r-   r8   )rX   r9   rs   r   r   r   s      r   test_create_deprecatedz%SessionAPITest.test_create_deprecated   s{    }}..?))3/YY[
F+_=F+Z8J/7Ir   c                    | j                  dd      }|j                          |j                         }| j                  j	                  d|d         }| j                  |j                  d       |j                         }| j                  d|       | j                  |d   d       | j                  |d   d   |d          | j                  |j                  d	   | j                   d
|d           | j                  j                         j                         }| j                  ||g       |d   }| j                  j                  |      j                         }| j                  ||       y )Nr/   api/kernelsro   r(   )r3   rp   r   r.   rq   rr   )r   r   r   rX   r4   rs   r   ru   rv   rw   r$   r)   )r   rr.   ry   rz   rx   r{   r|   s           r   test_create_with_kernel_idz)SessionAPITest.test_create_with_kernel_id   s?   LL/	}}##Ovd|#L))3/YY[
dJ'F+_=H-d3VD\Bj1doo5FmT^_cTdSe3fg==%%',,.J<0 mm$))+j)r   c                    | j                   j                  d      j                         }|d   }| j                   j                  |      }| j	                  |j
                  d       | j                   j                         j                         }| j	                  |g        t        d      5  | j                   j                  |       d d d        y # 1 sw Y   y xY w)Nro   r(      i  )	rX   r4   r   rI   rs   r   r$   r   r)   )r   rz   r{   ry   rx   s        r   test_deletezSessionAPITest.test_delete   s    ]]))/:??A
}}##C())3/==%%',,.2&s# 	#MMc"	# 	# 	#s   +CCc                    | j                   j                  d      j                         }|d   }| j                   j                  |d      j                         }| j	                  |d   |       | j	                  |d   d       y )Nro   r(   	nb2.ipynbr   )rX   r4   r   r=   rs   r   rz   r{   changeds       r   test_modify_pathzSessionAPITest.test_modify_path   sp    ]]))/:??A
--++C=BBD,+6r   c                    | j                   j                  d      j                         }|d   }| j                   j                  |d      j                         }| j	                  |d   |       | j	                  |d   d   d       y )Nro   r(   r   r8   r   )rX   r4   r   r@   rs   r   s       r   test_modify_path_deprecatedz*SessionAPITest.test_modify_path_deprecated   sv    ]]))/:??A
--66sKHMMO,,V4kBr   c                    | j                   j                  d      j                         }|d   }| j                   j                  |d      j                         }| j	                  |d   |       | j	                  |d   d       y )Nro   r(   r   r-   )rX   r4   r   rB   rs   r   s       r   test_modify_typezSessionAPITest.test_modify_type   sp    ]]))/:??A
--++C;@@B,)4r   c                    | j                   j                  d      j                         }|d   }| j                   j                  ||d   d         j                         }| j	                  |d   |       | j	                  |d   |d          | j	                  |d   |d          | j                  |d   d   |d   d          | j                  dd      }|j                          |j                         }|d   j                  d	       |D cg c]  }|j                  d	       c} | j	                  ||d   g       y c c}w )
Nro   r(   r.   r,   r   r-   r!   r   last_activity)	rX   r4   r   rD   rs   assertNotEqualr   r   pop)r   beforer{   afterr   kernel_listks          r   test_modify_kernel_namez&SessionAPITest.test_modify_kernel_name   s&   %%o6;;=Tl00fX6Fv6NOTTVtc*vv7vv7E(OD16(3CD3IJ LL.	ffhhO,*57Q!%%
 7uX&78 	8s   D>c                    | j                   j                  d      j                         }|d   }| j                  dd      }|j	                          |j                         }| j                   j                  ||d         j                         }| j                  |d   |       | j                  |d   |d          | j                  |d   |d          | j                  |d   d   |d   d          | j                  |d   d   |d          | j                  dd      }|j	                          |j                         }|j                  d	       |D cg c]  }|j                  d	       c} | j                  ||g       y c c}w )
Nro   r(   r/   r   r   r-   r.   r!   r   )	rX   r4   r   r   r   rF   rs   r   r   )r   r   r{   r   r.   r   r   r   s           r   test_modify_kernel_idz$SessionAPITest.test_modify_kernel_id   s]   %%o6;;=Tl LL/	 ..sF4LAFFHtc*vv7vv7E(OD16(3CD3IJx.t= LL.	ffh

?#*57Q!%%
 7vh/ 	8s   FN)rJ   rK   rL   rM   rm   r}   r   r   r   r   r   r   r   r   r   r   rN   r   r   rP   rP   X   sC    +>*(58J*,#7C59$0r   rP   c                   @     e Zd ZdZe fd       Ze fd       Z xZS )AsyncSessionAPITestzETest the sessions web service API using the AsyncMappingKernelManagerc                 D    t         st        d      t        |           y )NzCAsyncSessionAPITest tests skipped due to down-level jupyter_client!)async_testing_enabledr   supersetup_class)cls	__class__s    r   r   zAsyncSessionAPITest.setup_class  s    $`aar   c                 T    t         |          }t        r|j                  dg       |S )Nzd--NotebookApp.kernel_manager_class=notebook.services.kernels.kernelmanager.AsyncMappingKernelManager)r   get_argvr   extend)r   argvr   s     r   r   zAsyncSessionAPITest.get_argv  s5    w! !KK \ ] ^ r   )rJ   rK   rL   rM   classmethodr   r   __classcell__)r   s   @r   r   r     s,    O 
 	 	r   r   )rM   rb   	functoolsr   r_   r   re   rY   unittestr   notebook.utilsr   notebook.tests.launchnotebookr   r   nbformat.v4r   nbformatr	   jupyter_clientr
   r   ImportErrorr   joinr^   r   rP   r   rN   r   r   <module>r      s    (   	     ( M $ "6  	;' ;'|p0% p0f. o  "!"s   A= =BB