403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/psutil/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/psutil/tests/__pycache__/test_windows.cpython-311.pyc
�

�bic.���h�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!erIesGej"��5ej#d��ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddd��n#1swxYwYerddl(m)Z)e
j*j+Z+ej,ed��ej,ed��ej,eoed��Gd�de��������Z-d�Z.e/fd�Z0Gd�de-��Z1Gd �d!e-��Z2Gd"�d#e-��Z3Gd$�d%e-��Z4Gd&�d'e-��Z5ej,ed��Gd(�d)e����Z6ej,ed��Gd*�d+e����Z7ej,ed��Gd,�d-e����Z8e9d.krdd/l:m;Z;e;e<��dSdS)0zWindows specific tests.�N)�WINDOWS)�FileNotFoundError)�which)�super)�APPVEYOR)�GITHUB_ACTIONS)�HAS_BATTERY)�IS_64BIT)�PY3)�PYPY)�TOLERANCE_DISK_USAGE)�TOLERANCE_SYS_MEM)�PsutilTestCase)�mock)�retry_on_failure)�sh)�spawn_testproc)�	terminate�ignore)�convert_oserrorzWINDOWS onlyzpywin32 not available on PYPYzpywin32 broken on GITHUB + PY2c��eZdZdS)�WindowsTestCaseN)�__name__�
__module__�__qualname__���;/usr/lib/python3/dist-packages/psutil/tests/test_windows.pyrr;s������
	�Drrc�v�td��stjd���dd|zz}t|��S)z�Currently not used, but avalable just in case. Usage:

    >>> powershell(
        "Get-CIMInstance Win32_PageFileUsage | Select AllocatedBaseSize")
    zpowershell.exezpowershell.exe not availablez?powershell.exe -ExecutionPolicy Bypass -NoLogo -NonInteractive z,-NoProfile -WindowStyle Hidden -Command "%s")r�unittest�SkipTestr)�cmd�cmdlines  r�
powershellr$CsK���!�"�"�@��� >�?�?�?�I�6��<�	=���g�;�;�rc�T��td|�d|�������}d�|���dd������}��<d|vr-t	�fd�|���D����S�|��S|S)z�Currently not used, but avalable just in case. Usage:

    >>> wmic("Win32_OperatingSystem", "FreePhysicalMemory")
    2134124534
    z
