0idZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ddlm,Z,ddlm-Z-ddlm.Z.ddlm/Z/ddlm0Z0dd lm1Z1dd!lm2Z2dd"lm3Z3dd#lm4Z4dd$lm5Z5dd%lm6Z6dd&lm7Z7dd'lm8Z8dd(lm9Z9dd)lm:Z:dd*lm;Z;Gd+d,e.Z<Gd-d.e.Z=y)/Tests for psutil.Process class.N)mock)AIX)BSD)LINUX)MACOS)NETBSD)OPENBSD)OSX)POSIX)WINDOWS) open_text) 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_c_exe) create_py_exe)process_namespace)pytest reap_children)retry_on_failure)sh)skip_on_access_denied)skip_on_not_implemented) wait_for_pidc6 eZdZdZdZdZdZdZejje ddZ d Z ejjed d Zd Zd ZdZdZdZdZejje ddZdZejje ddZejje deedZejje dejje ddZejje dejje ddZ!ejje" ddZ#ejje" ddZ$ejje" ddZ%ejje" dd Z&ejje" dd!Z'ejjQd"#d$Z)ejje d%d&Z*ejje+ dd'Z,e-e.e/ejje+ dd(Z0e-d)Z1d*Z2ejje3 dd+Z4ejje3 dd,Z5d-Z6d.Z7d/Z8d0Z9d1Z:d2Z;e-d3Zd6Z?d7Z@d8ZAd9ZBd:ZCejjeD dd;ZEejjeD dd<ZFejjeD dd=ZGejjeHd>d?ZIejjeHd>d@ZJejje dejjQd"#dAZKeeejjeLxsedBdCZMdDZNdEZOdFZPdGZQe-dHZRdIZSdJZTdKZUdLZVdMZWdNZXdOZYdPZZdQZ[dRZ\dSZ]dTZ^ejje ddUZ_ejje ddVZ`ejje ddWZadXZbdYZcejjed ddZZeejjed dejje dejjefd[ejjed\d]Zgy^)_ TestProcessrctj}|jtjk(sJt j t5d|_dddy#1swYyxYw)N!)psutilProcesspidosgetpidr%raisesAttributeErrorselfps J/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_process.pytest_pidzTestProcess.test_pidKsE NN uu ### ]]> *AE+ * *s A""A+c|j}|j|j}tr|tj k(sJ|tj k(sJ|j|yN) spawn_psprockillwaitr signalSIGTERMSIGKILLassert_proc_goner9r:codes r; test_killzTestProcess.test_killQs[     vvx 6>>) ))FNN?* ** a c|j}|j|j}tr|tj k(sJ|tj k(sJ|j |yr>)r? terminaterAr rBrCrErFs r;test_terminatezTestProcess.test_terminate[s[     vvx 6>>) ))FNN?* ** a rIctrtjntj}|j }|j ||j }tr||k(s J|| k(sJ|j|yr>) r rBrDrCr? send_signalrAr rE)r9sigr:rGs r;test_send_signalzTestProcess.test_send_signalesc %fnn6>>     cvvx 3; ;C4< < a rIz not POSIXreasoncHtj}|j}tjdt 5t jtj5|j|dddddd|j}tjdt5t jtj5|j|ddddddy#1swYxYw#1swYxYw#1swY*xYw#1swYyxYw)Nzpsutil.os.kill side_effect) rBrCr?rpatchProcessLookupErrorr%r6r1 NoSuchProcessrNPermissionError AccessDenied)r9rOr:s r;test_send_signal_mockedz#TestProcess.test_send_signal_mockedpsnn     ZZ(6H Iv334 c"5J     ZZ(o Fv223 c"4G F 54J I 43G FsG$D C42D-$DD #D4C= 9DD  D DD!c4tddg}|j|}|j}|dk(sJ|j|tddg}|j|tj }|j}|dk(sJ|j|tddg}|j|}|j}|dk(sJ|j|tdd g}|j|}|j}|dk(sJ|j|y) N-cpassrz1 / 0)stderrzimport sys; sys.exit(5);zimport os; os._exit(5);)rr?rArE subprocessPIPE)r9cmdr:rGs r;test_wait_exitedzTestProcess.test_wait_exited}s4(   c "vvxqyy a 4)   c*//  :vvxqyy a 4!;<   c "vvxqyy a 4!:;   c "vvxqyy a rIzfails on NETBSDc|j}tr"|jtjt j tj5|jdddd|jtjt j tj5|jdddd|jtj|jtj k(sJ|jtj k(sJy|jt j tj5|jdddd|jt j tj5|jdddd|j|jtjk(sJ|jtjk(sJy#1swYxYw#1swYrxYw#1swYxYw#1swYxYw)NMbP?)timeout)r?r rNrBSIGSTOPr%r6r1TimeoutExpiredrASIGCONTrCsuspendresumerKr8s r;test_wait_stoppedzTestProcess.test_wait_stoppeds|      MM&.. )v445u%6 MM&.. )v445u%6 MM&.. )668. ..668. .. IIKv445u%6 HHJv445u%6 KKM668v~~- --668v~~- --#65656565s0H-7H:-I;I-H7:IIIcd|j\}}tjtj5|j ddddtjtj5|j dddd|j |j |j }|j }tr|tj k(sJ|Jy|tjk(sJ|tjk(sJy#1swYxYw#1swYxYw)N{Gz?) spawn_children_pairr%r6r1rjrArKr rBrC)r9child grandchild child_retgrandchild_rets r;test_wait_non_childrenz"TestProcess.test_wait_non_childrens!446z ]]600 1 JJt 2 ]]600 1 OOD !2 JJL #* / //") )). ... ..#2 1 1 1sD4D&D#&D/c|j}|jtjtj 5|j ddddtjtj 5|j ddddtjt5|j ddddy#1swYzxYw#1swYIxYw#1swYyxYw)Nrpr)r?namer%r6r1rjrA ValueErrorr8s r;test_wait_timeoutzTestProcess.test_wait_timeouts      ]]600 1 FF4L2 ]]600 1 FF1I2 ]]: & FF2J' & 2 1 1 1 & &s$CC4C'CC$'C0cr|j}tjtj5|j dddd|j tjtz}tj|kr |j d}ntjdStr|tj k(sJ|tjk(sJ|j|y#1swYxYw#tj$rYnwxYwtj|kr)Nrrh)r?r%r6r1rjrAr@timerfailr rBrDrCrE)r9r:stop_atrGs r;test_wait_timeout_nonblockingz)TestProcess.test_wait_timeout_nonblockings     ]]600 1 FF1I2 ))+.iikG# vvay;;y) ) FNN?* **6>>) )) a !2 1((   iikG#sC;D;DDDcjtj}|jd|jdtdD]-}|jd}t |t sJ|dk\r-Jt jt5|jddddy#1swYyxYw)Nrg)intervaldrx) r1r2 cpu_percentrange isinstancefloatr%r6rz)r9r:_percents r;test_cpu_percentzTestProcess.test_cpu_percents NN  u % u %sAmmTm2Ggu- --c> !>]]: & MM2M &' & &s B))B2ctjdd5}tjj |j sJ dddy#1swYyxYw)Nzpsutil.cpu_count) return_value)rrVr1r2rcalled)r9ms r;test_cpu_percent_numcpus_nonez)TestProcess.test_cpu_percent_numcpus_nones= ZZ* >! NN  ( ( *88O8? > >s 1AAc tjj}|jdk\sJ||jdk\sJ||j dk\sJ||j dk\sJ|tr|jdk\sJ||jD]5}tjdtjt||7y)Nrz%H:%M:%S)r1r2 cpu_timesusersystem children_userchildren_systemriowait_fieldsr}strftime localtimegetattr)r9timesrys r;test_cpu_timeszTestProcess.test_cpu_timess **,zzS '%' ||s")E)"""c)050)$$+2U2+ <<3& - -&MMD MM*dnnWUD5I&J K"rIz not supportedctj}|j}|dk\sJtjdk(r|dk(sJ|jt tjvsJyNrr`)r1r2cpu_num cpu_countr)r9r:nums r; test_cpu_numzTestProcess.test_cpu_numsb NN iikaxx     "!8O8yy{eF$4$4$67777rIc|j}tj}t|j|z dksJtjdtj |jy)Nz%Y %m %d %H:%M:%S)r?r}abs create_timerr)r9r:nows r;test_create_timezTestProcess.test_create_time sW    iik1==?S()A--- )4>>!--/+JKrIz POSIX onlyctjj}|1 tjj t d}||k(sJyy#t$rtjdcYSwxYw)Nttyzcan't rely on `tty` CLI) r1r2terminalr4pathrealpathr) RuntimeErrorr%skip)r9rrs r; test_terminalzTestProcess.test_terminalsn>>#,,.   'gg&&r%y1  3&   >{{#<== >s(AA87A8)only_ifctj}|j}ttd5}|j ddd|j}t sxtsr|j|jkDsJ|j|jk(sJtrl|j|jkDsJ|j|jk(s8J|j|jk\sJ|j|jk\sJ|j}t|jd5}|j!t#ddzdddd|j}|j|jk\sJ|j|jk\sJ|j|jk\sJ|j|jk\sJtr6|j|jkDsJ|j|jk\sJt%t'|D]"}t r|dk\r||dk\sJ||dk\r"Jy#1swYxYw#1swY xYw)Nrbwbxi@Basciirr)r1r2 io_countersopenrreadrr read_count write_countr read_chars write_chars read_bytes write_bytes get_testfnwritebytesrlen)r9r:io1fio2is r;test_io_counterszTestProcess.test_io_counters!s NN mmo *d #q FFH$mmo3>>CNN2 22??coo5 55~~666#//999>>S^^3 33??coo5 55mmo $//#T *a GGE#-1 2+mmo#//111#//111~~///~~/// ??S__4 44>>S^^3 33s3xAqAvq6Q; ;q6Q; ; !7$ #+ *sI<I"I"I,z linux onlycfd}tjts&jdtjk(sJtjdk(sJtj dk(sJtj dk(sJtjdk(sJj}|j||jtjtjtjdfk(sJtjt5jtjddddjtj tjtj dfk(sJjtj dtjtj dfk(sJtjt5jtj dddd jtj dtjtd 5jtjddddtjtd 5jtjddddtjtd 5jddddy#1swYxYw#1swYxYw#tj$rYwxYw#1swYxYw#1swY~xYw#1swYyxYw) Nc^|\}}|tjk(rd}j||yNr)r1IOPRIO_CLASS_NONEionice)initioclassvaluer:s r;cleanupz.TestProcess.test_ionice_linux..cleanupLs-!NGU&222 HHWe $rIrr`rrzioclass accepts no valuematchz$'ioclass' argument must be specified)r1r2rrrIOPRIO_CLASS_RTIOPRIO_CLASS_BEIOPRIO_CLASS_IDLE addCleanuptupler%r6rzrZ)r9rrr:s @r;test_ionice_linuxzTestProcess.test_ionice_linuxIsz % NN 88:a=F$<$<< <<''1,,,%%***%%***''1,,,xxz & ))*QXXZ V%=%=q$AAAA ]]: & HHV--QH 7' ''(QXXZ V%;%;Q$???? ''q1QXXZ V%;%;Q$???? ]]: & HHV++1H 5'  HHV++1H 5]]:-G H HHV--q 1I ]]:-G H HHV--q 1I ]] D  HH1H   %' &' &""   I H H H  sN#"L "L-!L&)!L?-!M 1M LL#&L<;L<?M MM z!not supported on this win versionctj}ts#|jtjk(sJ|j}|j |j||jtj |jtj k(sJ|jtj|jtjk(sJ |jtj|jtjk(sJtjtd5|jtjddddtjtd5|jtjdzdddy#tj$rYwxYw#1swYixYw#1swYyxYw)Nz&value argument not accepted on Windowsrr`rzis not a valid priority)r1r2rr IOPRIO_NORMALrIOPRIO_VERYLOW IOPRIO_LOW IOPRIO_HIGHrZr%r6 TypeErrorrz)r9r:rs r;test_ionice_winzTestProcess.test_ionice_winvsf NN 88:!5!55 55xxz $' &&'xxzV22222 ""#xxzV..... 4 HHV'' (88:!3!33 33 ]] E  HHV))H 3 ]]:-F G HHV''!+ ,H G""      H Gs*/F= "G#G"=GGG"G+cddl}tjtj}t tDcgc]}|j ds|}}|sJ||D]}tt|}|dk\sJ|t |vr>|t||k(sJtr?|j||j|k(rcJ|j|}t|dk(sJ|ddk\sJ|ddk\rJycc}w)NrRLIMITrrxr`) resourcer1r2r4r5dir startswithrrrlimit getrlimitr)r9rr:rnamesryrrets r;test_rlimit_getzTestProcess.test_rlimit_gets NN299; 'KBKq1<<+AKBeuDFD)EA: :s8}$$ 7777xx(*<*)r1r2rrr)r9r:rrs r;test_rlimit_infinity_valuez&TestProcess.test_rlimit_infinity_valuesT NN XXf112 dv+++++ $$tTl3rIserialrycLtj}tr |j}n|j}t5|j}||dzk(sJ dddy#tj$rt j dcYSwxYw#1swYyxYw)N$on OpenBSD this requires root accessr`)r1r2r num_threadsrZr%rr)r9r:step1step2s r;test_num_threadszTestProcess.test_num_threadss NN   K MMOE \MMOEEAI% %%\ && K{{#IJJ K \sA,B,(BBB#z WINDOWS onlycVtj}|jdkDsJyr)r1r2 num_handlesr8s r;test_num_handleszTestProcess.test_num_handless$ NN }}"""rIctj}tr |j}n|j}t5|j}t|t|dzk(sJ|d}|j|dk(sJ|j|dk(sJ|j|dk(sJ dddy#tj$rt j dcYSwxYw#1swYyxYw)Nrr`rr) r1r2r threadsrZr%rrrid user_time system_time)r9r:r r athreads r; test_threadszTestProcess.test_threadss NN   K IIKE \IIKEu:Ua/ //AhG::+ ++$$ 2 22&&'!*4 44\ && K{{#IJJ K \sB?A.C-?(C*)C*-C6c|j}tr |jt|jjtd|jDz dksJt|jjtd|jDz dksJy#tj$rt j dcYSwxYw)Nrc34K|]}|jywr>)r.0rs r; z-TestProcess.test_threads_2..s(Jkkg?c34K|]}|jywr>)rrs r;rz-TestProcess.test_threads_2.."s*N+Q1==+r) r?r rr1rZr%rrrrsumrr8s r;test_threads_2zTestProcess.test_threads_2s      K   ""S(Jaiik(J%JJ K     $$s*N!))+*N'NN O   && K{{#IJJ KsB;;(C&%C&ctj}|jdd\}}|j}|dkDsJ|dkDsJdgdz}|jdd\}}|j}||kDsJ||k\sJ||kDsJ~trF|j} | j | j k(sJ| j| jk(sJ|j} | jD]} t| | dk\rJy)Nrri`) r1r2 memory_infomemory_percentr rsswsetvmspagefilerr) r9r:rss1vms1percent1memarrrss2vms2percent2memrys r;test_memory_infozTestProcess.test_memory_info&s NN ]]_Ra( d##%axxaxx'!]]_Ra( d##%d{{t||("""  --/C77chh& &&77cll* **mmoKKD3%* ** rIctj}tjj}|j }|j D].}t ||}|dk\sJ|dk(rtstr(||kr.Jts tstr|jdk\sJtr#|jdk\sJ|jdk\sJyy)Nrr$)r1r2virtual_memorytotalmemory_full_inforrr rr russpssswap)r9r:r1r-ryrs r;test_memory_full_infoz!TestProcess.test_memory_full_infoEs NN %%'--  "KKDC&EA: : #%E> !>  Gu77a< < 77a< <88q= = rIctj}|j}t|tt |k(sJ|jd}|D]W}|j j dr tr|j dk(r6tj j|j sJ|j tre tj j|j s:tj j|j sJ|j dtj j#|j vs tj$|j }t%j&|j(rIJ|j |D]Q}|j,D]@}t/||} |dk(r|d vr | rJ| t1| t2sJ| d k\r;J| Sy#t$rNtstd5}|j!}dddn #1swYnxYw|j dvrYwxYw#t*$rYwxYw) NF)grouped[pvclockz/proc/self/smapsz (deleted)64r>addrpermsr)r1r2 memory_mapsrsetrrrr4isabsr existsislinkAssertionErrorrrrbasenamestatS_ISREGst_modeFileNotFoundErrorrrrint) r9r:mapsext_mapsntrdatastfnamers r;test_memory_mapszTestProcess.test_memory_mapsUs NN }}4yCD N***===/Bww!!#&rww)+77==) 2277 2) 77>>"''2bggnn7wwRWW--bgg66=)B << 3BE*F?-- '%'5%eS111 A:,u,:$'& "#56! vvx766''*-T9: )s=A#H $I' I$(I9 I$I I$#I$' I43I4ctj}t5}d}|jDcgc]}||j}}|||vsJ dddycc}w#1swYyxYw)Ncztjjtjj|Sr>)r4rrnormcaser:s r;normpathz8TestProcess.test_memory_maps_lists_lib..normpaths&ww''(8(8(;<r)r9r:rrUrlibpathss r;test_memory_maps_lists_libz&TestProcess.test_memory_maps_lists_libsk NN  "d =34--/B/Q(/HBD>X- -- # " C # "sA+A&A+&A++A4ctj}|jtjt 5|jddddt s tstr|jdyy#1swY/xYw)Nz?!?)memtyper3) r1r2r!r%r6rzrrr r8s r;test_memory_percentzTestProcess.test_memory_percentsb NN   ]]: &  U  +' EW  U  +%' &s A??Bc|j}|jsJ|jsJ|j|j|jrJ|jrJyr>)r? is_runningr@rAr8s r;test_is_runningzTestProcess.test_is_runnings^    ||~~||~~  <<>!!<<>!!>rIc|j}|j} |tk(sJ t|ddg}|dk(sJy#t$rtrLt |t tk(r1t jj}|||tk(sgJtjddtjd} |j|dtj|dk(sJn#t$rYnwxYwYwxYw)Nr.r`r]zimport os; print('hey')hey) r?exerrCr rr4rrSsys version_inforeplacer))r9r:rbrSverouts r;test_exezTestProcess.test_exes    eeg *$ $$(#t678e||) 3s8s:677++}(<<<<))!,-Qs/?/?/B.CD;;sB/:3E3Ec23NNNN% s6 ABD +C54D5 D>DDDDctddg}|j|}tr(|jgk(rt j dSts t str|jdtk(sJytr\trV|jd}|tk7r:dj|jdddj|ddk(sJydj|jdj|k(sJy)Nr]2import time; [time.sleep(0.1) for x in range(100)]OPENBSD: returned EBUSYr r`) rr?r cmdliner%rr rrrjoin)r9rmr:pyexes r; test_cmdlinezTestProcess.test_cmdlines   @    g & aiikR';;89 9 W99;q>Z/ // AJ&88AIIKO48MMMM88AIIK(CHHW,== ==rIctg}|jdgdz|jddg|j|}|dd}tr |j dd|k(sJy|j dd}tr|gk(rtjdS||k(sJy#t j $rtjdcYSwxYw)Nz-v2r]rjr`z#OPENBSD: process turned into zombierk) rextendr?r rmr1 ZombieProcessr%rr )r9rmr:rs r;test_long_cmdlinezTestProcess.test_long_cmdlines,v{# G H    g &!"+  Jyy{12'111))+ab/C#){{#<=='> !>'' J{{#HII Js B!!(C  C cp|j}|jj}|jdr|dd}tj j tj jtjj}|j|s J||fy)Ntrx) r?rylowerendswithr4rrDrrc executabler)r9r:ryros r; test_namezTestProcess.test_names    vvx~~ == 9D  !1!1#..!ABHHJ%4t}4%rIc>t|jtjdz}|ddg}|j |}t r4 |j tjj|k(sJy|j tjj|k(sJy#t$rc|jtjk(r>tjj|j|j sJYywxYw)Nr)suffixr]rj)r#rstringdigitsr?r ryr4rrDrCstatusr1 STATUS_ZOMBIEr)r9rormr:s r;test_long_namezTestProcess.test_long_namesdooV]]Q5FoGH   @    g &  vvx277#3#3E#::::668rww//66 66 " 88:!5!5577++E2==affhGGGH s 2B00A)DDc(tj}|j\}}}|tjk(sJ|tj k(sJt tdr(tj|jk(sJyyN getresuid)r1r2uidsr4getuidgeteuidhasattrrr9r:real effective_saveds r; test_uidszTestProcess.test_uidss NN "#&&(iryy{"""BJJL((( 2{ #<<>QVVX- -- $rIc(tj}|j\}}}|tjk(sJ|tj k(sJt tdr(tj|jk(sJyyr)r1r2gidsr4getgidgetegidr getresgidrs r; test_gidszTestProcess.test_gids#rrIcffd}tjtjt5j ddddj }|j ||trd}tjtjtjtjtjtjfD]}|j|5 j |j }|tjtjtjhvr||k(s||}||k(s J||k(sJdddy t!t"drIt#j$t"j&t#j(j k(sJj dj dk(sJt!t"drIt#j$t"j&t#j(j k(sJt*s'j dj dk(sJyy#1swY"xYw#tj$rY5wxYw#1swYxYw#tj$rYywxYw)Nc\ j|y#tj$rYywxYwr>)nicer1rZ)rr:s r;rz&TestProcess.test_nice..cleanup1s+ t &&  s ++str)prio getpriorityr`r)r1r2r%r6rrrr IDLE_PRIORITY_CLASSBELOW_NORMAL_PRIORITY_CLASSNORMAL_PRIORITY_CLASSABOVE_NORMAL_PRIORITY_CLASSHIGH_PRIORITY_CLASSREALTIME_PRIORITY_CLASSsubTestrZrr4r PRIO_PROCESSr5r)r9rr highest_priornew_prior:s @r; test_nicezTestProcess.test_nice0s)  NN  ]]9 % FF5M&vvx & L**22,,22**.. \\t\,4t $%668  ">>"66"::$ (4/<3G/3 '/<'? ?'?#+t#33#3)-,< 2}-r D668$$q vvx1}$}2}-r D668$$ FF1I668q=(=i& %$"..-,P&&  sOI&)J +I3)r1r2rSTATUS_RUNNINGr8s r; test_statuszTestProcess.test_statusrs( NN xxzV22222rIc|j}|j}tr|jd\}}t j }|j drtjdS||k(sJdtjvr|tjdk(sJyy|t j k(sJy)N\$zrunning as service account USERDOMAIN) r?usernamer splitgetpassgetuserryr%rr4environ)r9r:rdomain getpass_users r; test_usernamezTestProcess.test_usernamevs    ::< '~~d3 FH"??,L$$S){{#?@@|+ ++rzz)L!9999*w00 00rIcr|j}|jtjk(sJyr>)r?cwdr4getcwdr8s r;test_cwdzTestProcess.test_cwds*    uuw"))+%%%rIcVtddg}|j|tfdy)Nr]zFimport os, time; os.chdir('..'); [time.sleep(0.1) for x in range(100)]cjtjjtjk(Sr>)rr4rdirnamerrTsr;z(TestProcess.test_cwd_2..s#1557bggoobiik&BBrI)rr?r )r9rdr:s @r; test_cwd_2zTestProcess.test_cwd_2s0       c "BCrIc `tj}|j}|sJ||j|j|t t dr-|t t j|jk(sJt|tt|k(sJt tttjd}|D]}|j|g|j|gk(sJt t dr;|jt t j|jk(sJt |ds|jd|jk(rJ|jgtr-|j|jj!k(sJ|j|k(sJt t dr;|jt t j|jk(sJt#j$t&5|jdddd|j||jt||jt)|y#1swYOxYw)Nsched_getaffinityTpercpunum_cpurr`)r1r2 cpu_affinityrrr4listrr3rr?rrrr_proc_get_eligible_cpusr%r6rr)r9r:initialall_cpusns r;test_cpu_affinityzTestProcess.test_cpu_affinitys NN .."w 0 2* +d2#7#7#>?? ??7|s3w<0000c&"4"4D"ABCDA NNA3 >>#s* **r./~~'40D0DQUU0K+LLLLq)$~~'*aiik999 r >>#qww'A'A'CC CC>>#x/ // 2* +>>#tB,@,@,G'HH HH ]]9 % NN1 & w s8}% uX' & %s J$$J-c|j}ttjddzg}t j t 5|j|dddt j t 5|jtdddddt j tt f5|jddgdddt j t 5|jddgdddy#1swYxYw#1swYxYw#1swYWxYw#1swYyxYw) NTr i'i*r1rx) r?rr1rr%r6rzrrr)r9r: invalid_cpus r;test_cpu_affinity_errsz"TestProcess.test_cpu_affinity_errss    6++489B>? ]]: & NN; '' ]]: & NN5. /' ]]Iz2 3 NNAs8 $4 ]]: & NNAr7 #' & ' & & & 3 3 & &s0 DD!D-8D9D!D*-D69Ectj}|j}|sJ||j|j|t |dkDr|dd}g}t t |dzD].}|j dtj||D0|D]:}|j|t|jt|k(r:Jy)N r`c36K|]}|r t|ywr>)r)rsubsets r;rzATestProcess.test_cpu_affinity_all_combinations..s@FV @s) r1r2rrrrrs itertools combinationssorted)r9r:rcombosrcombos r;"test_cpu_affinity_all_combinationsz.TestProcess.test_cpu_affinity_all_combinationss NN .."w 0 w<" crlGs7|a'(A MM'44Wa@ )E NN5 !!..*+ve}< <<rIz broken on BSDctj|j}j|vsJt |d5}|j d|j tfdjDcgc]+}tjj|j-}}tjj||vsJtr(D]#}|j|k(s|jdk(r#JdddD]2}tjj|jr-J|d|d}|jtd|gt!dD]a}jDcgc]+}tjj|j-}}||vrn:t#j$d ctjj|vsJ|D](}tjj|r#J|ycc}w#1swY$xYwcc}w) NrsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcNtjtk7Sr>)r open_files)filesr:sr;rz-TestProcess.test_open_files..ss1<<>2c%j@rIrzimport time; f = open(r'z/', 'r'); [time.sleep(0.1) for x in range(100)];r]rrp)r1r2rrrrflushr r4rrSrpositionisfiler?rrr}sleep) r9rrr filenamesfilermrr:s @@r;test_open_fileszTestProcess.test_open_filess NN " U""" &$ 1 GGK GGI @ ALLNE;@A5a))!&&15IA77##F+y8 88!DyyF*#}}444" D77>>$)), 2d 2, 'vh/     z49 :sA;<<<>J>a))!&&1>IJ" JJt   77##F+y8 88D77>>$' - -'/B  .Ks1 AH30H.>?H3>H3H30I.H33H=c@tj}tjj}|j }t |d5}|jD]F}||j||jk(s|j|jk(sFn0tjd|jcdddS||j||jk(sJtr|jdk(s!J|j|jk(sJ|jd}|d|jk(sJ|d|jk(sJ|j|jvsJ dddy#1swYyxYw)Nwzno file found; files=rxrr`)r1r2r4rrSrrrryfdfilenor%r~r )r9r:rSrfileobjrntuples r;test_open_files_2zTestProcess.test_open_files_2 sJ NN 77##" &# ' TYY'8GLL+AAww'.."22 '{{%:1<<>:L#MN DII&(7<<*@@ @@ww"}$}ww'.."2222\\^A&F!9 + ++!9 ) ))<)r1r2rqrr9rrrrss r;test_parent_multizTestProcess.test_parent_multiZsL! 446z  "e+++||~'''rIctj}|jsJ|j\}}|jd|k(sJ|jd|k(sJ|jd|k(sJyr)r1r2parentsrqrs r; test_parentszTestProcess.test_parents`s!~~ 446z}}q!V+++!!#A&%///!!#A&&000rIctj}|jrJ|jdrJ|jd}|j}|jd}||fD]R}t |dk(sJ|dj |j k(sJ|dj |j k(rRJy)NT recursiver creationflagsr`)r1r2childrenr?rr3rr9rrr children1 children2rs r; test_childrenzTestProcess.test_childrenis!??$$$??T?222!!!2OO% OOdO3 "I.Hx=A% %%A;??eii/ //A;##%3 33/rIctj}|j|jsJ|xjdz c_|j rJ|j drJ|j d}|j }|j d}||fD]R}t |dk(sJ|dj|jk(sJ|dj|jk(rRJy)NiTr rr r`) r1r2rrrr?rr3rrs r;test_children_mocked_ctimez&TestProcess.test_children_mocked_ctimexs !""""v%??$$$??T?222!!!2OO% OOdO3 "I.Hx=A% %%A;??eii/ //A;##%3 33/rIctj}|j\}}|j|gk(sJ|jd||gk(sJ|j |j |jdrJy)NTr )r1r2rqrrKrArs r;test_children_recursivez#TestProcess.test_children_recursives! 446z UG+++.5*2EEEE  ??T?2222rIctjt}tjD]} ||j xxdz cc< t|jdd}tr|dk(rtjdStj|} |jd}t|tt|k(sJy#tj $rYwxYw#tj $rYywxYw)Nr`c |dSr)rs r;rz6TestProcess.test_children_duplicates..sqtrI)keyrzPID 0Tr ) collections defaultdictrIr1 process_iterrErrormaxitemsrr%rr2rrr?rZ)r9tabler:r3cs r;test_children_duplicatesz$TestProcess.test_children_duplicatess'',$$&A affh1$' %++-^4Q7 SAX;;w' ' NN3  ) T *Aq6SQ[( ((<<  ""   s#C$C2C/.C/2DDctj}|j\}}|jd}t |dk(sJ|d|k(sJ|d|k(sJ|j }|d|k(sJ|d|k(sJy)NTr rrr`)r1r2rqrrr)r9rrrrsrrs r;test_parents_and_childrenz%TestProcess.test_parents_and_childrens! 446z??T?28}!!!{e###{j((($$&qzU"""qzV###rIc:|j}|jtdD]:}|jtj k(rnt jd<|j|jtj k7sJy)Nrrp) r?rlrrr1STATUS_STOPPEDr}rrm)r9r:rs r;test_suspend_resumezTestProcess.test_suspend_resumeso     sAxxzV222 JJt   xxzV22222rIctjt5tjddddtjt 5tjddddy#1swYAxYw#1swYyxYw)Nrrx)r%r6rr1r2rz)r9s r;test_invalid_pidzTestProcess.test_invalid_pidsO ]]9 % NN3 & ]]: & NN2 ' && % & &sA0A<0A9<Bctj}|jddg}t|j ddgk(sJtjt tj }|jdgd}t|dts |ddk(sJtjddtj 5|jd gd d d ik(sJ dddtjddtj|jd 5tjtj5|jd gddddddtjddtj |jd 5|jd gdd dik(sJ dddtjddt" 5|j}d t|j vsJtjt"5|jd gddddddtjt$5|jddddtjt&5|jdgdddtjt&5|jdd gdddy#1swYxYw#1swYxYw#1swYxYw#1swYUxYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw) Nrbry)attrsnet_connectionsfoo)r-ad_valuezpsutil.Process.niceT)createrUrr`bar)r1r2as_dictrkeysminrrrrrVrZrXr3r%r6rtNotImplementedErrorrrz)r9r:ds r; test_as_dictzTestProcess.test_as_dicts NN  IIUFOI ,affhE6?222 NN3v{{}- . II./%I @!-.5&'50 00ZZ !$F!M M2K<?L L  LL#&L/ +L22L;>M MMctj}tjd5}|j 5|j |j ddd|j dk(sJ dddtjd5}|j |j dddj dk(sJy#1swYsxYw#1swYexYw#1swY3xYw)N$psutil._psplatform.Process.cpu_timesr`rr1r2rrVoneshotr call_countr9r:rs r; test_oneshotzTestProcess.test_oneshots NN  ZZ> ?1  <<1$ $$ @ ZZ> ?1 KKM KKM@||q   @ ? @ ?s.C!CC!C&C CC#&C/c tj}tjd5}tjd5}|j 5|j |j |j 5|j |j dddddd|j dk(sJ|j dk(sJ ddddddtjd5}|j |j dddj dk(sJy#1swYxYw#1swYxYw#1swYyxYw#1swY}xYw#1swYKxYw)Nr:z(psutil._psplatform.Process.oneshot_enterr`rr;)r9r:m1m2rs r;test_oneshot_twicezTestProcess.test_oneshot_twices  NN  ZZ> ?2FG2YY[KKMKKM  %! }})))}})))H@ZZ> ?1 KKM KKM@||q   %![HG@ ?@ ?s_EE1E!D6 #E+*EE;!E&6D? ;EE EE EE#&E/c|j\}}|j}|j}||k7sJ|j5|j|k(sJ|j|k(sJ ddd|j5|j|k(sJ|j|k(sJ dddy#1swYNxYw#1swYyxYwr>)rqrr<)r9p1p2p1_ppidp2_ppids r;test_oneshot_cachezTestProcess.test_oneshot_cache#s))+B'')'')'!!! ZZ\779' ''779' ''ZZ\779' ''779' ''\\\s +C+CC Cc$d}|jjjtrt fd|j t }|j|jD]\}}|||y)Nc |}tr|dvrytj|d|dS#tj$rtj $rYytj $rtr|dvrYywxYw)N>rbryz didn't raise NSP and returned z instead>rr)r r%r~r1rtrXrZr )funfun_namers r;assert_raises_nspzFTestProcess.test_halfway_terminated_process..assert_raises_nsp:s ex?:{{g)r3r1rrTsr;rz=TestProcess.test_halfway_terminated_process..QsquuFKKM9rI) r?rKrAr r rEr$iterall)r9rNnsrLryr:s @r;test_halfway_terminated_processz+TestProcess.test_halfway_terminated_process2sr &        9 : a q !IC c4 ()rIcz|j\}}|j|ttjj drstjj j tjrJtjj j |jsJyy)Nproc_is_zombie) spawn_zombieassert_proc_zombierr1rcextrUr4r5r3)r9_parentzombies r;test_zombie_processzTestProcess.test_zombie_processXs++- ' 6%%**,< =))..==biikJ JJ%%**99&**E EE >rIctj}tjdtjd5}|j sJ|j sJ dddy#1swYyxYw)Nzpsutil.ProcessrrT)r1r2rrVrtr\rr>s r;$test_zombie_process_is_running_w_excz0TestProcess.test_zombie_process_is_running_w_exc`sX NN  ZZ &*>*>q*A <<> !>88O8    s !A**A3ctj}tjdtjd5}|j tj k(sJ|jsJ dddy#1swYyxYw)Nz!psutil._psplatform.Process.statusrrT)r1r2rrVrtrrrr>s r; test_zombie_process_status_w_excz,TestProcess.test_zombie_process_status_w_excksg NN  ZZ /,,Q/ 88:!5!55 5588O8    s 2A;;Bc&|j}tj|j}|j|j dzf|_t tj|jtjvsJ|jrJtjjtjdd5tjt!j"5}t tjddddddd|jj%vsJ|jtjvsJ|tj|jk7sJd}t'|}|j)|j*|j,zdD]U\}}|j/|5t1j2tj4| 5|ddddddWd t7|vsJd t9|vsJt1j2tj4| 5|j;dddt1j2tj4| 5|j=dddt1j2tj4| 5|j?dddt1j2tj4| 5|jAdddy#1swYxYw#1swY xYw#1swYExYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw) Nr PSUTIL_DEBUGTz+refreshing Process instance for reused PID z4process no longer exists and its PID has been reusedF) clear_cacherrzterminated + PID reused)! spawn_subprocr1r2r3r_identrr_pmapr\rrVobject_common contextlibredirect_stderrioStringIOgetvaluer$rPsetterskillersrr%r6rXrreprrrrr)r9subpr:rmsgrRrLrys r;test_reused_pidzTestProcess.test_reused_pidws~!!# NN488 $EE1==?S01 V "#uu $$$<<>!!ZZ  v~~~t D++BKKM:aV((*+;E:!%% Azz|   uuFLL(((FNN488,,,,D q !bjj!8eLIC4(]]6#7#7sCED)(M )CF222(DG333 ]]6//s ; FFH< ]]6//s ; HHJ< ]]6//s ; IIK< ]]6//s ; JJL< ;3;:E DDC)(< ; ; ; ; ; ; ;sx(L<8L/L<&M>M MM#M/M;N/L9 4L<<M M MM #M,/M8;NNcJdtjvrtjtj5tj ddddtj drJtj djdk(sJytj d}trtjnt}tj|5|jdddtj|5|jdddtj|5|jdddtj|5|jdddtj|5|jdddtj|5|j!t"j$dddt'|}|j)|j*|j,zD]W\}} |}|dvr|j.dk(r"J|dk(r trdnd}|j1|k(rGJ|dk(sO|rRJ|t2s0dtjvsJtj dsJyy#1swYbxYw#1swYxYw#1swYxYw#1swYxYw#1swYmxYw#1swYLxYw#1swYxYw#tj$rYwxYw)Nrr`>rrrzNT AUTHORITY\SYSTEMrootry)r1rr%r6rXr2 pid_existsrr rZrzrArKrlrmr@rNrBrCr$rPgettersrmrrr )r9r:rrRrLryrrs r; test_pid_0zTestProcess.test_pid_0s> FKKM !v334q!5((+ ++>>!$))+q0 00  NN1 %,f!!* ]]3  FFH ]]3  KKM ]]3  IIK ]]3  HHJ ]]3  FFH ]]3  MM&.. ) q !bjj!89IC &e++88q=(=Z'5<1&D::<4///V^%%4: % %%$$Q' ''O54           &&  seJ0J= K :K(K$K1 K>&L 0J:=K KK!$K.1K;>L L"!L"cd}d|_tj}||j}|tjj }t str||k(sJyyy)Nc ddh}tr|jgdt|jD])}||vs|j ds|j |+|j Dcic]H\}}|jddjdd|jddjddJc}}Scc}}w)NPLATHOME)__CF_USER_TEXT_ENCODINGVERSIONER_PYTHON_PREFER_32_BITVERSIONER_PYTHON_VERSIONPYTEST_ r` )rupdaterr4rpopr!re)r7excluderykvs r; clean_dictz,TestProcess.test_environ..clean_dictsv&G  QVVX7?dooi&@EE$K'GGI &DAq $#++D"5IIdB'//b9:&  s6A C)maxDiffr1r2rr4copyr r)r9rr:d1d2s r; test_environzTestProcess.test_environsX $ NN   $  ) *~8O8&srIz #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)stdinr_rIr3)ACr)textwrapdedentr"rrcrbrcr1r2r3r,r\r_rrrrrZ communicate returncode)r9rGcexesprocr:envs r;test_weird_environzTestProcess.test_weird_environs  DOO-d;"" F*//*//#  NN599 %QUU||~~||  "c))) Z iik ))+CCc**** 1$$$&&  sD!!D76D7N)h__name__ __module__ __qualname____doc__r<rHrLrPr%markskipifr r[rer rnrvr{rrrrrrrrrr+rrrrr rrrrrrr xdist_groupr rrrr(r*rrr.r6rrPrWrZr]rhrprur{rrrrrrrrrrrrrrrrr rrrrrr rrrr$r&r)r+r8r?rCrIrSr[r]r_rrrwrrrrrrIr;r.r.Hs) !! ! [[E +6 #7 #!6 [['89.:.2/.!( ' L [[,,_E8F8L [[E ,7 '8 ' [[00IU+$,J$L [[J? [[E ,7)8@)V [[J? [[  ?-@-4 [[J?$@$. [[J? 6@ 6 [[J?A@A$ [[J? A@ A [[J? 4@ 4 [[(+&,&" [[G N;#<#  [[K@5A5&5) [[K@ A* ++<!  [[O+OD.-E.-` [[O+OD .E .,"6>6"45774 [[E ,7 .8 . [[E ,7 .8 .@D31"& D [[,,_E$(F$(L [[,,_E $F $ [[,,_E=F=, [[O4#.5#.L [[O46564 [[E ,7 [[(+$,8$U+ [[6"D  ,  '; -( 11 440 3)( $3 2&h !!( ($)L [[E ,7F8F [[E ,78 [[E ,7 8 'R,(\ [[K@A4 [[K@ [[E ,7 [[M [[A%% 8A%%rIr.ceZdZdZedZejje xre ddZ dZ dZ dZy ) TestPopenzTests for psutil.Popen class.ctyr>r&)clss r; tearDownClasszTestPopen.tearDownClass"srIzhangs on OSX + CIrQcXtddg}tj|tjtjt 5}|j |j|jt|sJtjt5|jddd|jdddtr&j!dt"j$ k(sJyj!dt"j$k(sJy#1swYrxYw#1swYfxYw)Nr]3import time; [time.sleep(0.1) for x in range(100)];stdoutr_rra)rr1Popenrbrcrryrrrr%r6r7r/rKr rArBrCr9rdprocs r; test_misczTestPopen.test_misc&s   A  \\ ????   IIK NN  JJt9 9~./ NN   99Q>1 11 /.  s%AD  D#D D D  D)ctjtdgtjtjtjt 5}|j dddjjsJ|jjsJ|jjsJ|jdk(sJy#1swYcxYw)Nz-V)rr_rrr) r1rrrbrcrrrclosedr_rr)r9rs r;test_ctx_managerzTestPopen.test_ctx_managerBs \\  ????//       {{!!!!{{!!!!zz    !###  s CC c,tddg}tj|tjtjt 5}|j |jtjtj5|j dddtjtj5|jdddtjtj5|jtjdddtrtjtj5|jtj dddtjtj5|jtj"ddddddy#1swY6xYw#1swYxYw#1swYxYw#1swYxYw#1swYDxYw#1swYyxYwNr]rr)rr1rrbrcrrKrAr%r6rXr@rNrBrCr CTRL_C_EVENTCTRL_BREAK_EVENTrs r;test_kill_terminatezTestPopen.test_kill_terminatePsM   A  \\ ????   NN  IIKv334 5v334 5v334  05]]6#7#78$$V%8%899]]6#7#78$$V%<%<=9#  5444449888#  sAH G +H G+H ? G&1H  G20+H  G>;H  G H G# H &G/ +H 2G; 7H >H H  Hcftddg}tj|tjtjt 5}|j |jtjt5|jddddddy#1swYxYw#1swYyxYwr) rr1rrbrcrrKrAr%r6r7r/rs r;test__getattribute__zTestPopen.test__getattribute__ms   A  \\ ????   NN  IIK~./  /.  s$:B'= B B'B$ B''B0N)rrrr classmethodrr%rrrrrrrrrrIr;rrsU' [[0.9LM2N26 $>:rIr)>rrrhrrrjrr4rBrrEr~rbrcrr}unittestrr1rrrrr r r r r psutil._commonr psutil.testsrrrrrrrrrrrrrrrrrr r!r"r#r$r%r'r(r)r*r+r,r.rrrIr;rs&      $#'')$#()-#$%#''##,%&*&).0%O%.O%n.]]rI