bgnBdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl!m#Z#ddl!m$Z$ddl!m%Z%ddl!m&Z&ddl!m'Z'ddl!m(Z(ddl!m)Z)ddl!m*Z*ddl!m+Z+ddl!m,Z,ddl!m-Z-ddl!m.Z.ddl!m/Z/dd l!m0Z0dd!l!m1Z1dd"l!m2Z2dd#l!m3Z3dd$l!m4Z4dd%l!m5Z5dd&l!m6Z6dd'l!m7Z7dd(l!m8Z8dd)l!m9Z9dd*l!m:Z:dd+l!m;Z;dd,l!mZ>Gd/d0e2Z?er!ej@dkrGd1d2e?ZAGd3d4e2ZBeCd5krdd6lDmEZEeEeFdSdS)7Tests for psutil.Process class.N)AIX)BSD)LINUX)MACOS)NETBSD)OPENBSD)OSX)POSIX)SUNOS)WINDOWS) open_text)PY3)FileNotFoundError)long)super)APPVEYOR) CI_TESTING)GITHUB_ACTIONS)GLOBAL_TIMEOUT)HAS_CPU_AFFINITY) HAS_ENVIRON) HAS_IONICE)HAS_MEMORY_MAPS)HAS_PROC_CPU_NUM)HAS_PROC_IO_COUNTERS) HAS_RLIMIT) HAS_THREADS) MACOS_11PLUS)PYPY) PYTHON_EXE)PYTHON_EXE_ENV)PsutilTestCase) ThreadTask) call_until)copyload_shared_lib) create_exe)mock)process_namespace reap_children)retry_on_failure)sh)skip_on_access_denied)skip_on_not_implemented) wait_for_pidc eZdZdZdZdZdZdZdZe j e ddZ d Z e j ed d Zd Zd ZdZdZdZdZdZe j e ddZdZe j e ddZe j e deedZe j e de j e ddZ e j e de j e! ddZ"e j e# ddZ$e j e# ddZ%e j e# dd Z&e j e# dd!Z'e j e# dd"Z(d#Z)e j e! d$d%Z*e j e+ dd&Z,e-e.e/e j e+ dd'Z0e-d(Z1d)Z2e j e3 dd*Z4e j e3 dd+Z5d,Z6d-Z7d.Z8d/Z9e j e:d0d1Z;d2Z<e j e:d3d4Z=e j e>d5e j e?d6e j e:d0d7Z@e j e dd8ZAe j e dd9ZBd:ZCd;ZDd<ZEd=ZFd>ZGe j eH dd?ZIe j eH dd@ZJe j eH ddAZKe j eLdBe j eMdCdDZNe j eLdBe j eMdCdEZOe j e ddFZPeee j eQpedGdHZRdIZSdJZTdKZUdLZVe-dMZWdNZXdOZYdPZZdQZ[dRZ\dSZ]dTZ^dUZ_dVZ`dWZadXZbe j e ddYZce j e ddZZde j e dd[Zed\Zfd]Zge j eh dd^Zie j eh de j e de j ejd_d`ZkdaS)b TestProcessrcN|j|i|}tj|jSN)spawn_testprocpsutilProcesspid)selfargskwargssprocs l/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib64/python3.11/site-packages/psutil/tests/test_process.py spawn_psproczTestProcess.spawn_psprocOs+##T4V44~ei(((ctj}||jt j|t5d|_ddddS#1swxYwYdS)N!)r6r7 assertEqualr8osgetpid assertRaisesAttributeErrorr9ps r=test_pidzTestProcess.test_pidUs N    ,,,   ~ . .  AE                  sA//A36A3c:|}||}tr!||t jn!||t j ||dSr4) r>killwaitr rBsignalSIGTERMSIGKILLassertProcessGoner9rHcodes r= test_killzTestProcess.test_kill[s      vvxx  4   T6> 2 2 2 2   TFN? 3 3 3 q!!!!!r?c:|}||}tr!||t jn!||t j ||dSr4)r> terminaterLr rBrMrNrPrQs r=test_terminatezTestProcess.test_terminatees      vvxx  4   T6> 2 2 2 2   TFN? 3 3 3 q!!!!!r?cRtr tjn tj}|}|||}tr|||n||| | |dSr4) r rMrOrNr> send_signalrLr rBrP)r9sigrHrRs r=test_send_signalzTestProcess.test_send_signalos %9fnn6>      cvvxx  )   T3 ' ' ' '   TC4 ( ( ( q!!!!!r?z not POSIXc tj}|}tjdt t jd5|tj |j |dddn #1swxYwY|}tjdt t j d5|tj |j |ddddS#1swxYwYdS)Nzpsutil.os.kill side_effect)rMrNr>r(patchOSErrorerrnoESRCHrEr6 NoSuchProcessrXEPERM AccessDenied)r9rYrHs r=test_send_signal_mockedz#TestProcess.test_send_signal_mockedzsn      Z($+EK$<$<>>> H H   f2AM3 G G G H H H H H H H H H H H H H H H      Z($+EK$<$<>>> G G   f11=# F F F G G G G G G G G G G G G G G G G G Gs$'BB B'DD Dctddg}||}|}||d||tddg}||t j}|}||d||tddg}||}|}||d||tdd g}||}|}||d||dS) N-cpassrz1 / 0)stderrzimport sys; sys.exit(5);zimport os; os._exit(5);)r!r>rLrBrP subprocessPIPE)r9cmdrHrRs r=test_wait_exitedzTestProcess.test_wait_exitedsk4(   c " "vvxx q!!! q!!!4)   c*/  : :vvxx q!!! q!!!4!;<   c " "vvxx q!!! q!!!4!:;   c " "vvxx q!!! q!!!!!r?zfails on NETBSDc@|}tr|tj|t j|jd|tj |t j|jd|tj | |tj | |tj dS| |t j|jd| |t j|jd|| |tj | |tj dS)NMbP?)timeout)r>r rXrMSIGSTOPrEr6TimeoutExpiredrLSIGCONTrNrBsuspendresumerUrGs r=test_wait_stoppedzTestProcess.test_wait_stoppeds       7 MM&. ) ) )   f3QVU  K K K MM&. ) ) )   f3QVU  K K K MM&. ) ) )   QVVXX 7 7 7   QVVXX 7 7 7 7 7 IIKKK   f3QVU  K K K HHJJJ   f3QVU  K K K KKMMM   QVVXXv~ 6 6 6   QVVXXv~ 6 6 6 6 6r?cl|\}}|tj|jd|tj|jd|||}|}t r9||tj ||ddS||tj ||tj dS)N{Gz?) spawn_children_pairrEr6rurLrUr rBrMrN)r9child grandchild child_retgrandchild_rets r=test_wait_non_childrenz"TestProcess.test_wait_non_childrens !4466z &/TBBB &/$GGG JJLL #**  8   Y 8 8 8   ^T 2 2 2 2 2   Y 7 7 7   Y 7 7 7 7 7r?c0|}||tj|jd|tj|jd|t |jddS)Nr{r)r>namerEr6rurL ValueErrorrGs r=test_wait_timeoutzTestProcess.test_wait_timeoutsz       &/>>> &/;;; *afb11111r?cr|}|tj|jd|t jtz}t j|krC |d}nA#tj$rYnwxYwt j|kC|dtr"| |tj n | |tj ||dS)Nrrs)r>rEr6rurLrKtimerfailr rBrMrOrNrP)r9rHstop_atrRs r=test_wait_timeout_nonblockingz)TestProcess.test_wait_timeout_nonblockings      &/;;; )++.ikkG## vvayy(     ikkG##))I&& &  3   TFN? 3 3 3 3   T6> 2 2 2 q!!!!!sBB*)B*ctj}|d|dtdD]I}|d}||t ||dJ|t5|dddddS#1swxYwYdS)Nrr)intervaldr) r6r7 cpu_percentrangeassertIsInstancefloatassertGreaterEqualrEr)r9rH_percents r=test_cpu_percentzTestProcess.test_cpu_percents N   u %%% u %%%s 2 2AmmTm22G  ! !'5 1 1 1  # #GS 1 1 1 1   z * * ' ' MM2M & & & ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's3CCCctjdd5}tj|jsJ ddddS#1swxYwYdS)Nzpsutil.cpu_count) return_value)r(r_r6r7rcalled)r9ms r=test_cpu_percent_numcpus_nonez)TestProcess.test_cpu_percent_numcpus_nones Z* > > > ! N   ( ( * * *8OO8O                  s/AAAc tj}|jdks|jdks J||jdks J||jdks J|tr|jdks J||j D]7}tj dtj t||8dS)Nrz%H:%M:%S)r6r7 cpu_timesusersystem children_userchildren_systemriowait_fieldsrstrftime localtimegetattr)r9timesrs r=test_cpu_timeszTestProcess.test_cpu_timess  **,, S  elS&8&8&85&8&89#s***U***%,,,u,,,  .<3&&&&&&M L LD M*dnWUD5I5I&J&J K K K K L Lr?ctjdd\}}tjdd\}}t ||gt ||gz dkr|d|d|t ||gt ||gz dkr|d|d|dS)N皙? expected: , found: )r6r7rrCrmaxminr)r9 user_time kernel_timeutimektimes r=test_cpu_times_2zTestProcess.test_cpu_times_2s!'!1!1!;!;!=!=bqb!A ;xzz"1"~ u E" # #c9e*<&=&= = D D))) JKK K e$ % %[%,@(A(A AS H H))) LMM M I Hr?z not supportedcftj}|}||dtjdkr||d||ttjdSNrrk)r6r7cpu_numr cpu_countrBassertInr)r9rHnums r= test_cpu_numzTestProcess.test_cpu_nums N  iikk Q'''     " "   S! $ $ $ aiikk5)9););#<#<=====r?cZ|}tj}|}t||z }|dkr|d|d|d|tjdtj|dS)Nrrrz, difference: z%Y %m %d %H:%M:%S)r>r create_timeabsrrr)r9rHnowr differences r=test_create_timezTestProcess.test_create_times     ikkmmoo s*++ >>)))"ssKKK=>> > )4>!--//+J+JKKKKKr?z POSIX onlyctj}|Dtjt d}|||dSdS)Ntty)r6r7terminalrCpathrealpathr-rB)r9rrs r= test_terminalzTestProcess.test_terminal)s`>##,,..  '""2e99--C   Xs + + + + + r?)only_ifcRtj}|}ttd5}|dddn #1swxYwY|}t sts||j |j | |j |j tr@||j |j | |j|jn@||j|j||j|j|}t|d5}t&r'|t+ddzdn|ddzdddn #1swxYwY|}||j |j ||j|j||j |j ||j|jtr@||j|j||j |j t-t/|D]H}t r|dkr|||d|||dIdS)Nrbwbxi@Basciirr)r6r7 io_countersopenr!readrr assertGreater read_countrB write_countr read_chars write_charsr read_bytes write_bytes get_testfnrwritebytesrlen)r9rHio1fio2is r=test_io_counterszTestProcess.test_io_counters0s2 N  mmoo *d # # q FFHHH               mmoo F3 F   s~s~ > > >   S_co > > > C""3>3>BBB  #/BBB  # #CNCN C C C  # #COS_ E E Emmoo $//##T * * 'a 'cGmW556666g &&&  ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' mmoo AAA AAA ??? ???  D   s @ @ @  # #CNCN C C Cs3xx / /A qAvv  # #CFA . . .  # #CFA . . . .  / /s$AA"%A" AGG #G z linux onlyctj}ts8||dtj|tjd|tjd|tjd|tjd|} |tj|t|tjdf| t5|tjddddn #1swxYwY|tj|t|tjdf|tjd|t|tjdf| t5|tjddddn #1swxYwY |tjdn#tj $rYnwxYw| td|jtjd| td|jtjd| td |jd|\}}|tjkrd}|||dS#|\}}|tjkrd}|||wxYw) Nrrkrvaluezioclass accepts no valuez$'ioclass' argument must be specified)r6r7rrBioniceIOPRIO_CLASS_NONEIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLEtuplerErreassertRaisesRegex)r9rHinitioclassrs r=test_ionice_linuxzTestProcess.test_ionice_linux[s N   F   QXXZZ]F,D E E E 11555 /333 /333 11555xxzz % HHV- . . .   U188::..1I10M N N N"":.. < <1;;; < < < < < < < < < < < < < < < HHV+ , , ,   U188::..1G0K L L L HHV+1H 5 5 5   U188::..1G0K L L L"":.. : :/q999 : : : : : : : : : : : : : : : /q9999&      " "6&2A 7 7 7  " "6&2A 7 7 7  " "B # # # #"NGU&222 HHWe $ $ $ $ $"NGU&222 HHWe $ $ $ $s{(A:N""F NFNFCN7"J% N%J))N,J)-N1!KNK%"N$K%%BN/Oz!not supported on this win versionctj}ts2||tj|} |tj||tj|tj||tj |tj||tjn#tj $rYnwxYw| td|jtjd| td|jtjdz||dS#||wxYw)Nz&value argument not accepted on Windowsrkrzis not a valid priority) r6r7rrBr IOPRIO_NORMALIOPRIO_VERYLOW IOPRIO_LOW IOPRIO_HIGHrer TypeErrorr)r9rHrs r=test_ionice_winzTestProcess.test_ionice_wins N   ?   QXXZZ)= > > >xxzz  HHV* + + +   QXXZZ)> ? ? ? HHV& ' ' '   QXXZZ): ; ; ; A+,,,  V-?@@@@&      " "C&.a # 9 9 9  " "5&,q0 2 2 2 HHTNNNNNAHHTNNNNs2"B"G E$3G E)&G (E))A G G7cddl}tjtj}dt tD}|s J||D]}t t|}||d|t |vri||t ||trk|| || || |}|t|d||dd||dddS)Nrc<g|]}|d|S)RLIMIT startswith.0rs r= z/TestProcess.test_rlimit_get..s)BBBq1<<+A+ABBBBr?rrrk) resourcer6r7rCrDdirrrrBr rlimit getrlimitr)r9rrHnamesrrrets r=test_rlimit_getzTestProcess.test_rlimit_gets[ N29;; ' 'BBCKKBBBeu 4 4DFD))E  # #E1 - - -s8}}$$  $(?(?@@@  %(2D2DU2K2KLLLLhhuoo  S1---''A333''A3333 4 4r?cR|}|tjd||tjdt re|td5tj dddddn #1swxYwY| t5|tjdddddS#1swxYwYdS)N)rlrlzcan't use prlimitr)rlrlrl) r>rr6 RLIMIT_NOFILErBrrr _psplatformr7rErGs r=test_rlimit_setzTestProcess.test_rlimit_setsy      %v... &"677@@@  8'' 4GHH 8 8"**1--44Q777 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8   z * * 6 6 HHV)9 5 5 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s$ 3C  C C .!DD #D ctj}|}|tj\}} |tjd|ft |d5}|ddddn #1swxYwY|t5}t |d5}|ddddn #1swxYwYdddn #1swxYwY| tr |j j n |j dtj |tj||f| |tj||fdS#|tj||f| |tj||fwxYw)NrsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr)r6r7rr RLIMIT_FSIZErrrEIOErrorrBr exceptionraEFBIG)r9rHtestfnsofthardrexcs r= test_rlimitzTestProcess.test_rlimitsw N  ""XXf122 d J HHV(4, 7 7 7fd## %q $$$ % % % % % % % % % % % % % % %""7++ )s&$'')1GGK((())))))))))))))) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )   CMS]00S]1=M"[ * * * HHV(4, 7 7 7   QXXf&9::T4L I I I I I HHV(4, 7 7 7   QXXf&9::T4L I I I Isz 2F0=B F0B##F0&B#'F0DC7+ D7C; ;D>C; ?D F0DF0DAF00AH ctj}|tj\}} |tjd|f|tjtj|ft |d5}|ddddn #1swxYwY|tj||f||tj||fdS#|tj||f||tj||fwxYw)Nr rsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) r6r7rr RLIM_INFINITYrrrrB)r9rHrrrs r=test_rlimit_infinityz TestProcess.test_rlimit_infinitys N  XXf122 d J HHV(4, 7 7 7 HHV(6+?*F G G Gdoo''.. %! $$$ % % % % % % % % % % % % % % % HHV(4, 7 7 7   QXXf&9::T4L I I I I I HHV(4, 7 7 7   QXXf&9::T4L I I I Is1A0D-'C = D- C  D-C D--AFctj}|tj\}}|tj||tj||fdSr4)r6r7rrrBr)r9rHrrs r=test_rlimit_infinity_valuez&TestProcess.test_rlimit_infinity_valuesc N  XXf122 d -t444 $tTl33333r?ctj}tr= |}n;#tj$rt jdwxYw|}t5|}|||dzddddS#1swxYwYdS)N$on OpenBSD this requires root accessrk) r6r7r num_threadsreunittestSkipTestr$rB)r9rHstep1step2s r=test_num_threadszTestProcess.test_num_threadss N    $ P & P P P'(NOOO PMMOOE \\ / /MMOOE   UEAI . . . / / / / / / / / / / / / / / / / / /s1$A:.B55B9<B9z WINDOWS onlyc|tj}||ddSNr)r6r7r num_handlesrGs r=test_num_handleszTestProcess.test_num_handless5 N   1==??A.....r?ctj}tr= |}n;#tj$rt jdwxYw|}t5|}|t|t|dz|d}||j |d||j |d||j |dddddS#1swxYwYdS)Nrrkrr) r6r7r threadsrerr r$rBridr system_time)r9rHr!r"athreads r= test_threadszTestProcess.test_threadsso N     P & P P P'(NOOO PIIKKE \\ > >IIKKE   SZZUa 8 8 8AhG   WZ 4 4 4   W. ; ; ;   W0'!* = = = > > > > > > > > > > > > > > > > > >s1$A:B3D::D>D>c|}tr= |n'#tj$rt jdwxYw||j td|Dd||j td|DddS)Nrcg|] }|j S)rrs r=rz.TestProcess.test_threads_2../s222222r?r)deltacg|] }|j Sr0)r+rs r=rz.TestProcess.test_threads_2..2s4441444r?) r>r r)r6rerr assertAlmostEqualrrsumrrGs r=test_threads_2zTestProcess.test_threads_2"s       < < & < < <':<<< <  KKMM  22aiikk222 3 33  @ @ @  KKMM 44 444 5 5S  B B B B Bs 2$Actj}|dd\}}|}||d||ddgdz}|dd\}}|}|||||||||~t rT|} || j| j || j | j |} | j D]&} |t| | d'dS)Nrri`)r6r7 memory_infomemory_percentrrr rBrsswsetvmspagefilerr) r9rHrss1vms1percent1memarrrss2vms2percent2memrs r=test_memory_infozTestProcess.test_memory_info4s| N  ]]__RaR( d##%% 4### 4###'!]]__RaR( d##%% 4&&& d+++ 8X...   4--//C   SWch / / /   SWcl 3 3 3mmooK ; ;D  # #GC$6$6 : : : : ; ;r?c*tj}tjj}|}|jD]\}t ||}||d||f|dkrtstrA| |||||f]tststr||j dtr8||jd||jddSdS)Nr)msgr;)r6r7virtual_memorytotalmemory_full_inforrrr rassertLessEqualr russpssswap)r9rHrIrDrrs r=test_memory_full_infoz!TestProcess.test_memory_full_infoSs! N  %''-  ""K I IDC&&E  # #E14- # @ @ @u}}}}  D%3G H H H H  0G 0u 0  # #CGQ / / /  1  # #CGQ / / /  # #CHa 0 0 0 0 0 1 1r?ctj}|}|t |t t ||d}|D]}|jdsotj |jsJ|jtr tj |js3tj |jsJ|j#t$rTtstd5}|}dddn #1swxYwYd|jz|vrYwxYwdtj|jvrU tj|j}t%j|jsJ|j|#t*$rYwxYw|D]f}|jD]\}t/||} |dkr|dvr | s J| *|| t2t4f| d ks J| ]gdS) NF)grouped[z/proc/self/smapsz %s (deleted)64r)addrpermsr)r6r7 memory_mapsrBrsetrrrCisabsr existsislinkAssertionErrorrrrbasenamestatS_ISREGst_moderrrrintr) r9rHmapsext_mapsntrdatastfnamers r=test_memory_mapszTestProcess.test_memory_mapscs N  }} TCD NN333===// E EB7%%c** Ew}}RW--66rw66-E &!w~~bg66=GNN2733==57W== 4)&&&$&!"++=!>!>0!'(vvxx000000000000000-7tCC % DC&27#3#3BG#<#<<<E!#!1!1B$(< #;#;DDRWDD#;D 1!!! D! - -B - -E**F??/// ''%''5'))%#t=== A:::u:::: - - -sIAD..!F E0$ F 0E4 4F 7E4 8F  F 6G99 HHctj}t5}dfd|D}|||ddddS#1swxYwYdS)Ncztjtj|Sr4)rCrrnormcase)rHs r=normpathz8TestProcess.test_memory_maps_lists_lib..normpaths(w''(8(8(;(;<<.s5222!((222r?)r6r7r&rVr)r9rHrlibpathsrks @r=test_memory_maps_lists_libz&TestProcess.test_memory_maps_lists_libs N   " " 4d = = =2222!"222H MM((4..( 3 3 3  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4sAA33A7:A7ctj}||t|jdt st str|ddSdS)Nz?!?)memtyperL)r6r7r8rErrrr rGs r=test_memory_percentzTestProcess.test_memory_percents| N    *a&6FFF  ,E ,W ,  U  + + + + + , ,r?c.|}|sJ|sJ|||rJ|rJdSr4)r> is_runningrKrLrGs r=test_is_runningzTestProcess.test_is_runnings     ||~~~||~~~  <<>>!!!<<>>!!!!!r?c|}|} ||tn#t$rt rdt |t tkr?tjj }||||tnvtj ddtj d} || |dtj |dn#t$rYnwxYwYnwxYwt|ddg}||ddS)Nr.rkr\rhzimport os; print('hey')hey)r>exerBr!r[r rrCrrjsys version_inforeplacer-)r9rHrxrjverouts r=test_exezTestProcess.test_exesl     eegg    S* - - - -    3s88s:667+  #0D0DEEEE"%!1!!4!4!4c6Fq6I6IJ$$S[[b%9%9%/%7R%@%@BBBB%D! (#t6788 e$$$$$s6ABD4#=D! D4! D.+D4-D..D43D4ctddg}||}tststr5||dtdStrtr|d}|tkr`|d |ddd |dddS|d |d |dS)Nrhzimport time; time.sleep(60)r rk) r!r>rr rrBcmdlinerrjoin)r9rrHpyexes r= test_cmdlinezTestProcess.test_cmdlinest%BC   g & &  GW G G   QYY[[^Z 8 8 8 8 8   AJ&&$$SXXaiikk!""o%>%>%(XXgabbk%:%:<<<F   SXXaiikk22CHHW4E4E F F F F Fr?zbroken on PYPYc|}t||gdgdzz}||}trS |||dS#t j$r|dwxYw|||dS)N 0123456789z#OPENBSD: process turned into zombie) rr'r>r rBrr6 ZombieProcessskipTest)r9rrrHs r=test_long_cmdlinezTestProcess.test_long_cmdlines""6(|nr12   g & &  3 K  g66666' K K Kmm$IJJJ K   QYY[[' 2 2 2 2 2s (A55%Bcx|t}|}tjtjtj }| |s J||fdSr4) r>r!rlowerrCrr\rry executabler)r9rHrrs r= test_namezTestProcess.test_names   j ) )vvxx~~  !1!1#.!A!ABBHHJJ%%44t}44%44r?zunreliable on PYPYc|d}t|||}tr ||t j|dS#t$rn| tj krGt j| |sJnYdSwxYw||t j|dS)N01234567890123456789suffix)rr'r>r rBrrCrr\r[statusr6 STATUS_ZOMBIEr)r9rrHs r=test_long_namezTestProcess.test_long_names$(8996   f % %  A   27+;+;F+C+CDDDDD!   88::!5557++F33>>qvvxxHHHHHHIHH    QVVXXrw'7'7'?'? @ @ @ @ @sAB A4DDzbroken on SUNOSz broken on AIXc*|d}t||ddddddg}||}|||||t j||t j | t j |dS)Nz foo bar )rrhz9import time; [time.sleep(0.01) for x in range(3000)];arg1arg2r\arg3) rr'r>rBrrrCrr\rjrx)r9 funky_pathrrHs r=test_prog_w_funky_namez"TestProcess.test_prog_w_funky_names__K_88 :t!2vr3   g & & g... 27#3#3J#?#?@@@ ))!%%''22))*55 7 7 7 7 7r?ctj}|\}}}||t j||t jttdr;|t j|dSdSN getresuid) r6r7uidsrBrCgetuidgeteuidhasattrrr9rHreal effectivesaveds r= test_uidszTestProcess.test_uids N  !"i ry{{+++ BJLL111 2{ # # 7   R\^^QVVXX 6 6 6 6 6 7 7r?ctj}|\}}}||t j||t jttdr;|t j|dSdSr) r6r7gidsrBrCgetgidgetegidr getresgidrs r= test_gidszTestProcess.test_gids(rr?c(tj}|t|jd|} t rd}tjtjtjtj tj tj fD]}| |5 |||}tr!||ks||}|||n,|||n#tj$rYnwxYwdddn #1swxYwYnn t!t"drV|t#jt"jt#j||d||dt!t"drV|t#jt"jt#j|t*s=|d||dn#tj$rYnwxYw ||dS#tj$rYdSwxYw# ||w#tj$rYwwxYwxYw)Nstr)prio getpriorityrkr)r6r7rErnicer IDLE_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSNORMAL_PRIORITY_CLASSABOVE_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSREALTIME_PRIORITY_CLASSsubTestrrBrerrCr PRIO_PROCESSrDr)r9rHr highest_priornew_prios r= test_nicezTestProcess.test_nice6s> N   )QVU333vvxx0 *  $ #7#?#9#?#7#; =AAD 400 A A AFF4LLL()vvxxH)A#+t#3#3|7K37L $ 0 0< H H H H $ 0 04 @ @ @ @ &2!!! D! A A A A A A A A A A A A A A A A(r=11&((N2?BIKKHHFFHH&&&FF1III$$QVVXXq111r=11&((N2?BIKKHHFFHH&&& !6q ((1555*D t &     t &    s A%K$/D:1DAD:D+(D:*D++D:. K$:D> >K$D> K$ EJ! K$!J30K$2J33K$7KK! K!$L&K<;L<L L LLctj}||tjdSr4)r6r7rBrSTATUS_RUNNINGrGs r= test_statuszTestProcess.test_statusls6 N   V%:;;;;;r?c|}|}tr|d\}}t j}|drtjd| ||dtj vr(| |tj ddSdS| |t jdS)N\$zrunning as service account USERDOMAIN) r>usernamer splitgetpassgetuserendswithrr rBrCenviron)r9rHrdomain getpass_users r= test_usernamezTestProcess.test_usernameps     ::<<  :'~~d33 FH"?,,L$$S)) F'(DEEE   X| 4 4 4rz))  L)ABBBBB*)   Xw'8'8 9 9 9 9 9r?c|}||tjdSr4)r>rBcwdrCgetcwdrGs r=test_cwdzTestProcess.test_cwds=      ")++.....r?cntddg}||}t|jddS)Nrhz/import os, time; os.chdir('..'); time.sleep(60)z#ret == os.path.dirname(os.getcwd()))r!r>r%r)r9rorHs r= test_cwd_2zTestProcess.test_cwd_2s>4@B   c " "15?@@@@@r?c tj}|}|s J|||j|t t dr:||tt j|j |t|tt|ttttj d}|D]}||g|||gt t drL||tt j|j t |dr@||d||gtr@|||jn(|||t t drL||tt j|j |t&|jd|||t||t)|dS)Nsched_getaffinityTpercpunum_cpurrk)r6r7 cpu_affinity addCleanuprrCrBlistrr8rrWrrrr_proc_get_eligible_cpusrErr)r9rHinitialall_cpusns r=test_cpu_affinityzTestProcess.test_cpu_affinitys N  ..""w 000 2* + + I   Wd2+?+F+F&G&G H H H Ws3w<<'8'8999c&"4D"A"A"ABBCCDD C CA NNA3      Q^^--s 3 3 3r.// D  !1!1!%b&:15&A&A!B!BDDDq)$$ C  !1!1!!4aiikkBBB r  9   Q^^--qw/I/I/K/K L L L L   Q^^--x 8 8 8 2* + + @   Q^^--!""6qu"="=>> @ @ @ )Q^Q777 w s8}}%%% uX'''''r?c|}ttjddzg}|t |j||t |jtdd|t|jddg|t |jddgdS) NTr i'i*r1r) r>rr6rrErrrr)r9rH invalid_cpus r=test_cpu_affinity_errsz"TestProcess.test_cpu_affinity_errss     6+488899B>?  *ankBBB *aneE56I6IJJJ )Q^aX>>> *anq"g>>>>>r?cVtj}|}|s J|||j|t |dkr |dd}g}t dt |dzD]>}t j||D]&}|r"|t|'?|D]Y}||| t|t|ZdS)N rrk) r6r7rrrr itertools combinationsappendrrBsorted)r9rHrcombosrsubsetcombos r="test_cpu_affinity_all_combinationsz.TestProcess.test_cpu_affinity_all_combinationss4 N  ..""w 000 w<<"  crclGq#g,,*++ 0 0A#0!<< 0 00MM$v,,/// 0 F FE NN5 ! ! !   VANN$4$455ve}} E E E E F Fr?z broken on BSDzunreliable on APPVEYORcvtj}|}|}|||t |d5}|d|t|jdt|z}d|D}| tj ||tr+|D](}|j |kr||jd)dddn #1swxYwY|D]0}tj |j s J|1d|z}|t&d|g}t)dD]:}d |D}||vrnHt+jd ;| tj |||D]+}tj |s J|,dS) Nrsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzlen(ret) != %icVg|]&}tj|j'Sr0rCrrjrs r=rz/TestProcess.test_open_files..s*AAAa))!&11AAAr?r z2import time; f = open(r'%s', 'r'); time.sleep(60);rhrcVg|]&}tj|j'Sr0rrs r=rz/TestProcess.test_open_files..s*JJJa))!&11JJJr?r{)r6r7r open_files assertNotInrrflushr%rrrCrrjrrBpositionisfiler>r!rrsleep) r9rHrfilesr filenamesfilerrs r=test_open_fileszTestProcess.test_open_filesse N  ""  ''' &$   >1 GGK GGIIIq|-=E -JKKEAA5AAAI MM"'**622I > > > >!>>DyF**((=== > > > > > > > > > > > > > > > 3 3D7>>$),, 2 2d 2 2, 2GO   z49 : :s ? ?AJJ1<<>>JJJI"" JsOOOO MM"'**622I > > > . .D7>>$'' - - - -' - . .s"CD..D25D2ctj}tjj}|}t |d5}|D]C}||j||jks|j | krn8D| dt|z| ||j||jtr| |j dn-| |j | |d}| |d|j| |d|j ||j|ddddS#1swxYwYdS)Nwzno file found; files=%srrrk)r6r7rCrrjrrrrfdfilenorreprrBr r)r9rHrjrfileobjrntuples r=test_open_files_2zTestProcess.test_open_files_2s N  7#"" &#   ;'  7 78DI&&((7<*@*@@@7>>#3#333E4ii 9 $Q\\^^ 4 4!6777   XXdi00((7<2H2H I I I <  "----  '..*:*:;;;\\^^A&F   VAY 4 4 4   VAY 2 2 2   W\1<<>> : : :% ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s FG11G58G5cvtj}|}|}t |d}||j|||dztj}||j|||dz|||||dS)Nrrkr) r6r7rnum_fdsrrcloserBsocket)r9rHrstartrsocks r= test_num_fdszTestProcess.test_num_fdss N  "" FC    ### eai000}  ### eai000   e,,,,,r?z not reliable on OPENBSD & NETBSDc tj}t|}t dD],}t|}||krdS-|d)Ni z7num ctx switches still the same after 50.000 iterations)r6r7r4num_ctx_switchesrr)r9rHbeforerafters r=test_num_ctx_switchesz!TestProcess.test_num_ctx_switches!s N  Q''))**v  A**,,--Ev~~ii EGG Gr?cttj}ttdr9||tj|}||tjtrdSdS)Ngetppid) r6r7rrCrBppidrr>rDrrGs r= test_ppidzTestProcess.test_ppid-s N   2y ! ! 5   QVVXXrz|| 4 4 4      29;;///   F   r?cN|}||jt jt jd}|t j |dSr%) r>rBparentr8rCrDr6pids assertIsNoner7)r9rH lowest_pids r= test_parentzTestProcess.test_parent9sy      555[]]1%  &.44;;==>>>>>r?ctj}|\}}||||||dSr4)r6r7r|rBrr9rr}r~s r=test_parent_multizTestProcess.test_parent_multi@sk!! 4466z **,,e444 00000r?c|}tjdtjdd5||ddddS#1swxYwYdS)Npsutil.Processrfoor])r>r(r_r6rcrrrGs r=test_parent_disappearedz#TestProcess.test_parent_disappearedFs      Z($*$8E$B$BDDD * *   ahhjj ) ) ) * * * * * * * * * * * * * * * * * *s(A33A7:A7ctj}|sJ|\}}||d|||d|||d|dSr)r6r7parentsr|rBrs r= test_parentszTestProcess.test_parentsMs!!~~ 4466z +V444 ++--a0%888 ++--a0&99999r?cVtj}||g||dg|d}|}|d}||fD]~}|t |d||dj|j||d|jdS)NT recursiver) creationflagsrk)r6r7rBchildrenr>rr8r)r9rr} children1 children2r+s r= test_childrenzTestProcess.test_childrenVs!! **B/// 488"===!!!22OO%% OOdO33 "I. = =H   S]]A . . .   Xa[_ei 8 8 8   Xa[--// < < < < = =r?ctj}|\}}|||g||d||g||||dgdS)NTr()r6r7r|rBr+rUrLrs r=test_children_recursivez#TestProcess.test_children_recursivees!! 4466z **UG444 4885*:MNNN   488"=====r?cttjt}tjD]:} ||xxdz cc<&#tj$rY7wxYwt|ddd}tr|dkr| dtj |} | d}| t|tt|dS#tj$rYdSwxYw) Nrkc|dS)Nrkr0)rs r=z6TestProcess.test_children_duplicates..{s !A$r?)keyrrzPID 0Tr() collections defaultdictr`r6 process_iterrErrorritemsrrr7r+rBrrWre)r9tablerHr8cs r=test_children_duplicatesz$TestProcess.test_children_duplicatesrs9',,$&&  A affhh1$<    U[[]]777;A>  )SAXX--(( ( N3   2 T **A   SVVSQ[[ 1 1 1 1 1"    DD s#"AA%$A%D$$D76D7ctj}|\}}|d}|t |d||d|||d||}||d|||d|dS)NTr(rrrk)r6r7r|r+rBrr%)r9rr}r~r+r%s r=test_parents_and_childrenz%TestProcess.test_parents_and_childrens!! 4466z??T?22 X*** !e,,, !j111$$&& U+++ V,,,,,r?cv|}|tdD]:}|tjkrnt jd;|| |tjdS)Nrr{) r>rwrrr6STATUS_STOPPEDrrrxassertNotEqual)r9rHrs r=test_suspend_resumezTestProcess.test_suspend_resumes      s  AxxzzV222 Jt       AHHJJ(=>>>>>r?c|ttjd|ttjddS)Nrr)rErr6r7rr9s r=test_invalid_pidzTestProcess.test_invalid_pids< )V^S999 *fnb99999r?ctj}|ddg}|t |ddgtjt tj}|dgd}t|dts||ddtj ddtj 5||d gd d d idddn #1swxYwYtj ddtj |jd 5|tj |jd gdddn #1swxYwYtj ddtj|jd 5||d gdd didddn #1swxYwYtj ddt" 5|}|d t||t"5|d gdddn #1swxYwYdddn #1swxYwY|t&5|ddddn #1swxYwY|t(5|dgdddn #1swxYwY|t(5|dd gddddS#1swxYwYdS) Nrxr)attrs connectionsr")rGad_valuezpsutil.Process.niceT)creater^rrkbar)r6r7as_dictrBrkeysrr isinstancerr(r_rercr8rErNotImplementedErrorrrr)r9rHds r= test_as_dictzTestProcess.test_as_dicts N   IIUFOI , , ))E6?;;; N3v{}}-- . . II]OeI < <!M*D11 6   Q}-u 5 5 5Z-d$*$7999 D D    1 55{ D D D D D D D D D D D D D D D D D D Z-d$*$8$G$GIII A A   $aix  A A A A A A A A A A A A A A A A A A Z-d$*$8$G$GIII L L    5 99FE? L L L L L L L L L L L L L L L L L LZ-d$7999 * * A   VT!&&((^^ 4 4 4""#677 * *  ))) * * * * * * * * * * * * * * *  * * * * * * * * * * * * * * *  y ) )   IIf                     z * *   IIug                     z * * & & IIuen % % % & & & & & & & & & & & & & & & & & &s/EEE:)F//F36F3)/H$$H(+H( A$K*/K K*K K*K K**K.1K.L11L58L5M99M=M=OO Oc@tj}tjd5}|5||dddn #1swxYwY||jddddn #1swxYwYtjd5}||dddn #1swxYwY||jddS)N$psutil._psplatform.Process.cpu_timesrkrr6r7r(r_oneshotrrB call_countr9rHrs r= test_oneshotzTestProcess.test_oneshots N   Z> ? ? .1                      Q\1 - - -  . . . . . . . . . . . . . . . Z> ? ? 1 KKMMM KKMMM                q)))))sFB$)A2& B$2A6 6B$9A6 :B$$B(+B()C88C<?C<c vtj}tjd5}tjd5}|5|||5||dddn #1swxYwYdddn #1swxYwY||jd||jddddn #1swxYwYdddn #1swxYwYtjd5}||dddn #1swxYwY||jddS)NrSz(psutil._psplatform.Process.oneshot_enterrkrrT)r9rHm1m2rs r=test_oneshot_twicezTestProcess.test_oneshot_twices N   Z> ? ? 32FGG 32YY[[&&KKMMMKKMMM&&  &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&   222  222 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3Z> ? ? 1 KKMMM KKMMM                q)))))sD?D(=C)C 8 CC C C C D(C D("C #9D( D?(D, ,D?/D, 0D??EE)FFFc|\}}|}|}||||5||||||dddn #1swxYwY|5||||||ddddS#1swxYwYdSr4)r|rrArUrB)r9p1p2p1_ppidp2_ppids r=test_oneshot_cachezTestProcess.test_oneshot_caches))++B''))'')) GW--- ZZ\\ 1 1   RWWYY 0 0 0   RWWYY 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1ZZ\\ 1 1   RWWYY 0 0 0   RWWYY 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s&*ACC C &AEE Ec@fd}}||tr"t t jd|jz|t|}| |j D]\}}|||trYtsTtjj}|||t$dSdSdS)Nc |}tr|dvrdS|d|d#tj$rtj$rYdStj$rt r|dvrYdSwxYw)N)rxrz didn't raise NSP and returned z instead)r)r)r rr6rrcrer )funfun_namerr9s r=assert_raises_nspzFTestProcess.test_halfway_terminated_process..assert_raises_nsps 8ceex?::Fii-0SS###!7888'   '   &   x+EEEFF s 5A4A42A4z %s not in ret)r>rUrLr r%r6rr8rPr)iterallrrCrrjrBrxr!)r9rgrHnsrerrjs` r=test_halfway_terminated_processz+TestProcess.test_halfway_terminated_processs- 8 8 8 8 8$         = v{Oae$; < < < q!!! q ! ! ) )IC  c4 ( ( ( (  F> Fw'H   XXaeegg..0D0D E E E E E F F F Fr?cd}|\}}tj|j}||tj|sJ|t|}| |j D]\}}||tj |jsJ| |jtj| |jdtjDit_| |jdtjDdS)Nc\ |S#tjtjf$rYdSwxYwr4)r6rre)res r=succeed_or_zombie_p_excz@TestProcess.test_zombie_process..succeed_or_zombie_p_exc+s? suu (&*=>    s ++cg|] }|j Sr0r8rs r=rz3TestProcess.test_zombie_process..J!G!G!GA!%!G!G!Gr?cg|] }|j Sr0rprs r=rz3TestProcess.test_zombie_process..Lrqr?) spawn_zombier6r7r8rBrrrsrLr)rhri pid_existsrrr7_pmap)r9rnrzombiezprocrjrers r=test_zombie_processzTestProcess.test_zombie_process)s_    **,,vz** )=>>>!!!!! u % % ) )IC # #C ( ( ( ( +++++ ei/// ei!G!G1D1F1F!G!G!GHHH  ei!G!G1D1F1F!G!G!GHHHHHr?ctj}tjdtjd5}|sJ|jsJ ddddS#1swxYwYdS)Nr!rr])r6r7r(r_rrsrrWs r=$test_zombie_process_is_running_w_excz0TestProcess.test_zombie_process_is_running_w_excNs N   Z($*$8$;$;=== @A<<>> ! !>8OO8O                  s A**A.1A.c&tj}tjdtjd5}||tj|jsJ ddddS#1swxYwYdS)Nz!psutil._psplatform.Process.statusrr]) r6r7r(r_rrBrrrrWs r= test_zombie_process_status_w_excz,TestProcess.test_zombie_process_status_w_excXs N   Z;$*$8$;$;=== @A   QXXZZ)= > > >8OO8O                  s>!!!FN48,,,,,,D v3S!)DDD v3S!(CCC v3S!+FFF v3S!&AAA v3S!*EEEEEr?cdtjvr}|tjtjdtjdrJ|tjdddStjd}tr tj nt}|||j |||j |||j |||j|||j|||jt"jt'|}||j|jzD]\}} |}|dvr||jd0|dkr4trdnd}|||j|dkr |s J|}#tj $rYwxYwt2s=|dtjtjdsJdSdS)Nrrk)rrrzNT AUTHORITY\SYSTEMrootr)r6rrErcr7rtrBrr rerrLrUrwrxrKrXrMrNr)rhgetterssettersrrr r)r9rHrrjrerrrs r= test_pid_0zTestProcess.test_pid_0psh FKMM ! !   f2FNA F F F(++ + ++   V^A..3355q 9 9 9 F N1  %,.clean_dict..sp(((Q))D"%%--dB77))D"%%--dB779(((r?)poprdictr9)rPs r= clean_dictz,TestProcess.test_environ..clean_dicts EE&$    EE&$    8/6666===0$777((WWYY((()) )r?) maxDiffr6r7rrCcopyr rrB)r9rrHd1d2s r= test_environzTestProcess.test_environs ) ) ) N   Z $ $ Z )) * * %~ %   R $ $ $ $ $ % % % %r?z #include char * const argv[] = {"cat", 0}; char * const envp[] = {"A=1", "X", "C=3", 0}; int main(void) { // Close stderr on exec so parent can wait for the // execve to finish. if (fcntl(2, F_SETFD, FD_CLOEXEC) != 0) return 0; return execve("/bin/cat", argv, envp); } )c_code)stdinrjr?r3)ACr)textwrapdedentrr'r5rmrnr6r7r8r0rsrBrjrrrrre communicate returncode)r9rRrr<rHenvs r=test_weird_environzTestProcess.test_weird_environsg   4%%%%## F*/*/$CC N59 % %QU||~~~ **,,c222  Z  iikk&     ))++C Cc22333  )1-----s&C;;D DN)l__name__ __module__ __qualname____doc__r>rIrSrVrZrskipIfr rfrprryrrrrrrrrrrrrr/rrrrr rrrr rrrr#r'rr-r,r.rr5rErOrrgrnrqrtr~rr rrrr rrrrrrrrrrrrrrrrrr r rrrrr#r&r.r0r<r>rBrErQrXr\rbrkrxrzr|rrrrrrr0r?r=r2r2Ls< )))))  """""" " " "X_Y ,, G G-, G"""6X_V.//770/7*888*222"""& ' ' ' L L L N N NX_))?;;>><;>LLL X_Y --,,.-, X_--??U+++'/'/,+@?'/RX_^_55X_Y --(%(%.-65(%TX_^_55X_["EFFGF656X_^_5544654,X_^_55 6 665 6X_^_55JJ65J&X_^_55 J J65 JX_^_55 4 465 4///"X_[.11//21/ X__o66>>76>&5)))X__o66 B B76*) B;;;<111 X_(/::*-*-;:*-XX_(/::44;:4,,,"""%%%8GGG&X_T+,, 3 3-, 3555 X_T/00AA10A.X_U-..X_S/**X_T+,, 7 7-,+*/. 7X_Y -- 7 7.- 7X_Y -- 7 7.- 7444l<<<:::"///AAA X_))?;;%(%(<;%(NX_))?;;??<;?X_))?;;FF<;F(X_S/**X_X788..98+*.DX_S/**X_X788;;98+*;2X_Y -- - -.- -U+++X_W&(JKKGGLK,+G   ???111 ***::: = = = > > >222( - - -???:::,&,&,&\ * * ****( 1 1 1(F(F(FTX_Y --"I"I.-"IHX_Y --.-X_Y --.- F F F%(%(%(NX__o66%%76%*X__o66X_Y --X_F%.%. .-76 %.%.%.r?r2ceZdZdZeedrejZejZ fdZ fdZ fdZ dZ ejddd ZxZS) LimitedUserTestCasezRepeat the previous tests by using a limited user. Executed only on UNIX and only if the user who run the test script is root. rc tj|i|dt|DD];}t||fd}t ||t j||.s)FFFqf1E1EFFFFr?cJ dS#tj$rYdSwxYwr4)r6re)r9meths r=test_z+LimitedUserTestCase.__init__..test_s<!.s "")r__init__rrsetattrtypes MethodType)r9r:r;attrrr __class__s @r=rzLimitedUserTestCase.__init__s EGG d -f - - -GFCIIFFF C CtT** dE$4UD$A$ABBBB C Cr?cttjdtjddS)Ni)rsetUprCsetegidseteuidr9rs r=rzLimitedUserTestCase.setUps: GGMMOOO Jt    Jt     r?ctj|jtj|jt dSr4)rCr PROCESS_UIDr PROCESS_GIDrtearDownrs r=rzLimitedUserTestCase.tearDownsE Jt' ( ( ( Jt' ( ( ( GG       r?c tjd|d#tj$rYdSwxYw)Nrzexception not raised)r6r7rrrerDs r=rzLimitedUserTestCase.test_nices_ 8  %%b)))ii 6777&    s&=AArkzcauses problem as rootcdSr4r0rDs r=rxz'LimitedUserTestCase.test_zombie_process s Dr?)rrrrrrCrrrrrrrrrrrx __classcell__)rs@r=rrs  72x  &#")++K#")++K C C C C C             8 8 8 4 5 5   6 5     r?rc:eZdZdZedZdZdZdZdS) TestPopenzTests for psutil.Popen class.c"tdSr4r*)clss r= tearDownClasszTestPopen.tearDownClasssr?ctddg}tj|tjtjt 5}|||j| t|| tt|d|dddn #1swxYwYtr6||dt$j dS||dt$jdS)Nrhimport time; time.sleep(60);stdoutrjrr"rl)r!r6Popenrmrnr"rrr assertTruerrErFrrUr rBrLrMrNr9roprocs r= test_misczTestPopen.test_miscsM4!?@ \#jo!+nFFF IM IIKKK NN    JJ OOCII & & &   ngtU C C C NN                    ;   TYYq\\FN? ; ; ; ; ;   TYYq\\6> : : : : :sBCCCcntjtdgtjtjtjt 5}|dddn #1swxYwY|jjsJ|j jsJ|j jsJ| |j ddS)Nz-V)rrjrrr) r6rr!rmrnr"rrclosedrjrrBr)r9rs r=test_ctx_managerzTestPopen.test_ctx_manager/s \:t,!+!+ *^EEE IM                       {!!!!{!!!!z     !,,,,,sA%%A),A)ctddg}tj|tjtjt 5}|||tj |j|tj |j |tj |j tj tr`|tj |j tj|tj |j tjddddS#1swxYwYdS)Nrhrr)r!r6rrmrnr"rUrLrErcrKrXrMrNr CTRL_C_EVENTCTRL_BREAK_EVENTrs r=test_kill_terminatezTestPopen.test_kill_terminate:sl4!?@ \#jo!+nFFF ;IM NN    IIKKK   f2DN C C C   f2DI > > >   f2D4D$n . . . ;!!&"68H"("5777!!&"68H"("9;;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;sD EEEN) rrrr classmethodrrrrr0r?r=rrs`''[;;;$ - - -;;;;;r?r__main__) run_from_name)Grr5rarrrCrMr r]rmryrrrrr6rrrrrr r r r r psutil._commonrpsutil._compatrrrr psutil.testsrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r+r,r-r.r/r0r2rrrrpsutil.tests.runnerr__file__r0r?r=rs&%     $$$$$$,,,,,, !!!!!!######''''''''''''))))))$$$$$$######(((((())))))------######$$$$$$%%%%%%######''''''''''''############,,,,,,######******&&&&&&))))))......000000%%%%%%L.L.L.L.L..L.L.L.h, .YRY[[A  ,,,,,k,,,h5;5;5;5;5;5;5;5;p z111111M(r?