wmic path z get ��N�,c�&��g|]
}�|����Srr)�.0�x�	converters  �r�
<listcomp>zwmic.<locals>.<listcomp>[s!���=�=�=�1�)�)�A�,�,�=�=�=r)r�strip�join�
splitlines�tuple�split)�path�whatr,�out�datas  `  r�wmicr7Qs����
�"�d�d�d�D�D�
1�
2�
2�
8�
8�
:�
:�C�
�7�7�3�>�>�#�#�A�B�B�'�(�(�.�.�0�0�D����$�;�;��=�=�=�=��
�
���=�=�=�>�>�>��9�T�?�?�"��rc�n�eZdZejdejvd��d���Zd�Zd�Z	d�Z
d�Zd�Zd	S)
�TestCpuAPIs�NUMBER_OF_PROCESSORSz-NUMBER_OF_PROCESSORS env var is not availablec��ttjd��}|�|t	j����dS)Nr:)�int�os�environ�assertEqual�psutil�	cpu_count)�self�num_cpuss  r�&test_cpu_count_vs_NUMBER_OF_PROCESSORSz2TestCpuAPIs.test_cpu_count_vs_NUMBER_OF_PROCESSORSis>��
�r�z�"8�9�:�:������6�#3�#5�#5�6�6�6�6�6rc��tj��d}tj��}|�||��dS)N�)�win32api�
GetSystemInfor@rAr?�rB�	sys_value�psutil_values   r�test_cpu_count_vs_GetSystemInfoz+TestCpuAPIs.test_cpu_count_vs_GetSystemInfoqsA���*�,�,�Q�/�	��'�)�)������L�1�1�1�1�1rc���tj��}td�|���D����}|�tj��|��dS)Nc3�$K�|]}|jV��dS�N)�NumberOfLogicalProcessors�r*�procs  r�	<genexpr>z<TestCpuAPIs.test_cpu_count_logical_vs_wmi.<locals>.<genexpr>zs9����5�5���2�5�5�5�5�5�5r��wmi�WMI�sum�Win32_Processorr?r@rA)rB�w�procss   r�test_cpu_count_logical_vs_wmiz)TestCpuAPIs.test_cpu_count_logical_vs_wmixsi���G�I�I���5�5� !� 1� 1� 3� 3�5�5�5�5�5������)�+�+�U�3�3�3�3�3rc���tj��}td�|���D����}|�tjd���|��dS)Nc3�$K�|]}|jV��dSrO)�
NumberOfCoresrQs  rrSz:TestCpuAPIs.test_cpu_count_cores_vs_wmi.<locals>.<genexpr>�s%����G�G�4�D�&�G�G�G�G�G�GrF)�logicalrT)rBrY�coress   r�test_cpu_count_cores_vs_wmiz'TestCpuAPIs.test_cpu_count_cores_vs_wmi~s_���G�I�I���G�G�1�3D�3D�3F�3F�G�G�G�G�G������)�%�8�8�8�%�@�@�@�@�@rc��|�tj��ttjd�������dS)NT)�percpu)r?r@rA�len�	cpu_times�rBs r�test_cpu_count_vs_cpu_timesz'TestCpuAPIs.test_cpu_count_vs_cpu_times�sH������)�+�+��V�-�T�:�:�:�;�;�	=�	=�	=�	=�	=rc�$�tj��}|���d}|�|jtj��j��|�|jtj��j	��dS�Nr)
rUrVrXr?�CurrentClockSpeedr@�cpu_freq�current�
MaxClockSpeed�max)rBrYrRs   r�
test_cpu_freqzTestCpuAPIs.test_cpu_freq�sq���G�I�I��� � �"�"�1�%������/���1B�1B�1J�K�K�K�����+�V�_�->�->�-B�C�C�C�C�CrN)
rrrr �skipIfr=r>rDrLr[rargrorrrr9r9gs��������X�_�+�2�:�=�D�F�F�7�7�F�F�7�2�2�2�4�4�4�A�A�A�
=�=�=�D�D�D�D�Drr9c���eZdZd�Zd�Zd�Zejed��e	��d�����Z
e	��d���Ze	��d���Zd�Z
d	�Zd
�Zd�ZdS)
�TestSystemAPIsc�
�td��}tjd������}|D]I}d|�dd�����vr�-||vr|�d|z����JdS)Nz
ipconfig /allT)�perniczpseudo-interface� �-z-%r nic wasn't found in 'ipconfig /all' output)rr@�net_io_counters�keys�replace�lower�fail)rBr5�nics�nics    r�test_nic_nameszTestSystemAPIs.test_nic_names�s�����!�!���%�T�2�2�2�7�7�9�9���	K�	K�C�!�S�[�[��c�%:�%:�%@�%@�%B�%B�B�B���#�~�~��i�i�C�c�I�K�K�K��	K�	Krc���tj�����d}|�t	|j��t
j��j��dSri)	rUrV�Win32_ComputerSystemr?r<�TotalPhysicalMemoryr@�virtual_memory�total�rBrYs  r�test_total_phymemz TestSystemAPIs.test_total_phymem�s\���G�I�I�*�*�,�,�Q�/������Q�2�3�3��.�0�0�6�	8�	8�	8�	8�	8rc���tj�����d}|�t	|j��t
j��jt���dS)Nr��delta)
rUrV�Win32_PerfRawData_PerfOS_Memory�assertAlmostEqualr<�AvailableBytesr@r��freerr�s  r�test_free_phymemzTestSystemAPIs.test_free_phymem�sd���G�I�I�5�5�7�7��:������� �!�!�6�#8�#:�#:�#?�#�	�	%�	%�	%�	%�	%rztest not relieable on appveyorc���tj�����}td�|D����}tt	j����}|�||��dS)Nc��g|]	}|j��
Sr��	ProcessId�r*r+s  rr-z,TestSystemAPIs.test_pids.<locals>.<listcomp>�s��/�/�/����/�/�/r)rUrV�
Win32_Process�setr@�pidsr?)rBrY�wmi_pids�psutil_pidss    r�	test_pidszTestSystemAPIs.test_pids�sf��

�G�I�I�#�#�%�%���/�/�Q�/�/�/�0�0���&�+�-�-�(�(������;�/�/�/�/�/rc��tjd���}tj�����}|D�]J}|D�]}|j�dd��|jkr�|js�nd|j	vr�n|j�
d��rn�	tj|j��}n#t$rYn�wxYw|�
|jt|j����t|j��}|�
|j|��t'|j|z
��dkr |�d|j�d	|�����n'�� |�d
t+|��z�����LdS)NT��all�\r&�cdrom�A:i�zpsutil=z, wmi=zcan't find partition %s)r@�disk_partitionsrUrV�Win32_LogicalDisk�devicery�DeviceID�
mountpoint�opts�
startswith�
disk_usagerr?r�r<�Size�	FreeSpacer��absr{�repr)rB�ps_parts�	wmi_parts�ps_part�wmi_part�usage�wmi_frees       r�
test_diskszTestSystemAPIs.test_disks�s����)�d�3�3�3���G�I�I�/�/�1�1�	��	K�	K�G�%�
K�
K���>�)�)�$��3�3�x�7H�H�H�"�-�����'�,�.�.����)�4�4�T�:�:����� &� 1�'�2D� E� E����,������������$�$�U�[�#�h�m�2D�2D�E�E�E�"�8�#5�6�6�H��$�$�U�Z��:�:�:��5�:��0�1�1�4D�D�D�"�i�i�i�!�J�J�J���)2�3�3�3��E�)I�,�i�i� 9�D��M�M� I�J�J�J��1	K�	Ks�B6�6
C�Cc��tj��D]�}d|jvr�tj|j��}tj|j��}|�|d|jt���|�|d|j
t���|�|j|j
|jz
����dS)Nr�rr�r')
r@r�r�rG�GetDiskFreeSpaceExr�r�r�r�r
r�r?�used)rB�diskrJrKs    r�test_disk_usagezTestSystemAPIs.test_disk_usage�s����*�,�,�
	E�
	E�D��$�)�#�#�� �3�D�O�D�D�I�!�,�T�_�=�=�L��"�"�9�Q�<��1B�)=�
#�
?�
?�
?��"�"�9�Q�<��1C�)=�
#�
?�
?�
?����\�.�)�/�,�2C�C�
E�
E�
E�
E�
	E�
	Erc���d�tj���d��D��}d�tjd���D��}|�||��dS)Nc�F�g|]}|�|�d���|dz��S)r�r�)r�r�s  rr-z7TestSystemAPIs.test_disk_partitions.<locals>.<listcomp>�sF��-�-�-���-����d�+�+�-�
��H�-�-�-rz\c�P�g|]#}|j�d���|j��$S)r�)r�r�r�s  rr-z7TestSystemAPIs.test_disk_partitions.<locals>.<listcomp>�s>��>�>�>�� �|�6�6�t�<�<�>���>�>�>rTr�)rG�GetLogicalDriveStringsr2r@r�r?rIs   r�test_disk_partitionsz#TestSystemAPIs.test_disk_partitions�s~��-�-�&�=�?�?�E�E�h�O�O�-�-�-�	�>�>�f�.D��.N�.N�.N�>�>�>������L�1�1�1�1�1rc�h�tt�����}tj�����}t��}|D]6}|�|j��|�|j���7|�	||zd|�d|����dS)Nzno common entries in z, )
r��cext�net_if_statsrUrV�Win32_NetworkAdapter�add�Name�NetConnectionID�
assertTrue)rB�ps_names�wmi_adapters�	wmi_names�wmi_adapters     r�test_net_if_statsz TestSystemAPIs.test_net_if_stats�s����t�(�(�*�*�+�+���w�y�y�5�5�7�7���E�E�	�'�	7�	7�K��M�M�+�*�+�+�+��M�M�+�5�6�6�6�6�����9�,�,�9A���9�9�M�	O�	O�	O�	O�	Orc��tj�����}|dj�d��d}t
j�|d��}t
j�tj	����}t||z
�����}|�|d��dS)Nr�.�%Y%m%d%H%M%SrF)
rUrV�Win32_OperatingSystem�LastBootUpTimer2�datetime�strptime�
fromtimestampr@�	boot_timer��
total_seconds�assertLessEqual)rB�wmi_os�
wmi_btime_str�wmi_btime_dt�	psutil_dt�diffs      r�test_boot_timezTestSystemAPIs.test_boot_time�s�������0�0�2�2���q�	�0�6�6�s�;�;�A�>�
��(�1�1��>�+�+���%�3�3�F�4D�4F�4F�G�G�	��L�9�,�;�;�=�=�>�>�����T�1�%�%�%�%�%rc��tjdd���5|�tj��d��ddd��n#1swxYwYtjdd���5|�tj��d��ddd��n#1swxYwYtjdd���5|�tj��d��ddd��n#1swxYwYtjdd���5|�tj��d��ddd��dS#1swxYwYdS)Nz psutil._pswindows.cext.boot_timerF��return_value��iM)r�patchr?r@r�rfs r�test_boot_time_fluctuationz)TestSystemAPIs.test_boot_time_fluctuations9��
�Z�:��
K�
K�
K�	4�	4����V�-�/�/��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�Z�:��
K�
K�
K�	4�	4����V�-�/�/��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�Z�:��
K�
K�
K�	4�	4����V�-�/�/��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�
�Z�:��
M�
M�
M�	6�	6����V�-�/�/��5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6sG�(A�A�A�,(B � B$�'B$�(C5�5C9�<C9�(E�E�EN)rrrr~r�r�r rprrr�r�r�r�r�r�r�rrrrrrr�s������K�K�K�8�8�8�
%�%�%�$�X�_�X�?�@�@�����0�0���A�@�0�����K�K���K�:����E�E���E�2�2�2�O�O�O�&�&�&�	6�	6�	6�	6�	6rrrc��eZdZd�Zejed��d���Zejed��d���Zd�Z	d�Z
d�Zd�Zd	S)
�TestSensorsBatteryc���tj��dr(|�tj����dS|�tj����dS)N�SystemBatteriesPresent)rG�GetPwrCapabilities�assertIsNotNoner@�sensors_battery�assertIsNonerfs r�test_has_batteryz#TestSensorsBattery.test_has_batterys_���&�(�(�)A�B�	8�� � ��!7�!9�!9�:�:�:�:�:����f�4�6�6�7�7�7�7�7rz
no batteryc���tj��}|�d��d}tj��}|�|j|jd���dS)N�select * from Win32_Batteryrr'r�)rUrV�queryr@r�r��percent�EstimatedChargeRemaining�rBrY�battery_wmi�battery_psutils    r�test_percentzTestSensorsBattery.test_percentsg���G�I�I���g�g�;�<�<�Q�?���/�1�1������"�K�$H��	�	�	�	�	�	rc���tj��}|�d��d}tj��}|�|j|jdk��dS)Nr�r�)rUrVr�r@r�r?�
power_plugged�
BatteryStatusr�s    r�test_power_pluggedz%TestSensorsBattery.test_power_plugged$sf���G�I�I���g�g�;�<�<�Q�?���/�1�1��	
����5�$�2�a�7�	9�	9�	9�	9�	9rc���tjdd���5}|�tj����|jsJ�	ddd��dS#1swxYwYdS)N�&psutil._pswindows.cext.sensors_battery)r�rrr�)rr�r�r@r��called�rB�ms  r�test_emulate_no_batteryz*TestSensorsBattery.test_emulate_no_battery.s���
�Z�@�%3�5�5�5�	�89����f�4�6�6�7�7�7��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�0A�A�Ac���tjdd���5}|�tj��jtj��|jsJ�	ddd��dS#1swxYwYdS)Nr�)r'rrrr��rr�r?r@r��secsleft�POWER_TIME_UNLIMITEDr�r�s  r�test_emulate_power_connectedz/TestSensorsBattery.test_emulate_power_connected4���
�Z�@�%1�3�3�3�	�67����V�3�5�5�>�#�8�
:�
:�
:��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��AA%�%A)�,A)c���tjdd���5}|�tj��jtj��|jsJ�	ddd��dS#1swxYwYdS)Nr�)r�rrr�rr�s  r�test_emulate_power_chargingz.TestSensorsBattery.test_emulate_power_charging;rrc���tjdd���5}|�tj��jtj��|jsJ�	ddd��dS#1swxYwYdS)Nr�)rrr���r�)rr�r?r@r�r�POWER_TIME_UNKNOWNr�r�s  r�test_emulate_secs_left_unknownz1TestSensorsBattery.test_emulate_secs_left_unknownBs���
�Z�@�%2�4�4�4�	�78����V�3�5�5�>�#�6�
8�
8�
8��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rN)
rrrr�r rpr	r�r�r�rrrrrrr�r�s�������8�8�8��X�_��_�l�3�3���4�3���X�_��_�l�3�3�9�9�4�3�9��������������rr�c��eZdZed���Zed���Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�ZdS)�TestProcessc�6�t��j|_dSrO�r�pid��clss r�
setUpClasszTestProcess.setUpClassQ��� �"�"�&����rc�.�t|j��dSrO�rrrs r�
tearDownClasszTestProcess.tearDownClassU����#�'�����rc�x�tjd��}|�tj|j��dSri)r@�Process�assertRaises�AccessDenied�kill�rB�ps  r�
test_issue_24zTestProcess.test_issue_24Ys2���N�1�������&�-�q�v�6�6�6�6�6rc���tjd��}|�|���d��t	|��|���|�|���dk��	|���dd�\}}|�|dk��dS#tj	$r tj��ddvr�YdSwxYw)Nr��Systemgr�rr')�vistazwin-7�win7)r@rr?�name�str�usernamer��create_time�memory_infor�platform�uname)rBr �rss�vmss    r�test_special_pidzTestProcess.test_special_pid]s����N�1������������8�,�,�,�	�A����	�
�
��������
�
���3�.�/�/�/�	%��}�}���r��r�*�H�C��
�O�O�C�!�G�$�$�$�$�$���"�	�	�	��>�#�#�A�&�*D�D�D��E�D�D�	���s�C�+C5�4C5c��tj|j��}|�t|jtj��dSrO)r@rrr�
ValueError�send_signal�signal�SIGINTrs  r�test_send_signalzTestProcess.test_send_signalns5���N�4�8�$�$�����*�a�m�V�]�C�C�C�C�Crc��tjtj����}|���}tjtjtj	tj����}|���}|�
||dz��tj|��|�
|���|��dS)Nr')r@rr=�getpid�num_handlesrG�OpenProcess�win32con�PROCESS_QUERY_INFORMATION�FALSEr?�CloseHandle)rBr �before�handle�afters     r�test_num_handles_incrementz&TestProcess.test_num_handles_incrementrs����N�2�9�;�;�'�'���������%�h�&H�&.�n�b�i�k�k�C�C���
�
����������
�+�+�+���V�$�$�$���������&�1�1�1�1�1rc���tj|���j��}|�t
j��|�t
j��|���|�	��|�
tj|jt
j��|�
tj|jt
j��dSrO)r@rrrr2r3�CTRL_C_EVENT�CTRL_BREAK_EVENTr�waitr�
NoSuchProcessrs  r�test_ctrl_signalszTestProcess.test_ctrl_signals|s����N�4�.�.�0�0�4�5�5��	�
�
�f�)�*�*�*�	�
�
�f�-�.�.�.�	������	���������&�.��-��)<�	>�	>�	>����&�.��-��)@�	B�	B�	B�	B�	Brc��tjtj��}|�d��rtjd���|�tj	���
��|��dS)N�$zrunning as service account)rG�
GetUserNameExr:�NameSamCompatible�endswithr r!r?r@rr()rBr&s  r�
test_usernamezTestProcess.test_username�sn���%�h�&@�A�A���=�=����	B��#�$@�A�A�A������)�)�2�2�4�4�d�;�;�;�;�;rc�z�tjddtj�������}d�t
j�������}|ddcxkr|dkrnn|�	ddd��}|�
||��dS)Nz[ ]+rur�"r&r�)�re�subrG�GetCommandLiner.r/r@rr#ryr?rIs   r�test_cmdlinezTestProcess.test_cmdline�s����F�6�3��(?�(A�(A�B�B�H�H�J�J�	��x�x��� 0� 0� 8� 8� :� :�;�;���Q�<�3�1�1�1�1�,�q�/�1�1�1�1�1�
"�)�)�#�r�1�5�5�I�����L�1�1�1�1�1rc�Z�tjtjtjtj����}|�tj|��tj
|��}tj���
��}|�||��dSrO)rGr9r:r;r<r=r7�
addCleanupr=�win32process�GetPriorityClassr@r�nicer?�rBr?rJrKs    r�	test_nicezTestProcess.test_nice�s����%�h�&H�&.�n�b�i�k�k�C�C������,�f�5�5�5� �1�&�9�9�	��~�'�'�,�,�.�.������y�1�1�1�1�1rc��tjtjtj|j��}|�tj|��tj	|��}tj|j�����}|�
|d|j��|�
|d|j��|�
|d|j��|�
|d|j��|�
|d|j��|�
|d|j��|�
|d|j��|�
|d|j��|�
|j|j��|�
|j|j��dS)	N�PeakWorkingSetSize�WorkingSetSize�QuotaPeakPagedPoolUsage�QuotaPagedPoolUsage�QuotaPeakNonPagedPoolUsage�QuotaNonPagedPoolUsage�
PagefileUsage�PeakPagefileUsage)rGr9r:r;r<rrUr=rV�GetProcessMemoryInfor@rr*r?�	peak_wset�wset�peak_paged_pool�
paged_pool�peak_nonpaged_pool�
nonpaged_pool�pagefile�
peak_pagefiler-r.rYs    r�test_memory_infozTestProcess.test_memory_info�s����%�h�&H�&.�n�d�h�@�@������,�f�5�5�5� �5�f�=�=�	��~�d�h�/�/�;�;�=�=������*�+�\�-C�	E�	E�	E�����&�'��):�	<�	<�	<�����/�0�,�2N�	P�	P�	P�����+�,�l�.E�	G�	G�	G�����2�3��+�	-�	-�	-�	
����.�/��1K�	M�	M�	M�����o�&��(=�	?�	?�	?�����)�*�L�,F�	H�	H�	H�	
����)�<�+<�=�=�=�����)�<�+@�A�A�A�A�Arc�z�tjtjtj|j��}|�tj|��tj	|j��}|�
��|���}tj
|��}|�||��dSrO)rGr9r:r;r<rrUr=r@rrrErV�GetExitCodeProcessr?)rBr?r rKrJs     r�	test_waitzTestProcess.test_wait�s����%�h�&H�&.�n�d�h�@�@������,�f�5�5�5��N�4�8�$�$��	���
�
�
��v�v�x�x�� �3�F�;�;�	�����y�1�1�1�1�1rc�r�d�}tjtjtj|j��}|�tj|��|tj	|��d��}tj|j�����}|�
||��dS)Nc�:���fd�td��D��S)Nc�$��g|]}d|z�z�
|��
S)r'r)r*�ir+s  �rr-zGTestProcess.test_cpu_affinity.<locals>.from_bitmask.<locals>.<listcomp>�s&���9�9�9�!�Q�!�V�q�L�9�A�9�9�9r�@)�range)r+s`r�from_bitmaskz3TestProcess.test_cpu_affinity.<locals>.from_bitmask�s#���9�9�9�9�u�R�y�y�9�9�9�9rr)rGr9r:r;r<rrUr=rV�GetProcessAffinityMaskr@r�cpu_affinityr?)rBrwr?rJrKs     r�test_cpu_affinityzTestProcess.test_cpu_affinity�s���	:�	:�	:��%�h�&H�&.�n�d�h�@�@������,�f�5�5�5� �L��/��7�7��:�<�<�	��~�d�h�/�/�<�<�>�>������y�1�1�1�1�1rc��tjtjtjtj����}|�tj|��tj
|��}tj���
��}|�|j|d��|�|j|d��|�|j|d��|�|j|d��|�|j|d��|�|j|d��dS)N�ReadOperationCount�WriteOperationCount�ReadTransferCount�WriteTransferCount�OtherOperationCount�OtherTransferCount)rGr9r:r;r<r=r7rUr=rV�GetProcessIoCountersr@r�io_countersr?�
read_count�write_count�
read_bytes�write_bytes�other_count�other_bytesrYs    r�test_io_counterszTestProcess.test_io_counters�sj���%�h�&H�&.�n�b�i�k�k�C�C������,�f�5�5�5� �5�f�=�=�	��~�'�'�3�3�5�5������#�Y�/C�%D�	F�	F�	F�����$�i�0E�&F�	H�	H�	H�����#�Y�/B�%C�	E�	E�	E�����$�i�0D�&E�	G�	G�	G�����$�i�0E�&F�	H�	H�	H�����$�i�0D�&E�	G�	G�	G�	G�	Grc���ddl}ddl}d}|jj�|d|j��}|�|jjj|��|j�	��}|jj�
||�|����|j}tj|j�����}|�||��dS)Nr�)�ctypes�ctypes.wintypes�windll�kernel32r9rrUr=�wintypes�DWORD�GetProcessHandleCount�byref�valuer@rr8r?)rBr�r;r?�hndcntrJrKs       r�test_num_handleszTestProcess.test_num_handles�s����
�
�
�����$)�!���'�3�3�%�q�$�(�4�4������
�.�:�F�C�C�C���&�&�(�(���
��4�4��F�L�L��(�(�	*�	*�	*��L�	��~�d�h�/�/�;�;�=�=������y�1�1�1�1�1rc��t��}d|_tjd|���5tjd��5}t	j��}|�tj|j��ddd��n#1swxYwYddd��n#1swxYwY|�	|j
d��dS)Ni+z psutil._psplatform.cext.proc_cwd��side_effectz
time.sleeprF)�WindowsError�winerrorrr�r@rrr�cwd�assertGreaterEqual�
call_count)rB�excr�r s    r�test_error_partial_copyz#TestProcess.test_error_partial_copys'���n�n�����
�Z�:��
L�
L�
L�	>�	>���L�)�)�
>�Q��N�$�$���!�!�&�"5�q�u�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	
�����a�0�0�0�0�0s5�B�9B�:B�B
	�
