a
    ==ic  ć                   @   sN   d dl mZmZmZ d dlZd dlZd dlZd add ZG dd dej	Z
dS )é    )ŚscopeŚcoreŚ	workspaceNc              	   C   s  |  t ” d” |  t ” d ” d | ”}t tj| ”}t 	|” t 
|”j |  t ” |d ” |  t ” |” t d| d  ” |  t ” |d ” |  t ” |” W d    n1 s¾0    Y  W d    n1 sÜ0    Y  |  t ” d” |  t ” d ” td7 ad S )NŚ znamescope_{}ś/g{®Gįz?é   )ŚassertEqualsr   ŚCurrentNameScopeŚCurrentDeviceScopeŚformatr   ŚDeviceOptionr   ŚGpuDeviceTypeŚDeviceScopeŚ	NameScopeŚtimeŚsleepŚSUCCESS_COUNT)ŚidxZtestobjZ	namescopeŚdsc© r   śi/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/caffe2/python/scope_test.pyŚthread_runner   s    
Lr   c                   @   sL   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S )Ś	TestScopec                 C   s^   |   t ” d” t d”  |   t ” d” W d    n1 s@0    Y  |   t ” d” d S ©Nr   Z
test_scopeztest_scope/)r   r   r	   r   ©Śselfr   r   r   ŚtestNamescopeBasic%   s    .zTestScope.testNamescopeBasicc                 C   s|   |   t ” d” zDt d”& |   t ” d” t W d    n1 sH0    Y  W n tyf   Y n0 |   t ” d” d S r   )r   r   r	   r   Ś	Exceptionr   r   r   r   ŚtestNamescopeAssertion-   s    (z TestScope.testNamescopeAssertionc              	   C   s   |   t ” d” t d”X t ”   |   t ” d” W d    n1 sJ0    Y  |   t ” d” W d    n1 sx0    Y  d S r   )r   r   r	   r   ZEmptyNameScoper   r   r   r   ŚtestEmptyNamescopeBasic9   s
    
.z!TestScope.testEmptyNamescopeBasicc                 C   sl   |   t ” d ” t tjd”}t |”  |   t ” |” W d    n1 sN0    Y  |   t ” d ” d S ©Né	   )r   r   r
   r   r   r   r   r   ©r   r   r   r   r   ŚtestDevicescopeBasicA   s
    .zTestScope.testDevicescopeBasicc              	   C   s“   |   t ” d ” t tjd”}t |”h |   t ” |” t ”   |   t ” d ” W d    n1 sh0    Y  |   t ” |” W d    n1 s0    Y  |   t ” d ” d S r    )	r   r   r
   r   r   r   r   r   ZEmptyDeviceScoper"   r   r   r   ŚtestEmptyDevicescopeBasicJ   s    
..z#TestScope.testEmptyDevicescopeBasicc                 C   s   |   t ” d ” t tjd”}zDt |”& |   t ” |” t W d    n1 sV0    Y  W n tyt   Y n0 |   t ” d ” d S r    )	r   r   r
   r   r   r   r   r   r   r"   r   r   r   ŚtestDevicescopeAssertionU   s    (z"TestScope.testDevicescopeAssertionc              
   C   s>  |   t ” d ” dg}dg}dg}ddg}g d¢}t tjd|d”Ņ |   t ” j|” t tjd|d”z |   t ” j|” t tjd|d”" |   t ” j|” W d    n1 s¾0    Y  |   t ” j|” W d    n1 sī0    Y  |   t ” j|” W d    n1 s 0    Y  |   t ” d ” d S )Nśkey1:value1śkey2:value2śkey3:value3)r&   r'   r(   r   )Ś
extra_info)r   r   r
   r   r   r   r)   )r   Zextra_info1Zextra_info2Zextra_info3Zextra_info_1_2Zextra_info_1_2_3r   r   r   ŚtestTagsc   s"    
’"02zTestScope.testTagsc                 C   sč   |   t ” d” |   t ” d” g }tdD ]}| tjt|| fd” q,|D ]}| 	”  qNt 
d”b |   t ” d” |   t ” d” |D ]}| ”  q|   t ” d” |   t ” d” W d   n1 sĪ0    Y  |   td” dS )zj
        Test that name/device scope are properly local to the thread
        and don't interfere
        r   Né   )ŚtargetŚargsZmasterzmaster/)r   r   r	   r
   ŚrangeŚappendŚ	threadingŚThreadr   Śstartr   Śjoinr   )r   ŚthreadsŚiŚtr   r   r   ŚtestMultiThreaded|   s$    ž


.zTestScope.testMultiThreadedN)Ś__name__Ś
__module__Ś__qualname__r   r   r   r#   r$   r%   r*   r7   r   r   r   r   r   #   s   	r   )Zcaffe2.pythonr   r   r   Zunittestr0   r   r   r   ZTestCaser   r   r   r   r   Ś<module>   s   