
    Ne4                     $   d 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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
 Zd Z G d de      Zej.                  d        Zej2                  j5                  d       G d de             Zy)z#test building messages with Session    N)datetime)mock)ioloop)	ZMQStream)BaseZMQTestCase)jsonutilsessionc                     t        d      )NzI don't work	TypeError)objs    C/usr/lib/python3/dist-packages/jupyter_client/tests/test_session.py_bad_packerr      s    
N
##    c                     t        d      )NzI don't work eitherr   )bytess    r   _bad_unpackerr      s    
)
**r   c                       e Zd Zd Zy)SessionTestCasec                 `    t        j                  |        t        j                         | _        y N)r   setUpssSessionr
   selfs    r   r   zSessionTestCase.setUp   s    d#zz|r   N)__name__
__module____qualname__r    r   r   r   r      s    $r   r   c               #      K   t         j                  j                  t        ddd      5  d ddd       y# 1 sw Y   yxY ww)z.Disable zero-copy optimizations in pyzmq >= 17COPY_THRESHOLD   T)createN)r   patchobjectzmqr!   r   r   no_copy_thresholdr)   #   s;      
		3 0!D		A   s   (A8	AAAr)   c                       e Zd Zd Zd Zd Zd Zd Zej                  j                   ej                         dk(  d      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d Zd Zd Zy)TestSessionc                    | j                   j                  d      }t        dj                               }t        |j	                               }| j                  ||       | j                  t        |d   t                     | j                  t        |d   t                     | j                  t        |d   t                     | j                  t        |d   t                     | j                  t        |d   t                     | j                  t        |d   t                     | j                  |d   d   d       | j                  |d   d       y	)
zmessage formatexecutez5header parent_header metadata content msg_type msg_idcontentmetadataheaderparent_headermsg_idmsg_typeN)
r
   msgsetsplitkeysassertEqual
assertTrue
isinstancedictstr)r   r4   thekeysss       r   test_msgzTestSession.test_msg,   s   lly)MSSUV
OG$
3y>489
3z?D9:
3x=$78
3#7>?
3x=#67
3z?C89Xz2I>Z)4r   c                    | j                   j                  dt        dd            }| j                   j                  |d      }| j                   j	                  |      \  }}| j                   j                  |      }| j                  |d   d       | j                  |d	   |d	          | j                  |d
   |d
          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  t        |d   d         t        |d   d                y )Nr-   
   g?)abr.      fooidentr   r2   r3   r0   r.   r1   r/   rC   )r
   r4   r;   	serializefeed_identitiesdeserializer8   type)r   r4   msg_listrG   new_msgs        r   test_serializezTestSession.test_serialize;   sA   lly$s2CD<<))#V)<,,66x@x,,**84q6**CM:,c*o>*CM:+S^<133GH,c*o>gi056WY=OPS=T8UVr   c                     | j                  | j                  j                  t               | j                  | j                  j                  t
        j                         y r   )assertIsInstancer
   keyr   authhmacHMACr   s    r   test_default_securezTestSession.test_default_secureJ   s:    dll..6dll//;r   c           
      "
   t        j                         }|j                  t         j                        }|j                  t         j                        }|j	                  d       |j                  d       | j                  j                  dt        d            }| j                  j                  ||ddg       | j                  j                  |j                               \  }}| j                  j                  |      }| j                  |d	   d       | j                  |d
   |d
          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   dg       |d   }|d   }	| j                  j                  |	d
<   |d   }
|d   }|	d    | j                  j                  |d ||
|	|ddg       | j                  j                  |j                               \  }}| j                  j                  |      }| j                  |d	   d       | j                  |d
   |	d
          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   dg       | j                  j                  |	d
<   | j                  j                  ||ddg       | j                  j                  |      \  }}| j                  |d	   d       | j                  |d
   |	d
          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          | j                  |d   dg       | j!                  t"              5  | j                  j                  ||ddg       d d d        t%        t'        j(                  d            }| j!                  t*              5  | j                  j                  ||d|d d d   g       d d d        |j-                          |j-                          |j/                          y # 1 sw Y   xY w# 1 sw Y   FxY w)Ninproc://testr-   rA   rB   rD   rE   s   bar)rG   buffersr   r2   r3   r0   r.   r1   r/   rY   )r.   parentr0   r/   rG   rY   r$         )r(   ContextsocketPAIRbindconnectr
   r4   r;   sendrI   recv_multipartrJ   r8   r2   recvassertRaisesr   
memoryviewosurandom
ValueErrorcloseterm)r   ctxABr4   rG   rL   rM   r.   r0   rZ   r/   bufs                r   	test_sendzTestSession.test_sendN   s   kkmJJsxx JJsxx 				/"lly$*=!SA,,66q7G7G7IJx,,**84q6**CM:,c*o>*CM:+S^<133GH,c*o>+fX6i.X<<..x_%z?zH 	 		
 ,,66q7G7G7IJx,,**84q6**F8,<=,c*o>*CM:+S^<,c*o>133GH+fX6<<..x!SA**1-wq6**F8,<=,c*o>*CM:+S^<,c*o>133GH+fX6 y) 	ALLaFQC@	A B(z* 	HLLaFS1XJG	H 	
			
	A 	A
	H 	Hs   =!S9'T9TTc                 H   | j                   }| j                  |j                  t        j                  u        | j                  |j
                  t        j                  u        | j                  |j                  t        j                  j                  dd             t        j                         }| j                  |j                  t        j                  j                  dd             | j                  t        t        j                  d       | j                  t        t        j                  d       t        t!        j"                               }t        j                  d|      }| j                  |j                   |       | j                  |j                  d       y)	z$initialization arguments for SessionUSERusernamehipackunpackcarrot)rs   r
   N)r
   r9   rv   r   default_packerrx   default_unpackerr8   rs   rg   environgetr   re   r   r<   uuiduuid4)r   r>   us      r   	test_argszTestSession.test_args   s   LL""3"334B$7$778RZZ^^FJ%GHJJLRZZ^^FJ%GH)RZZd;)RZZ=

JJ!4A&X.r   PyPyzTest fails on PyPy)reasonc                    | j                  t        j                  t        j                        \  }}| j                  }d|_        t        j                  d      }t        ||       |j                  |dd      }| j                  |d   t        j                  u        |j                  |dd      }| j                  t        |d   t        j                               t        j                  d	d      }|j                  |d|gd
      }|d   }| j                  t        |t        j                               | j                  t        j                   |j"                  d       ~|j#                  d       y)ztest tracking messagesr$   F)make_current)io_loophello)tracktrackerTs   hi there)rY   r   g?N)create_bound_pairr(   r_   r
   copy_thresholdr   IOLoopr   rb   r9   r   DONEr:   MessageTrackerMessagere   NotDonewait)r   rB   rC   r>   loopr4   Mts           r   test_trackingzTestSession.test_tracking   s    %%chh91LL}}%0!T"ffQuf-I"''12ffQtf,
3y>33E3EFGKK40ffQ!Df9	N
1c&8&89:#++qvvs3	q	r   c                     t               }t        d      D ]F  }| j                  j                  d      }|d   }| j	                  ||v       |j                  |       H y)z%test that messages receive unique idsi   testr2   N)r5   ranger
   
msg_headerr9   add)r   idsihr2   s        r   test_unique_msg_idszTestSession.test_unique_msg_ids   sU    eu 	A''/Ax[FOOF#-.GGFO		r   c                 h    t        dt                     }| j                  j                  d|       y)z"scrub the front for zmq IDENTITIESwhoda)codestuffr-   rD   N)r;   r'   r
   r4   )r   r.   s     r   test_feed_identitiesz TestSession.test_feed_identities   s'    G684G4r   c                    t        j                         }|j                  }|j                  }| j	                  |j                  d      |       t        j                         }|j                  }|j                  }| j	                  |j                  d      |       d|_        |j                  }|j                  }| j	                  |j                  d      |       t        j                  d      }| j	                  |j                  |j                  j                  d             | j	                  d|j                         y )Nasciizsomething elser   r	   s   stuff)r   r   bsessionr
   r8   encode)r   r
   bsuss       r   test_session_idzTestSession.test_session_id   s    **,__7+R0**,__7+R0*__7+R0**W-))7??+A+A'+JK7#3#34r   c                     t        j                  d      }t        d      D ]/  }|j                  t	        j
                         j                         1 | j                  t        |j                        d       y )Nr   digest_history_size   )
r   r   r   _add_digestr~   r   r   r8   lendigest_historyr   r
   r   s      r   test_zero_digest_historyz$TestSession.test_zero_digest_history   sX    **3r 	4A

 2 23	4W334a8r   c                    t        j                  d      }t        d      D ]/  }|j                  t	        j
                         j                         1 | j                  t        |j                        dk(         |j                  t	        j
                         j                         | j                  t        |j                        dk(         t        d      D ]/  }|j                  t	        j
                         j                         1 | j                  t        |j                        dk(         |j                  t	        j
                         j                         | j                  t        |j                        dk(         y )Nd   r   [   	   )
r   r   r   r   r~   r   r   r9   r   r   r   s      r   test_cull_digest_historyz$TestSession.test_cull_digest_history   s   **5s 	4A

 2 23	4G223s:;DJJL../G223r9:q 	4A

 2 23	4G223s:;DJJL../G223r9:r   c                     	 t        j                  t               | j                  d       y # t        $ r@}| j                  dt        |             | j                  dt        |             Y d }~y d }~ww xY w)Nru   Should have raised ValueErrorcould not serialize
don't work)r   r   r   failri   assertInr<   r   es     r   test_bad_packzTestSession.test_bad_pack   s\    	7JJK(
 II56	  	0MM/Q8MM,A//	0   . 	A76A22A7c                     	 t        j                  t               | j                  d       y # t        $ r@}| j                  dt        |             | j                  dt        |             Y d }~y d }~ww xY w)Nrw   r   could not handle outputdon't work either)r   r   r   r   ri   r   r<   r   s     r   test_bad_unpackzTestSession.test_bad_unpack   s]    	7JJm,
 II56	  	7MM3SV<MM-s1v66	7r   c                     	 t        j                  t        dz          | j                  d       y # t        $ r@}| j                  dt        |             | j                  dt        |             Y d }~y d }~ww xY w)Nz._bad_packerpackerr   r   r   r   r   r   r   ri   r   r<   r   s     r   test_bad_packerzTestSession.test_bad_packer  sa    	7JJh78
 II56	  	0MM/Q8MM,A//	0   1 	A:6A55A:c                     	 t        j                  t        dz          | j                  d       y # t        $ r@}| j                  dt        |             | j                  dt        |             Y d }~y d }~ww xY w)Nz._bad_unpacker)unpackerr   r   r   r   r   s     r   test_bad_unpackerzTestSession.test_bad_unpacker  sc    	7JJ+; ;<
 II56	  	7MM3SV<MM-s1v66	7r   c                     | j                  t              5  t        j                  d        d d d        y # 1 sw Y   y xY w)Nc                      y)N   r!   )rC   s    r   <lambda>z0TestSession.test_bad_roundtrip.<locals>.<lambda>  s    r   rw   )re   ri   r   r   r   s    r   test_bad_roundtripzTestSession.test_bad_roundtrip  s1    z* 	+JJk*	+ 	+ 	+s	   7A c                 b   t        t        j                               }t        t        j                               }|j                  d      }|j                  d|||d         }|j	                  |      }|j                  |j                  |      d         }t        |d   d   t              sJ | j                  |d   |d          | j                  |d   |d          | j                  |d   |d          t        |d   d	   t              sJ t        |d
   d	   t              sJ t        |d   d	   t              sJ t        |d
   d	   t              sJ | j                  |d   t        j                  |d                | j                  |d   t        j                  |d                y )N)r   r4   r0   )r.   r/   rZ   r$   dater1   r.   r   r/   )r;   r   utcnowr4   rH   rJ   rI   r:   r   r8   r<   r   extract_dates)r   r
   r.   r/   pr4   smsgmsg2s           r   _datetime_testzTestSession._datetime_test  s   %"))+&KKkk%8AhKkX  %""7#:#:4#@#CD$x.0(;;;XX7_-tO/DE_-tO/DE#i.-x888#j/#.999$y/#.444$z*3/555Y)?)?Y)PQY)?)?Y)PQr   c                 :    | j                  | j                         y r   )r   r
   r   s    r   test_datetimeszTestSession.test_datetimes-  s    DLL)r   c                 R    t        j                  d      }| j                  |       y )Npickler   )r   r   r   )r   r
   s     r   test_datetimes_picklez!TestSession.test_datetimes_pickle0  s    **H-G$r   c                     t        j                  d      t        j                  j                  fd      }| j                  |       y )Nmsgpackc                 *    j                  | d      S )NF)raw)unpackb)ro   r   s    r   r   z4TestSession.test_datetimes_msgpack.<locals>.<lambda>9  s    ws> r   )rv   rx   )pytestimportorskipr   r   packbr   )r   r
   r   s     @r   test_datetimes_msgpackz"TestSession.test_datetimes_msgpack4  s;    %%i0**>
 	G$r   c                    t        j                         }|j                  t         j                        }|j                  t         j                        }|j	                  d       |j                  d       | j                  j                  dt        d            }dD cg c]   }| j                  j                  ||         " }}| j                  j                  ||d       | j                  j                  |j                               \  }}| j                  j                  |      }	| j                  |d	   d       | j                  |	d
   |d
          | j                  |	d   |d          | j                  |	d   |d          | j                  |	d   |d          | j                  |	d   |d          |j                          |j                          |j!                          y c c}w )NrW   r-   rA   rX   rD   )r0   r1   r/   r.   rE   rF   r   r3   r0   r1   r.   r/   )r(   r]   r^   r_   r`   ra   r
   r4   r;   rv   send_rawrI   rc   rJ   r8   rj   rk   )