B�
B
	�B�B!�$B!c���tj��ddz}tj�|��}|�tj|j��dS)Nr
i��)r@r��_psplatformrrrF�exe)rBrrRs   r�test_exezTestProcess.test_exesP���k�m�m�B��%�'���!�)�)�#�.�.�����&�.���9�9�9�9�9rN)rrr�classmethodrrr!r/r5rArGrMrSrZrmrprzr�r�r�r�rrrrrOs5�������'�'��[�'�����[��7�7�7�%�%�%�"D�D�D�2�2�2�	B�	B�	B�<�<�<�	2�	2�	2�42�2�2�B�B�B�62�2�2�
2�
2�
2�G�G�G�&
2�
2�
2�1�1�1�:�:�:�:�:rrc���eZdZdZed���Zed���Zd�Zej	e
d��d���Zd�Zd�Z
e��d	���Ze��d
���Zd�ZdS)
�TestProcessWMIz%Compare Process API results with WMI.c�6�t��j|_dSrOrrs rrzTestProcessWMI.setUpClassrrc�.�t|j��dSrOrrs rrzTestProcessWMI.tearDownClassrrc��tj���|j���d}t	j|j��}|�|���|j��dS�Nr�r)	rUrVr�rr@rr?r&�Caption�rBrYr s   r�	test_namezTestProcessWMI.test_name"s\���G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$����������1�9�-�-�-�-�-rz!unreliable path on GITHUB_ACTIONSc�>�tj���|j���d}t	j|j��}|�|������|j	�����dSr�)
rUrVr�rr@rr?r�rz�ExecutablePathr�s   rr�zTestProcessWMI.test_exe(ss���G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$��	
������������!�*:�*@�*@�*B�*B�C�C�C�C�Crc�D�tj���|j���d}t	j|j��}|�d�|�����|j	�
dd����dS)Nr�rrurOr&)rUrVr�rr@rr?r/r#�CommandLineryr�s   rrSzTestProcessWMI.test_cmdline0s����G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$��������!�)�)�+�+�.�.���.�.�s�B�7�7�	9�	9�	9�	9�	9rc�*�tj���|j���d}t	j|j��}|���\}}}|�d|��}|�|���|��dS)Nr�rr�)	rUrVr�rr@r�GetOwnerr?r()rBrYr �domain�_r(s      rrMzTestProcessWMI.test_username6s~���G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$���j�j�l�l����8�%�v�v�x�x�0����������x�0�0�0�0�0rc��tj���|j���d}t	j|j��}|���j}|�|t|j
����dSr�)rUrVr�rr@rr*r-r?r<r])rBrYr r-s    r�test_memory_rsszTestProcessWMI.test_memory_rss=sm���G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$���m�m�o�o�!������c�!�"2�3�3�4�4�4�4�4rc�N�tj���|j���d}t	j|j��}|���j}t|j	��}||kr$||dzkr|�
d|�d|�����dSdS)Nr�rr�zwmi=z	, psutil=)rUrVr�rr@rr*r.r<�
PageFileUsager{)rBrYr r.�	wmi_usages     r�test_memory_vmszTestProcessWMI.test_memory_vmsDs����G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$���m�m�o�o�!��
���(�(�	��9���3�)�d�*:�#:�#:��)�)�)�9�9�9�c�c�B�C�C�C�
��#:�#:rc��tj���|j���d}t	j|j��}t
|j�d��d��}tj
dtj|�������}|�
||��dS)Nr�rr�r�)rUrVr�rr@rr'�CreationDater2�time�strftime�	localtimer)r?)rBrYr �wmic_create�
psutil_creates     r�test_create_timezTestProcessWMI.test_create_timeQs����G�I�I�#�#�d�h�#�7�7��:���N�4�8�$�$���!�.�.�.�s�3�3�A�6�7�7���
�n�&*�n�Q�]�]�_�_�&E�&E�G�G�
�����m�4�4�4�4�4rN)rrr�__doc__r�rrr�r rprr�rSrMrr�r�r�rrrr�r�s������/�/��'�'��[�'�����[��.�.�.��X�_�^�%H�I�I�D�D�J�I�D�9�9�9�1�1�1�����5�5���5�����
D�
D���
D�5�5�5�5�5rr�c�b�eZdZdZed���Zed���Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
S)�TestDualProcessImplementationa{
    Certain APIs on Windows have 2 internal implementations, one
    based on documented Windows APIs, another one based
    NtQuerySystemInformation() which gets called as fallback in
    case the first fails because of limited permission error.
    Here we test that the two methods return the exact same value,
    see:
    https://github.com/giampaolo/psutil/issues/304
    c�6�t��j|_dSrOrrs rrz(TestDualProcessImplementation.setUpClassirrc�.�t|j��dSrOrrs rrz+TestDualProcessImplementation.tearDownClassmrrc��tj|j�����}t	jdt
tjd�����5}tj|j�����}|�	t|��t|����tt|����D]^}|�||d��|�||d��|�
||||d����_|jsJ�	ddd��dS#1swxYwYdS)Nz(psutil._psplatform.cext.proc_memory_info�msgr�rir�)r@rrr*rr��OSError�errno�EPERMr?rdrvr�r�r�)rB�mem_1�fun�mem_2rts     rrmz.TestDualProcessImplementation.test_memory_infoqsv����t�x�(�(�4�4�6�6��
�Z�B�$+�E�K��$?�$?�A�A�A�	�DG��N�4�8�,�,�8�8�:�:�E����S��Z�Z��U���4�4�4��3�u�:�:�&�&�
F�
F���'�'��a��!�4�4�4��'�'��a��!�4�4�4��&�&�u�Q�x��q���&�E�E�E�E��:�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�C E�E�Ec�|�tj|j�����}t	jdt
tjd�����5}|�	tj|j�����|��|j
sJ�	ddd��dS#1swxYwYdS)N�"psutil._psplatform.cext.proc_timesr�r�)r@rrr)rr�r�r�r�r?r�)rB�ctimer�s   rr�z.TestDualProcessImplementation.test_create_time}s�����t�x�(�(�4�4�6�6��
�Z�<�$+�E�K��$?�$?�A�A�A�	�DG����V�^�D�H�5�5�A�A�C�C�U�K�K�K��:�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A	B1�1B5�8B5c���tj|j�����}t	jdt
tjd�����5}tj|j�����}|j	sJ�|�
|j|jd���|�
|j|jd���ddd��dS#1swxYwYdS)Nr�r�r�g{�G�z�?r�)
r@rrrerr�r�r�r�r�r��user�system)rB�cpu_times_1r��cpu_times_2s    r�test_cpu_timesz,TestDualProcessImplementation.test_cpu_times�sE���n�T�X�.�.�8�8�:�:��
�Z�<�$+�E�K��$?�$?�A�A�A�	D�DG� �.���2�2�<�<�>�>�K��:�����"�"�� �+�"2�$�
#�
@�
@�
@��"�"��"�K�$6�d�
#�
D�
D�
D�
	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�A9C � C$�'C$c���tj|j�����}t	jdt
