
    Ef%                        d dl Z d dlmZmZ d dlZd dlmZmZ d dlm	Z	m
Z
  e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d Zd Zd Zd Zd Z d Z!d Z"d Z#d  Z$ G d! d"e	      Z%y)#    N)fixtureraises)contextsocket)BaseZMQTestCaseterm_contextT)autousec                 (    | j                  d        y )Nc                  T    t        t        j                  j                         d      S )N
   )timeout)r   zmqContextinstance     ;/usr/lib/python3/dist-packages/zmq/tests/test_decorators.py<lambda>z'term_context_instance.<locals>.<lambda>   s    ckk.B.B.Db!Q r   )addfinalizer)requests    r   term_context_instancer      s    QRr   c                  2    t               d        }  |         y )Nc                 F    t        | t        j                        sJ |        y N
isinstancer   r   ctxs    r   testztest_ctx.<locals>.test   s    #s{{+0S0+r   r   r   s    r   test_ctxr"      s    Y1 1 	Fr   c                  <    t               dd       }  | ddd       y )Nc                 n    t        |t        j                        sJ |       | dk(  sJ |du sJ |dk(  sJ y )N*   Tmockr   )foobarr   bazs       r   fztest_ctx_orig_args.<locals>.f   s?    #s{{+0S0+byyd{{f}}r   r%   Tr&   )r)   r   r    r*   s    r   test_ctx_orig_argsr,      s$    Y  b$Fr   c                  4    t        d      d        }  |         y )Nmyctxc                 F    t        | t        j                        sJ |        y r   r   r.   s    r   r   z!test_ctx_arg_naming.<locals>.test'       %-4u4-r   r    r!   s    r   test_ctx_arg_namingr2   &   s     W5 5 	Fr   c                  6    t        dd      d        }  |         y )Nr      c                     t        | t        j                        sJ |        | j                  dk(  sJ | j                         y Nr4   r   r   r   
IO_THREADSr   s    r   r   ztest_ctx_args.<locals>.test/   6    #s{{+0S0+~~"2CNN2"r   r    r!   s    r   test_ctx_argsr:   .   s"    UA3 3 	Fr   c                  8    t        dd      d        }  |         y )Nr   r4   )
io_threadsc                     t        | t        j                        sJ |        | j                  dk(  sJ | j                         y r6   r7   r   s    r   r   z test_ctx_arg_kwarg.<locals>.test8   r9   r   r    r!   s    r   test_ctx_arg_kwargr>   7   s"    Uq!3 "3 	Fr   c                  6    t        d      d        }  |         y )Nr.   namec                 F    t        | t        j                        sJ |        y r   r   r0   s    r   r   z test_ctx_kw_naming.<locals>.testA   r1   r   r    r!   s    r   test_ctx_kw_namingrC   @   s     '5 5 	Fr   c                  8    t        dd      d        }  |         y )Nr   r4   rA   r<   c                     t        | t        j                        sJ |        | j                  dk(  sJ | j                         y r6   r7   r   s    r   r   ztest_ctx_kwargs.<locals>.testI   r9   r   r    r!   s    r   test_ctx_kwargsrG   H   s"    %A&3 '3 	Fr   c                  :    t        dd      dd       }  |         y )Nr   r4   rE   c                     t        | t        j                        sJ |        | j                  dk(  sJ | j                         y r6   r7   r   s    r   r   z%test_ctx_kwargs_default.<locals>.testR   r9   r   r   r    r!   s    r   test_ctx_kwargs_defaultrJ   Q   s"    %A&3 '3 	Fr   c                  ~    t        d      d        } t        t              5   |         d d d        y # 1 sw Y   y xY w)Nr   r@   c                      y r   r   )
other_names    r   r   z#test_ctx_keyword_miss.<locals>.test[       r   r   r   	TypeErrorr!   s    r   test_ctx_keyword_missrQ   Z   s=    %  
		   s   3<c                      t        d      d        } t        t              5   | d       d d d        y # 1 sw Y   y xY w)Nr   r@   c                      y r   r   r   s    r   r   z#test_ctx_multi_assign.<locals>.testd   rN   r   r&   rO   r!   s    r   test_ctx_multi_assignrT   c   s?    %  
		 V  s   	4=c                  b   d d dt               fd       } t        j                  | d      }t        j                  | d      }|j                          |j                          |j	                          |j	                          d   J        d   J        d   d   usJ        y )Nr'   r(   c                 R    t        |t        j                        sJ |       || <   y r   r   )keyr   results     r   r*   ztest_ctx_reinit.<locals>.fo   s%    #s{{+0S0+sr   r'   targetargsr(   r'   r(   )r   	threadingThreadstartjoinr*   foo_tbar_trY   s      @r   test_ctx_reinitrf   l   s    $'FY  AH5EAH5E	KKM	KKM	JJL	JJL%=$,f,$%=$,f,$%=u-5v5-r   c                  ,   t               t               d               } t        d      D cg c]  }t        j                  |        }}|D cg c]  }|j	                          c} |D cg c]  }|j                          c} y c c}w c c}w c c}w )Nc           	         t        | t        j                        sJ |        t        |t        j                        sJ |       t        t	        t        t        | |g                  dk(  s J t	        t        t        | |g                   y )N   )r   r   r   lensetmapidrV   s     r   r*   z test_ctx_multi_thread.<locals>.f   sn     #s{{+0S0+#s{{+0S0+3s2Sz*+,1K3s2Sz7J3KK1r      r\   )r   ranger_   r`   ra   rb   r*   ithreadsts       r   test_ctx_multi_threadru      sy    YYL  L 498<ayq)<G< 1QWWY !QVVX = s   BB,Bc                  j    t               t        t        j                        d               }  |         y )Nc                     t        | t        j                        sJ |        t        |t        j                        sJ |       |j                  t        j
                  k(  sJ y r   )r   r   r   SockettypePUBr   skts     r   r   ztest_ctx_skt.<locals>.test   sL     #s{{+0S0+#szz*/C/*xx377"""r   r   r   r   rz   r!   s    r   test_ctx_sktr~      s-    YCGG_#  #
 	Fr   c                  l    t               t        dt        j                        d               }  |         y )Nmysktc                     t        |t        j                        sJ |       t        | t        j                        sJ |        |j                  t        j
                  k(  sJ y r   r   r   rx   r   ry   rz   r   r   s     r   r   ztest_skt_name.<locals>.test   L     %,3e3,#s{{+0S0+zzSWW$$$r   r}   r!   s    r   test_skt_namer      s0    YGSWW%  %
 	Fr   c                  n    t               t        t        j                  d      d               }  |         y )Nr   r@   c                     t        |t        j                        sJ |       t        | t        j                        sJ |        |j                  t        j
                  k(  sJ y r   r   r   s     r   r   ztest_skt_kwarg.<locals>.test   r   r   r}   r!   s    r   test_skt_kwargr      s0    YCGG'"% # %
 	Fr   c                  r    t        d      t        dt        j                  d      d               }  |         y )Nr   r|   )context_namec                     t        |t        j                        sJ |       t        | t        j                        sJ |        |j                  t        j
                  k(  sJ y r   r   r{   s     r   r   ztest_ctx_skt_name.<locals>.test   sL     #szz*/C/*#s{{+0S0+xx377"""r   r}   r!   s    r   test_ctx_skt_namer      s4    U^E377/# 0 #
 	Fr   c                  P    t        t        j                        d        }  |         y )Nc                     t        | t        j                        sJ |        | j                  t        j                  j                         u sJ | j                  t        j                  k(  sJ y r   )r   r   rx   r   r   r   ry   rz   )r|   s    r   r   z"test_skt_default_ctx.<locals>.test   sP    #szz*/C/*{{ckk224444xx377"""r   )r   r   rz   r!   s    r   test_skt_default_ctxr      s#    CGG_# #
 	Fr   c                     d d dt        t        j                        fd       } t        j                  | d      }t        j                  | d      }|j                          |j                          |j                          |j                          d   J        d   J        d   d   usJ        y )NrV   c                 R    t        |t        j                        sJ |       || <   y r   )r   r   rx   )rX   r|   rY   s     r   r*   ztest_skt_reinit.<locals>.f   s%    #szz*/C/*sr   rZ   r[   r^   r'   r(   )r   r   rz   r_   r`   ra   rb   rc   s      @r   test_skt_reinitr      s    $'FCGG_ 
 AH5EAH5E	KKM	KKM	JJL	JJL%=$,f,$%=$,f,$%=u-5v5-r   c                  (   d d dd d ddt               t        t        j                        fd              } t	        j
                  | d      }t	        j
                  | d      }|j                          |j                          |j                          |j                          d   d   J        d   d	   J        d
   d   J        d
   d	   J        d   d   d
   d   usJ        d   d	   d
   d	   usJ        y )Nr{   rV   c                     t        |t        j                        sJ |       t        |t        j                        sJ |       ||    d<   ||    d<   y )Nr   r|   )r   r   r   rx   )rX   r   r|   rY   s      r   r*   ztest_ctx_skt_reinit.<locals>.f   sS     #s{{+0S0+#szz*/C/* sE sEr   rZ   r[   r^   r'   r   r|   r(   )r   r   r   rz   r_   r`   ra   rb   rc   s      @r   test_ctx_skt_reinitr      s7   !$/T8RSFYCGG_!  ! AH5EAH5E	KKM	KKM	JJL	JJL%=+3V3+%=+3V3+%=+3V3+%=+3V3+%=ve}U';;CVC;%=ve}U';;CVC;r   c                      t               t        d      d               } t        t              5   |         d d d        y # 1 sw Y   y xY w)Nr   c                      y r   r   r   s     r   r*   ztest_skt_type_miss.<locals>.f   s     	r   )r   r   r   rP   r+   s    r   test_skt_type_missr      sF    YG_   
		 	  s	   ?Ac                      t        t        j                        t        t        j                        t        t        j                        d                      }  |         y )Nc                    t        | t        j                        sJ |        t        |t        j                        sJ |       t        |t        j                        sJ |       | j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ | j                  t        j                  k(  sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ y r   )