r   rl   rm   rn   r4   partrL   rG   new_msg_listrM   s
             r   test_send_rawzTestSession.test_send_raw=  s   kkmJJsxx JJsxx 				/"lly$*= K
 LLc$i(
 
 	a8"ll::1;K;K;MN|,,**<8q6*,c*o>*CM:133GH+S^<,c*o>				
#
s    %G*c                 d   | j                   }|j                  d       |j                         }|j                   |j                   k(  sJ |j                  |j                  k(  sJ |j                  |j                  usJ d}|j                  |       ||j                  v sJ ||j                  vsJ y )Ninitialabcdef)r
   r   cloner   )r   r>   s2digests       r   
test_clonezTestSession.test_cloneX  s    LL	i WWYzzQYY&&&  A$4$4444  (8(8888	f)))))R.....r   N)r   r   r    r?   rN   rU   rp   r   r   markskipifplatformpython_implementationr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r+   r+   *   s    5W<HT/" [[6668FBK_` a&5
5*9;7777+R$*%%6
/r   r+   )__doc__rS   rg   r   r~   r   unittestr   r   r(   tornador   zmq.eventloop.zmqstreamr   	zmq.testsr   jupyter_clientr   r
   r   r   r   r   fixturer)   r   usefixturesr+   r!   r   r   <module>r     s    )  	      
  - % # ($+$o $   ,-w// w/ .w/r   