tjd�����5}tj|j�����}tt|����D]&}|�||||d����'|jsJ�	ddd��dS#1swxYwYdS)Nz(psutil._psplatform.cext.proc_io_countersr�r�rFr�)
r@rrr�rr�r�r�r�rvrdr�r�)rB�
io_counters_1r��
io_counters_2rts     rr�z.TestDualProcessImplementation.test_io_counters�s3����t�x�0�0�<�<�>�>�
�
�Z�B�$+�E�K��$?�$?�A�A�A�	�DG�"�N�4�8�4�4�@�@�B�B�M��3�}�-�-�.�.�
A�
A���&�&�!�!�$�m�A�&6�a�'�A�A�A�A��:�����
	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A8C � C$�'C$c�|�tj|j�����}t	jdt
tjd�����5}|�	tj|j�����|��|j
sJ�	ddd��dS#1swxYwYdS)Nz(psutil._psplatform.cext.proc_num_handlesr�r�)r@rrr8rr�r�r�r�r?r�)rBr8r�s   rr�z.TestDualProcessImplementation.test_num_handles�s����n�T�X�.�.�:�:�<�<��
�Z�B�$+�E�K��$?�$?�A�A�A�	�DG����V�^�D�H�5�5�A�A�C�C�(�
*�
*�
*��:�����		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c�j�tj��D]�}	t�|d���}t�|d���}|�||���R#t
$r@}t
|��}t|tjtj	f��s�Yd}~��d}~wwxYwdS)NT)�use_pebF)
r@r�r��proc_cmdliner?r�r�
isinstancerrF)rBr�a�b�errs     rrSz*TestDualProcessImplementation.test_cmdline�s����;�=�=�
	'�
	'�C�	
