o
    •ºé`‹
  ã                   @   sª   d dl Z d dlmZmZmZ d dlmZmZ d dlm	Z	m
Z
 ddlmZ e jje dd�Ze jd	d
„ ƒZdd„ Zedddd�Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Únew_method_callÚMessageTypeÚDBusAddress)Úmessage_busÚ	MatchRule)Úopen_dbus_routerÚProxyé   )Úhave_session_buszTests require DBus session bus)Úreasonc                  c   s8   � t dd��} | V  W d   ƒ d S 1 sw   Y  d S )NÚSESSION)Úbus)r   )Úconn© r   úA/usr/lib/python3/dist-packages/jeepney/io/tests/test_threading.pyÚrouter   s   €"ÿr   c                 C   s   | j  d¡sJ ‚d S )Nú:)Úunique_nameÚ
startswith)r   r   r   r   Útest_connect   s   r   zorg.freedesktop.DBusz/org/freedesktop/DBuszorg.freedesktop.DBus.Peer)Úbus_nameÚobject_pathÚ	interfacec                 C   s<   t tdƒ}| j|dd�}|jjtjksJ ‚|jdksJ ‚d S )NÚPingé   ©Útimeoutr   )r   Úbus_peerÚsend_and_get_replyÚheaderÚmessage_typer   Úmethod_returnÚbody)r   Ú	ping_callÚreplyr   r   r   Útest_send_and_get_reply   s   
r%   c                 C   sH   t t| dd�}d}| |¡}|dv sJ ‚|j|dd�\}|du s"J ‚d S )Nr   r   z+io.gitlab.takluyver.jeepney.examples.Server>   ©r	   ©é   é   )Ú_timeoutT)r   r   ÚRequestNameÚNameHasOwner)r   ÚproxyÚnameÚresÚ	has_ownerr   r   r   Ú
test_proxy!   s   
r1   c                 C   s¦   t t| ƒ}d}tdtjtjdtjd�}| d|¡ | |¡ |  |¡�&}| 	|¡\}|dks0J ‚|j
dd�}|j|d	| jfksAJ ‚W d   ƒ d S 1 sLw   Y  d S )
Nz7io.gitlab.takluyver.jeepney.tests.threading_test_filterÚsignalÚNameOwnerChanged)ÚtypeÚsenderr   ÚmemberÚpathr   r	   g       @r   Ú )r   r   r   r   r   r   Úadd_arg_conditionÚAddMatchÚfilterr+   Úgetr"   r   )r   r   r.   Ú
match_ruleÚqueuer/   Ú
signal_msgr   r   r   Útest_filter*   s"   
û
"ûr@   c                 C   sœ   t | dƒ}tddd��}|j|dd�}W d   ƒ n1 sw   Y  |jjtju s+J ‚|jd  d¡�}| 	¡ d	ks<J ‚W d   ƒ d S 1 sGw   Y  d S )
NÚGetFDr   T©r   Ú
enable_fdsr   r   r   zw+Úreadme)
r   r   r   r   r    r   r!   r"   Úto_fileÚread)Úrespond_with_fdÚ
getfd_callr   r$   Úfr   r   r   Útest_recv_fdB   s   
ÿ"ÿrJ   c                 C   sz   | \}}t |dd|fƒ}tddd��}|j|dd�}W d   ƒ n1 s$w   Y  |jjtju s2J ‚|jd |ks;J ‚d S )	NÚReadFDÚhr   TrB   r   r   r   )r   r   r   r   r    r   r!   r"   )Útemp_file_and_contentsÚread_from_fdÚ	temp_fileÚdataÚreadfd_callr   r$   r   r   r   Útest_send_fdL   s   ÿrR   )ÚpytestÚjeepneyr   r   r   Újeepney.bus_messagesr   r   Újeepney.io.threadingr   r   Úutilsr
   ÚmarkÚskipifÚ
pytestmarkÚfixturer   r   r   r%   r1   r@   rJ   rR   r   r   r   r   Ú<module>   s*    ÿ
ý	
