
    z%i                     p    d dl Z d dlmZmZ  ej                  ddg      Z G d de j                        Zy)    N)import_helperrequires_resource_wmiwin)required_onc                   R    e Zd Zd Zd Zd Zd Zd Z ed      d        Z	d Z
d	 Zy
)WmiTestsc                 6   t         j                  d      j                  d      }| j                  dt	        |             |d   j                  d      \  }}}| j                  d||d          | j                  d||d          | j                  |d|d          y )Nz)SELECT Version FROM Win32_OperatingSystem    r   =Versionz\d+\.\d+.+$)r   
exec_querysplitassertEquallen	partitionassertRegex)selfrkeqvs        A/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_wmi.pytest_wmi_query_os_versionz"WmiTests.test_wmi_query_os_version   s    OOGHNNtTCF#Q4>>#&2qb!A$'Aqt, 	NAaD1    c                 D    t        d      D ]  }| j                           y N
   )ranger   r   _s     r   test_wmi_query_repeatedz WmiTests.test_wmi_query_repeated   s!    r 	-A**,	-r   c                     	 t         j                  d       | j	                  d       y # t        $ r!}|j                  dz  dk(  rY d }~y Y d }~7d }~ww xY w)Nz.SELECT InvalidColumnName FROM InvalidTableNamel    l     zExpected OSError)r   r   OSErrorwinerrorfail)r   exs     r   test_wmi_query_errorzWmiTests.test_wmi_query_error   sN    	OOLM
 			$%	  	{{Z':5 6	s   ) 	AAAc                 D    t        d      D ]  }| j                           y r   )r    r)   r!   s     r   test_wmi_query_repeated_errorz&WmiTests.test_wmi_query_repeated_error&   s!    r 	(A%%'	(r   c                     | j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY w)Nz0not select, just in case someone tries something)assertRaises
ValueErrorr   r   )r   s    r   test_wmi_query_not_selectz"WmiTests.test_wmi_query_not_select*   s6    z* 	POONO	P 	P 	Ps   5>cpuc                     t        d      D ]5  }| j                  t              5  t        j	                  d       d d d        7 y # 1 sw Y   BxY w)N   zSELECT * FROM CIM_DataFile)r    r-   r%   r   r   r!   s     r   test_wmi_query_overflowz WmiTests.test_wmi_query_overflow/   sL     q 	>A""7+ > <=> >	>> >s   AA	c                 t   t         j                  d      }| j                  |j                  d      |       | j                  |j	                  d      |       t        |j                  d            }	 	 | j                  t        |      d       | j                  dt        |             7# t        $ r Y y w xY w)N:SELECT ProcessId FROM Win32_Process WHERE ProcessId < 1000r   zProcessId=\d+ )r   r   assertFalse
startswithendswithiterr   r   nextr   StopIteration)r   r   its      r   test_wmi_query_multiple_rowsz%WmiTests.test_wmi_query_multiple_rows7   s    OOXYd+Q/D)1-!''$- 	  b+;<  T"X.   		s   38B+ +	B76B7c                    ddl m} d} |d      5 }t        d      D cg c]"  }|j                  t        j
                  |      $ }}|D ]"  }| j                  |j                         d       $ 	 d d d        y c c}w # 1 sw Y   y xY w)Nr   )ThreadPoolExecutorr5          z
ProcessId=)concurrent.futuresr@   r    submitr   r   r   result)r   r@   querypoolr"   taskts          r   test_wmi_query_threadszWmiTests.test_wmi_query_threadsD   s|    9L" 	;dAFrKADKK7KDK ;  \:;	; 	;K	; 	;s   A>'A9)A>9A>>BN)__name__
__module____qualname__r   r#   r)   r+   r/   r   r3   r>   rJ    r   r   r	   r	      s?    2-
&(P
 u> >;r   r	   )unittesttest.supportr   r   import_moduler   TestCaser	   rN   r   r   <module>rS      s7     9 #}""6w?>;x   >;r   