'��%�%�c�4�%�8�8���%�%�c�5�%�9�9��� � ��A�&�&�&�&��
�
�
�
�%�c�*�*��!�#��(;�(.�(<�(>�?�?������������
����	
	'�
	's�8A&�&
B0�06B+�+B0N)
rrrr�r�rrrmr�r�r�r�rSrrrr�r�]s����������'�'��[�'�����[��
�
�
����	D�	D�	D�������'�'�'�'�'rr�c�n��eZdZdZed���ZddgZ�fd�Z�fd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Z�xZS)
�RemoteProcessTestCasez�Certain functions require calling ReadProcessMemory.
    This trivially works when called on the current process.
    Check that this works on other processes, especially when they
    have a different bitness.
    c�$�d}tjd��D]x}tj|d|gtjtj���}|���\}}|���|tt��kr|cS�ydS)Nz6import sys; sys.stdout.write(str(sys.maxsize > 2**32))zC:\Python*\python.exe�-c)�args�stdout�stderr)	�glob�
subprocess�Popen�PIPE�STDOUT�communicaterEr'r
)�code�filenamerR�outputr�s     r�find_other_interpreterz,RemoteProcessTestCase.find_other_interpreter�s���H���	�":�;�;�	 �	 �H��#�(�D�$�)?�+5�?�+5�+<�>�>�>�D��(�(�*�*�I�F�A��I�I�K�K�K����\�*�*�*�*�����+�
	 �	 rr�zimport sys; sys.stdin.read()c�b��t�����|���}|�tjd���t