r   r   rx   r   r   r   ry   rz   SUBPUSHpubsubpushs      r   r   ztest_multi_skts.<locals>.test
  s     #szz*/C/*#szz*/C/*$

+1T1+{{ckk224444{{ckk224444||s{{335555xx377"""xx377"""yyCHH$$$r   )r   r   rz   r   r   r!   s    r   test_multi_sktsr   	  sD    CGG_CGG_CHH%   % 	Fr   c                      t               t        t        j                        t        t        j                        t        t        j
                        d                             }  |         y )Nc                 &   t        | t        j                        sJ |        t        |t        j                        sJ |       t        |t        j                        sJ |       t        |t        j                        sJ |       |j                  | u sJ |j                  | u sJ |j                  | u sJ |j
                  t        j                  k(  sJ |j
                  t        j                  k(  sJ |j
                  t        j                  k(  sJ y r   )	r   r   r   rx   r   ry   rz   r   r   )r   r   r   r   s       r   r   z(test_multi_skts_single_ctx.<locals>.test  s    
 #s{{+0S0+#szz*/C/*#szz*/C/*$

+1T1+{{c!!!{{c!!!||s"""xx377"""xx377"""yyCHH$$$r   )r   r   r   rz   r   r   r!   s    r   test_multi_skts_single_ctxr     sN    YCGG_CGG_CHH%    % 	Fr   c                      t        dt        j                        t        dt        j                        t        dt        j                        d                      }  |         y )Nr'   r(   r)   c                    t        | t        j                        sJ |        t        |t        j                        sJ |       t        |t        j                        sJ |       | j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ | j                  t        j                  k(  sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ y r   )
r   r   rx   r   r   r   ry   r   r   rz   )r'   r(   r)   s      r   r   z'test_multi_skts_with_name.<locals>.test4  s     #szz*/C/*#szz*/C/*#szz*/C/*{{ckk224444{{ckk224444{{ckk224444xx388###xx377"""xx377"""r   )r   r   r   r   rz   r!   s    r   test_multi_skts_with_namer   3  sL    E388E377E377#   # 	Fr   c                  <    t               d        }  |        dk(  sJ y )Nc                 F    t        | t        j                        sJ |        y)N	somethingr   r   s    r   r*   ztest_func_return.<locals>.fH  s    #s{{+0S0+r   r   r    r+   s    r   test_func_returnr   G  s(    Y  3+r   c                     t        t        j                        t        t        j                        t        t        j                        d                      } t        d      D cg c]  }t        j                  |        }}|D cg c]  }|j                          c} |D cg c]  }|j                          c} y c c}w c c}w c c}w )Nc           
         t        | t        j                        sJ |        t        |t        j                        sJ |       t        |t        j                        sJ |       | j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ | j                  t        j                  k(  sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ t        t        t        t        | ||g                  dk(  sJ y )N   )r   r   rx   r   r   r   ry   rz   r   r   rj   rk   rl   rm   r   s      r   r*   z test_skt_multi_thread.<locals>.fQ  s    #szz*/C/*#szz*/C/*$

+1T1+{{ckk224444{{ckk224444||s{{335555xx377"""xx377"""yyCHH$$$3s2S$/012a777r   rn   ro   )
r   r   rz   r   r   rp   r_   r`   ra   rb   rq   s       r   test_skt_multi_threadr   P  s    CGG_CGG_CHH8   8 498<ayq)<G< 1QWWY !QVVX = s   %CC&Cc                       e Zd Z e        eej                         eej                        dd                     Zd Z	d Z
y)TestMethodDecoratorsc                    t        | t              sJ |        t        |t        j                        sJ |       t        |t        j                        sJ |       t        |t        j                        sJ |       |dk(  sJ |j
                  |u sJ |j
                  |u sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ y )Nr(   )	r   r   r   r   rx   r   ry   rz   r   )selfr   r   r   r'   s        r   multi_skts_methodz&TestMethodDecorators.multi_skts_methodi  s     $ 45;t;5#s{{+0S0+#szz*/C/*#szz*/C/*e||{{c!!!{{c!!!xx377"""xx377"""r   c                 $    | j                          y r   )r   )r   s    r   test_multi_skts_methodz+TestMethodDecorators.test_multi_skts_methody  s     r   c                     t        t        j                        t        t        j                        dd              } |dd       y )Nc                    t        |t        j                        sJ |       t        |t        j                        sJ |       | dk(  sJ |dk(  sJ |j                  t        j                  j                         u sJ |j                  t        j                  j                         u sJ |j                  t        j                  k(  sJ |j                  t        j                  k(  sJ y )Nr&   fake)	r   r   rx   r   r   r   ry   rz   r   )r'   r   r   r(   s       r   r*   zATestMethodDecorators.test_multi_skts_method_other_args.<locals>.f}  s     c3::.33.c3::.33.&= =&= =;;#++"6"6"8888;;#++"6"6"888888sww&&&88sww&&&r   r&   r   r^   r   )r   r   rz   r   )r   r*   s     r   !test_multi_skts_method_other_argsz6TestMethodDecorators.test_multi_skts_method_other_args|  s8    			' 
 
	' 	
&fr   Nr^   )__name__
__module____qualname__r   r   r   rz   r   r   r   r   r   r   r   r   r   h  s@    YCGG_CGG_#   #!r   r   )&r_   pytestr   r   r   zmq.decoratorsr   r   	zmq.testsr   r   r   r"   r,   r2   r:   r>   rC   rG   rJ   rQ   rT   rf   ru   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s     " 
 * 3 	S S6, &6.D:(,( 0$? $r   