a
    W×a  ã                   @   st   d Z ddlZddlmZ ddlm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 G dd	„ d	eƒZdS )
zTests for samba.messaging.é    N)Ú	Messaging)ÚTestCase)Ú	ndr_print)Ú	server_id)Úinteger_typesc                   @   sT   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S )ÚMessagingTestsc                 O   s   t j ¡ |d< t|i |¤ŽS )NZlp_ctx)ÚsambaZtestsZenv_loadparmr   )ÚselfÚargsÚkwargs© r   ú7/usr/lib/python3/dist-packages/samba/tests/messaging.pyÚget_context"   s    zMessagingTests.get_contextc                 C   s>   |   ¡ }dd„ }| |d f¡}|  t|tƒ¡ | ||¡ d S )Nc                   S   s   d S ©Nr   r   r   r   r   Úcallback)   s    z.MessagingTests.test_register.<locals>.callback)r   ÚregisterÚ
assertTrueÚ
isinstancer   Z
deregister)r	   Úxr   Úmsg_typer   r   r   Útest_register&   s
    zMessagingTests.test_registerc                 C   s    |   ¡ }|  t| ¡ tƒ¡ d S r   )r   r   r   Úirpc_all_serversÚlist©r	   r   r   r   r   Útest_all_servers/   s    zMessagingTests.test_all_serversc                 C   s2   |   ¡ }| ¡ D ]}|  t| |j¡tƒ¡ qd S r   )r   r   r   r   Úirpc_servers_bynameÚnamer   )r	   r   r   r   r   r   Útest_by_name3   s    zMessagingTests.test_by_namec                 C   s   |   ¡ }|  t|jd¡ d S )Nz samba.messaging test NONEXISTING)r   ÚassertRaisesÚKeyErrorr   r   r   r   r   Útest_unknown_name8   s    ÿz MessagingTests.test_unknown_namec                 C   s    |   ¡ }|  t|jtjƒ¡ d S r   )r   r   r   r   r   r   r   r   Útest_assign_server_id=   s    z$MessagingTests.test_assign_server_idc                 C   st   |   ¡ }dt dd¡ }| |¡ | |¡}|  t|ƒd¡ |  t|jƒt|d ƒ¡ | 	|¡ |  
t|j|¡ d S )Nzsamba.messaging test-%dé   i@B r   )r   ÚrandomZrandintZirpc_add_namer   ÚassertEqualÚlenr   r   Zirpc_remove_namer   r   )r	   r   r   Z	name_listr   r   r   Útest_add_remove_nameA   s    


ÿ
ÿz#MessagingTests.test_add_remove_namec           	         sð   ddi}ddi}d}d‰ d}|   d¡‰‡ ‡fdd„}ˆ ||f¡}dd„ }|   d	¡}| ||f¡‰ | d|d
¡ | d|d¡ t ¡ }|d dk sž|d dk rÌ|sÌ| d¡ ˆ d¡ t ¡ | dkr†d}q†|  |d d¡ |  |d d¡ d S )NÚcountr   F)r   r"   c                    s"   | d  d7  < ˆ  |ˆ |¡ d S ©Nr'   r"   ©Úsend©Úgot_pingr   ÚsrcÚdata©Zmsg_pongZ
server_ctxr   r   Úping_callbackW   s    z5MessagingTests.test_ping_speed.<locals>.ping_callbackc                 S   s   | d  d7  < d S r(   r   ©Úgot_pongr   r-   r.   r   r   r   Úpong_callback]   s    z5MessagingTests.test_ping_speed.<locals>.pong_callback)r   é   ÚtestingÚtesting2r4   çš™™™™™¹?r"   T)r   r   r*   ÚtimeÚ	loop_oncer$   )	r	   r,   r2   ÚtimeoutÚmsg_pingr0   r3   Ú
client_ctxÚ
start_timer   r/   r   Útest_ping_speedM   s*    



zMessagingTests.test_ping_speedc           
         s   ddi}ddi}d}d‰ d}t  ¡ }|  |df¡‰‡ ‡fdd„}ˆ ||f¡}dd„ }|  d	¡}| ||f¡‰ | |df|d
¡ | d|d¡ t ¡ }	|d dk s®|d dk rÜ|sÜ| d¡ ˆ d¡ t ¡ |	 dkr–d}q–|  |d d¡ |  |d d¡ d S )Nr'   r   Fr"   c                    s"   | d  d7  < ˆ  |ˆ |¡ d S r(   r)   r+   r/   r   r   r0      s    z9MessagingTests.test_pid_defaulting.<locals>.ping_callbackc                 S   s   | d  d7  < d S r(   r   r1   r   r   r   r3   ‡   s    z9MessagingTests.test_pid_defaulting.<locals>.pong_callback)r4   r5   )r"   r6   r4   r7   T)ÚosÚgetpidr   r   r*   r8   r9   r$   )
r	   r,   r2   r:   r;   Úpidr0   r3   r<   r=   r   r/   r   Útest_pid_defaultingv   s,    


z"MessagingTests.test_pid_defaultingN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r    r!   r&   r>   rB   r   r   r   r   r       s   	)r   )Ú__doc__r   Zsamba.messagingr   Zsamba.testsr   r8   Z	samba.ndrr   Zsamba.dcerpcr   r#   r?   Zsamba.compatr   r   r   r   r   r   Ú<module>   s   