rtj|_||_	n||_tj|_	tj���}ttj����|d<|�|j	g|jz|t"j���|_|�|jg|jz|t"j���|_dS)Nz0could not find interpreter with opposite bitness�THINK_OF_A_NUMBER)�env�stdin)r�setUpr�r r!r
�sys�
executable�python64�python32r=r>�copyr'r7r�	test_argsr�r��proc32�proc64)rB�other_pythonr��	__class__s   �rr�zRemoteProcessTestCase.setUp�s���
���
�
�����2�2�4�4�����#�B�D�D�
D��	+��N�D�M�(�D�M�M�(�D�M��N�D�M��j�o�o����#&�r�y�{�{�#3�#3��� ��)�)�
�]�O�d�n�,���/�*�#�#����)�)�
�]�O�d�n�,���/�*�#�#����rc���t�����|j���|j���dSrO)r�tearDownrr�r)rBrs �rr	zRemoteProcessTestCase.tearDown�sG���
������������!�!�!�����!�!�!�!�!rc��tj|jj��}|�t|�����d��|�|���dd�|j��dS�N�r')r@rrrr?rdr#rrs  r�test_cmdline_32z%RemoteProcessTestCase.test_cmdline_32��i���N�4�;�?�+�+������Q�Y�Y�[�[�)�)�1�-�-�-���������Q�R�R��$�.�9�9�9�9�9rc��tj|jj��}|�t|�����d��|�|���dd�|j��dSr)r@rrrr?rdr#rrs  r�test_cmdline_64z%RemoteProcessTestCase.test_cmdline_64�rrc��tj|jj��}|�|���t
j����dSrO)r@rrrr?r�r=�getcwdrs  r�test_cwd_32z!RemoteProcessTestCase.test_cwd_32��?���N�4�;�?�+�+����������"�)�+�+�.�.�.�.�.rc��tj|jj��}|�|���t
j����dSrO)r@rrrr?r�r=rrs  r�test_cwd_64z!RemoteProcessTestCase.test_cwd_64�rrc�
�tj|jj��}|���}|�d|��|�|dttj	������dS)Nr�)
r@rrrr>�assertInr?r'r=r7)rBr �es   r�test_environ_32z%RemoteProcessTestCase.test_environ_32�sg���N�4�;�?�+�+��
�I�I�K�K���
�
�)�1�-�-�-�����.�/��R�Y�[�[�1A�1A�B�B�B�B�Brc��tj|jj��}	|���dS#tj$rYdSwxYwrO)r@rrrr>rrs  r�test_environ_64z%RemoteProcessTestCase.test_environ_64�sP���N�4�;�?�+�+��	�
�I�I�K�K�K�K�K���"�	�	�	��D�D�	���s�6�A	�A	)rrrr��staticmethodr�rr�r	r
rrrrr�
__classcell__)rs@rr�r��s�����������
 �
 ��\�
 ��5�6�I�#�#�#�#�#�2"�"�"�"�"�
