
    Ef"                         d dl Z d dlmZ d dlmZ 	 d dlmZmZmZm	Z	m
Z
mZmZmZ d dlmZmZ dZ G d d	e      Zy# e$ r dZY w xY w)
    N)TestCase)SkipTest)IDENTITYPOLLINPOLLOUTPULLPUSHREPREQzmq_version_info)CffiTFc                   f    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d Zd Zy)TestCFFIBackendc                 &    t         st        d      y )NzCFFI not available)have_ffi_backendr   )selfs    =/usr/lib/python3/dist-packages/zmq/tests/test_cffi_backend.pysetUpzTestCFFIBackend.setUp   s    /00      c                 >    t               }|d   t        dd      v sJ y )Nr         )r   range)r   versions     r   test_zmq_version_infoz%TestCFFIBackend.test_zmq_version_info   s"    "$qzU1b\)))r   c                     t        j                         }|t        j                  k7  sJ dt        j                  |      k(  sJ y Nr   )r   zmq_ctx_newr   NULLzmq_ctx_destroy)r   ctxs     r   test_zmq_ctx_new_destroyz(TestCFFIBackend.test_zmq_ctx_new_destroy"   s6    mmochhA%%c****r   c                    t        j                         }t        j                  |t              }|t        j
                  k7  sJ t        j
                  |k7  sJ dt        j                  |      k(  sJ dt        j                  |      k(  sJ y r   )r   r   
zmq_socketr	   r   r    	zmq_closer!   r   r"   sockets      r   test_zmq_socket_open_closez*TestCFFIBackend.test_zmq_socket_open_close(   so    mmoc4(chhxx6!!!AKK''''A%%c****r   c                    t        j                         }t        j                  |t              }t	        j
                  dd      }t        j                  |t        t	        j                  d|      d      }|dk(  sJ |t        j                  k7  sJ t        j                  |k7  sJ dt        j                  |      k(  sJ dt        j                  |      k(  sJ y )Nchar[3]   zmqvoid*   r   )r   r   r%   r	   r   newzmq_setsockoptr   castr    r&   r!   )r   r"   r(   identityrets        r   test_zmq_setsockoptz#TestCFFIBackend.test_zmq_setsockopt1   s    mmoc4(779f-vx'81LaPaxxchhxx6!!!AKK''''A%%c****r   c                    t        j                         }t        j                  |t              }t	        j
                  dd      }t        j                  |t        t	        j                  d|      d      }|dk(  sJ t	        j
                  dd      }t	        j
                  d      }t        j                  |t        t	        j                  d|      |      }|dk(  sJ t	        j                  t	        j                  d|            dd	 d
k(  sJ t	        j                  t	        j                  d|            d	d dk(  sJ t	        j                  t	        j                  d|            dd dk(  sJ |t        j                  k7  sJ t        j                  |k7  sJ dt        j                  |      k(  sJ dt        j                  |      k(  sJ y )Nchar[]r,   r-   r.   r   zsize_t*r+   char*      zr      m   q)r   r   r%   r	   r   r/   r0   r   r1   zmq_getsockoptstringr    r&   r!   )r   r"   r(   r2   r3   
option_lenoptions          r   test_zmq_getsockoptz#TestCFFIBackend.test_zmq_getsockopt>   sp   mmoc4(778V,vx'81LaPaxxWWY*
#vx'61JJWaxxzz#((7F34Qq9TAAAzz#((7F34Qq9TAAAzz#((7F34Qq9TAAAchhxx6!!!AKK''''A%%c****r   c                 J   t        j                         }t        j                  |d      }dt        j                  |d      k(  sJ |t        j
                  k7  sJ t        j
                  |k7  sJ dt        j                  |      k(  sJ dt        j                  |      k(  sJ y )N   r      tcp://*:4444)r   r   r%   zmq_bindr   r    r&   r!   r'   s      r   test_zmq_bindzTestCFFIBackend.test_zmq_bindS   s    mmoc1%AJJv7777chhxx6!!!AKK''''A%%c****r   c                    t        j                         }t        j                  |t              }t        j                  |t              }dt        j
                  |d      k(  sJ dt        j                  |d      k(  sJ |t        j                  k7  sJ t        j                  |k7  sJ t        j                  |k7  sJ dt        j                  |      k(  sJ dt        j                  |      k(  sJ dt        j                  |      k(  sJ y )Nr   rC   s   tcp://127.0.0.1:4444)r   r   r%   r	   r   rD   zmq_connectr   r    r&   r!   )r   r"   socket1socket2s       r   test_zmq_bind_connectz%TestCFFIBackend.test_zmq_bind_connect]   s    mmo,,sD),,sD)AJJw8888AMM'+BCCCCchhxx7"""xx7"""AKK((((AKK((((A%%c****r   c                     t        j                  d      }t         j                  |k7  sJ dt        j                  |      k(  sJ dt        j
                  |      k(  sJ y )N
zmq_msg_t*r   )r   r/   r    r   zmq_msg_initzmq_msg_closer   zmq_msgs     r   test_zmq_msg_init_closez'TestCFFIBackend.test_zmq_msg_init_closel   sP    '','xx7"""ANN7++++AOOG,,,,r   c                     t        j                  d      }t         j                  |k7  sJ dt        j                  |d      k(  sJ dt        j
                  |      k(  sJ y )NrL   r   
   )r   r/   r    r   zmq_msg_init_sizerN   rO   s     r   test_zmq_msg_init_sizez&TestCFFIBackend.test_zmq_msg_init_sizes   sT    '','xx7"""A''4444AOOG,,,,r   c                 T   t        j                  d      }t        j                  dd      }dt        j                  |t        j                  d|      dt         j
                  t         j
                        k(  sJ t         j
                  |k7  sJ dt        j                  |      k(  sJ y )NrL   char[5]   Hellor   r-      )r   r/   r   zmq_msg_init_datar1   r    rN   )r   rP   messages      r   test_zmq_msg_init_dataz&TestCFFIBackend.test_zmq_msg_init_dataz   s    '',''')X.A''SXXgw/CHHchh
 
 	
 
 xx7"""AOOG,,,,r   c                    t        j                  d      }t        j                  dd      }dt        j                  |t        j                  d|      dt         j
                  t         j
                        k(  sJ t        j                  |      }t         j
                  |k7  sJ t        j                  t        j                  d|            dk(  sJ dt        j                  |      k(  sJ y )NrL   r6   rX   r   r-   rY   r7   )	r   r/   r   rZ   r1   r    zmq_msg_datar=   rN   )r   rP   r[   datas       r   test_zmq_msg_dataz!TestCFFIBackend.test_zmq_msg_data   s    '','''(H-A''SXXgw/CHHchh
 
 	
 
 ~~g&xx7"""zz#((7D12h>>>AOOG,,,,r   c                 B   t        j                         }t        j                  |t              }t        j                  |t              }dt        j
                  |d      k(  sJ dt        j                  |d      k(  sJ t        j                  d       t        j                  d      }t        j                  dd      }t        j                  |t        j                  d|      t        j                  d	d
      t        j                  t        j                         d
t        j                  ||d      k(  sJ dt        j                  |      k(  sJ t        j                   |      dk(  sJ t        j                   |      dk(  sJ t        j"                  |      dk(  sJ y )Nr   s   tcp://*:7777s   tcp://127.0.0.1:7777皙?rL   rW   rX   r-   size_trY   )r   r   r%   r   r
   rD   rG   timesleepr   r/   rZ   r1   r    zmq_msg_sendrN   r&   r!   )r   r"   senderreceiverrP   r[   s         r   test_zmq_sendzTestCFFIBackend.test_zmq_send   s?   mmoc3'<<S)AJJx9999AMM&*ABBBB

3'',''')X.	HHWg&HHXq!HHHH	
 ANN7FA6666AOOG,,,,{{6"a'''{{8$)))  %***r   c                 V   t        j                         }t        j                  |t              }t        j                  |t              }dt        j
                  |d      k(  sJ dt        j                  |d      k(  sJ t        j                  d       t        j                  d      }t        j                  dd      }t        j                  |t        j                  d|      t        j                  d	d
      t        j                  t        j                         t        j                  d      }t        j                  |       d
t        j                  ||d      k(  sJ d
t        j                   ||d      k(  sJ d
t        j"                  |      k(  sJ dt        j$                  t        j&                  |      t        j"                  |            d d  k(  sJ t        j(                  |      dk(  sJ t        j(                  |      dk(  sJ t        j*                  |      dk(  sJ y )Nr   s   tcp://*:2222s   tcp://127.0.0.1:2222rb   rL   rW   rX   r-   rc   rY   )r   r   r%   r   r
   rD   rG   rd   re   r   r/   rZ   r1   r    rM   rf   zmq_msg_recvzmq_msg_sizebufferr^   r&   r!   )r   r"   rg   rh   rP   r[   zmq_msg2s          r   test_zmq_recvzTestCFFIBackend.test_zmq_recv   s   mmoc3'<<S)AJJx9999AMM&*ABBBB

3'',''')X.	HHWg&HHXq!HHHH	
 77<(	x ANN7FA6666ANN8Xq9999ANN8,,,,zz!..2ANN84LMaPQ	
Q {{6"a'''{{8$)))  %***r   c           	      
   t        j                         }t        j                  |t              }t        j                  |t              }t        j
                  |d      }t        j                  |d      }t        j                  d      }t        j                  dd      }t        j                  |t        j                  d|      t        j                  dd      t        j                  t        j                         t        j                  d	      }||_        d
|_        t        t        z  |_        d
|_        t        j$                  t        j                  d
d
      }	|	d
k(  sJ t        j$                  |dd
      }	|	d
k(  sJ t        j&                  ||d
      }	t)        t        j*                  t        j,                  t        j.                                            |	dk(  sJ t1        j2                  d       t        j$                  |dd
      }	|	dk(  sJ t5        |j"                        t        z  sJ t5        |j"                        t        z  rJ t        j                  d      }
t        j6                  |
       t        j8                  |
|d
      }|dk(  sJ dt        j:                  |
      k(  sJ dt        j<                  t        j>                  |
      t        j:                  |
            d d  k(  sJ t        j                  d	      }||_        d
|_        t        t        z  |_        d
|_        t        j$                  |dd
      }	|	d
k(  sJ t        j                  d      }t        j                  dd      }t        j                  |t        j                  d|      t        j                  dd      t        j                  t        j                         dt        j&                  ||d
      k(  sJ t1        j2                  d       d
t        j$                  |dd
      k  sJ t5        |j"                        t        z  sJ dt        j8                  |
|d
      k(  sJ dt        j:                  |
      k(  sJ dt        j<                  t        j>                  |
      t5        t        j:                  |
                  d d  k(  sJ d
t        j@                  |      k(  sJ d
t        j@                  |      k(  sJ d
t        jB                  |      k(  sJ d
t        jD                  |      k(  sJ d
t        jD                  |
      k(  sJ d
t        jD                  |      k(  sJ y )Ns   tcp://*:3333s   tcp://127.0.0.1:3333rL   rW   rX   r-   rc   rY   zzmq_pollitem_t*r   r8   g?zchar[11]s   Hello Againr   )#r   r   r%   r   r
   rD   rG   r   r/   rZ   r1   r    r(   fdr   r   eventsreventszmq_pollrf   printr=   zmq_strerror	zmq_errnord   re   intrM   rk   rl   rm   r^   r&   r!   rN   )r   r"   rg   rh   r1r2rP   r[   receiver_pollitemr3   rn   ret_recvsender_pollitemzmq_msg_againmessage_agains                  r   test_zmq_pollzTestCFFIBackend.test_zmq_poll   sJ   mmoc3'<<S)ZZ/2]]6#:;'',''')X.	HHWg&HHXq!HHHH	
  GG$56#+  #)G#3 $%!jj1a(axxjj*Aq1axxnnWfa0cjj678axx

3jj*Aq1axx$,,-666(001G;;;77<(	x >>(Ha81}}ANN8,,,,zz!..2ANN84LMaPQ	
Q ''"34!'!''!1"#jj!Q/axx-
N;	HHWm,HHXr"HHHH	
 Q^^M8Q????

3AJJ15555?**+f444Q^^Hfa8888Q^^H----zz!..2Cx8P4QRSTUV	
V AKK''''AKK))))A%%c****AOOG,,,,AOOH----AOOM2222r   N)__name__
__module____qualname__r   r   r#   r)   r4   r@   rE   rJ   rQ   rU   r\   r`   ri   ro   r    r   r   r   r      sO    1*
++++*++--	--+8"+H]3r   r   )rd   unittestr   	zmq.testsr   zmq.backend.cffir   r   r   r   r	   r
   r   r   zmq.backend.cffi._cffir   r   r   ImportErrorr   r   r   r   <module>r      sR      	 	 	 .
W3h W3	  s   < AA