:�:�:�
:�:�:�
/�/�/�/�/�/�C�C�C�������rr�c��eZdZd�Zd�ZdS)�TestServicesc���tgd���}tgd���}tgd���}tj��D�]/}|���}|�|dt
��|�|d���d��|�|dt
��|�|dt
��|�|d|��|d	�tj	|d	��|�|d
t
��|�|dt
��|�|dt
��|�|d|��|�|d|��|�|dt
��|�
��}|�;tj	|��}|�|�����tj
|�����}|�||����1dS)
N)�running�paused�start�pause�continue�stop�stopped)�	automatic�manual�disabled)r"r#�
start_pending�
pause_pending�continue_pending�stop_pendingr(r&r&�display_namer(�statusr�binpath�
start_type�description)r�r@�win_service_iter�as_dict�assertIsInstancer'�assertNotEqualr.rrrr��
is_running�win_service_getr&r?)rB�valid_statuses�valid_start_types�servr6rr �ss        r�test_win_service_iterz"TestServices.test_win_service_itersG���
�
�
���� �!
�!
�!
����
�
�
�
�����+�-�-�	&�	&�D��<�<�>�>�D��!�!�$�v�,��4�4�4�����V�� 2� 2� 4� 4�b�9�9�9��!�!�$�~�"6��<�<�<��!�!�$�z�"2�C�8�8�8��M�M�$�x�.�.�9�9�9��E�{�&���t�E�{�+�+�+��!�!�$�y�/�3�7�7�7��!�!�$�z�"2�C�8�8�8��!�!�$�|�"4�c�:�:�:��M�M�$�|�,�.?�@�@�@��M�M�$�x�.�.�9�9�9��!�!�$�}�"5�s�;�;�;��(�(�*�*�C����N�3�'�'����������/�/�/��&�t�y�y�{�{�3�3�A����T�1�%�%�%�%�-	&�	&rc�x�tjjj}tjjj}ttj�������}|�tj	��5}tj
|dz��ddd��n#1swxYwY|�|jj|dz��tj
|��}trddd|f}n|df}t|�}tjd|���5|�tj	|j��ddd��n#1swxYwYtjd|���5|�tj	|j��ddd��n#1swxYwYtrddd|f}n|df}t|�}tjd|���5|�tj|j��ddd��n#1swxYwYtjd|���5|�tj|j��ddd��n#1swxYwY|�|���t+|����|�|���t+|����|�|���t/|����|�|���t/|����dS)Nz???rr�z/psutil._psplatform.cext.winservice_query_statusr�z/psutil._psplatform.cext.winservice_query_config)r@r�r��ERROR_SERVICE_DOES_NOT_EXIST�ERROR_ACCESS_DENIED�nextr5r&rrFr:r?�	exceptionrr�rr�r1r(rrr'r0r�)rBrArBr&�cm�servicer�r�s        r�test_win_service_getz!TestServices.test_win_service_get?se����#�@�	%�$�0�5�I���F�+�-�-�.�.�3�3�5�5��
�
�
�v�3�
4�
4�	1���"�4�%�<�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1������*�D�5�L�9�9�9��(��.�.���	9��u�a�!=�>�D�D�0�%�8�D��D�!��
�Z�I�$'�)�)�)�	D�	D����f�2�G�N�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��Z�I�$'�)�)�)�	F�	F����f�2�G�4D�E�E�E�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�
�	0��u�a�!4�5�D�D�'��/�D��D�!��
�Z�I�$'�)�)�)�	C�	C����f�1�7�>�B�B�B�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C��Z�I�$'�)�)�)�	E�	E����f�1�7�3C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�
	
�
�
�g�l�l�n�n�c�'�l�l�3�3�3��
�
�g�*�*�,�,�c�'�l�l�;�;�;��
�
�g�l�l�n�n�d�7�m�m�4�4�4��
�
�g�*�*�,�,�d�7�m�m�<�<�<�<�<sZ�>B"�"B&�)B&�&E�E�E�(&F�F�!F�&H�H�H�)&I�I�"IN)rrrr?rGrrrr r s3������.&�.&�.&�`)=�)=�)=�)=�)=rr �__main__)�
run_from_name)=r�r�r�r�r=r+rPr3r�r�r�r �warningsr@r�psutil._compatrrr�psutil.testsrrr	r
rrr
rrrrrrr�catch_warnings�simplefilterrGr:rVrU�psutil._pswindowsrr�r�rprr$r<r7r9rrr�rr�r�r�r r�psutil.tests.runnerrI�__file__rrr�<module>rRsr����������������	�	�	�	�����	�	�	�	�
�
�
�
�����
�
�
�
�������������
�
�
�
�������,�,�,�,�,�,� � � � � � � � � � � � �!�!�!�!�!�!�'�'�'�'�'�'�$�$�$�$�$�$�!�!�!�!�!�!�������������-�-�-�-�-�-�*�*�*�*�*�*�'�'�'�'�'�'�������)�)�)�)�)�)�������'�'�'�'�'�'�"�"�"�"�"�"���4��	 ��	 �	"�	"������h�'�'�'��������������
�
�
��������������������2�1�1�1�1�1�1��������W��n�-�-�����6�7�7�����+��G�-M�N�N�	�	�	�	�	�n�	�	�O�N�8�7�.�-�	���� #�����,$D�$D�$D�$D�$D�/�$D�$D�$D�N}6�}6�}6�}6�}6�_�}6�}6�}6�J4�4�4�4�4��4�4�4�xE:�E:�E:�E:�E:�/�E:�E:�E:�P@5�@5�@5�@5�@5�_�@5�@5�@5�L���W��n�-�-�N'�N'�N'�N'�N'�N�N'�N'�.�-�N'�b���W��n�-�-�T�T�T�T�T�N�T�T�.�-�T�x���W��n�-�-�[=�[=�[=�[=�[=�>�[=�[=�.�-�[=�|�z���1�1�1�1�1�1��M�(�������s�6!C#�#C'�*C'

Youez - 2016 - github.com/yon3zu
LinuXploit