ó
Gq]c           @   sþ  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m  Z  d d l m! Z! d d l m" Z" d d l m# Z# d d l m$ Z$ d d l m% Z% d d l m& Z& d d l m' Z' d d l m( Z( d d l m) Z) d d l m* Z* d d l m+ Z+ d d l m, Z, d d l m- Z- d d l m. Z. d d  l m/ Z/ d d! l m0 Z0 d d" l m1 Z1 d d# l m2 Z2 d d$ l m3 Z3 d d% l m4 Z4 d d& l m5 Z5 d d' l m6 Z6 d d( l m7 Z7 d d) l m8 Z8 d d* l m9 Z9 d d+ l m: Z: d d, l m; Z; d d- l m< Z< d d. l m= Z= d/ e< j> f d0 „  ƒ  YZ? e oœe j@ ƒ  d1 k r¸d2 e? f d3 „  ƒ  YZA n  d4 e< j> f d5 „  ƒ  YZB eC d6 k rúd d7 lD mE ZE eE eF ƒ n  d S(8   s   Tests for psutil.Process class.iÿÿÿÿN(   t   AIX(   t   BSD(   t   LINUX(   t   MACOS(   t   NETBSD(   t   OPENBSD(   t   OSX(   t   POSIX(   t   SUNOS(   t   WINDOWS(   t	   open_text(   t   long(   t   PY3(   t   APPVEYOR(   t
   call_until(   t   copyload_shared_lib(   t
   create_exe(   t   create_proc_children_pair(   t   create_zombie_proc(   t   enum(   t   get_test_subprocess(   t   HAS_CPU_AFFINITY(   t   HAS_ENVIRON(   t
   HAS_IONICE(   t   HAS_MEMORY_MAPS(   t   HAS_PROC_CPU_NUM(   t   HAS_PROC_IO_COUNTERS(   t
   HAS_RLIMIT(   t   HAS_THREADS(   t   mock(   t   PYPY(   t
   PYTHON_EXE(   t   reap_children(   t   retry_on_failure(   t   safe_rmpath(   t   sh(   t   skip_on_access_denied(   t   skip_on_not_implemented(   t   TESTFILE_PREFIX(   t   TESTFN(   t
   ThreadTask(   t   TRAVIS(   t   unittest(   t   wait_for_pidt   TestProcessc           B   s­  e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z e j e d ƒ d „  ƒ Z d „  Z e j e d ƒ e j e d ƒ d „  ƒ ƒ Z e j e d ƒ e d e ƒ d „  ƒ ƒ Z e j e d ƒ e j e d ƒ d „  ƒ ƒ Z e j e d ƒ e j e d ƒ d „  ƒ ƒ Z e j e  d ƒ d „  ƒ Z! e j e  d ƒ d „  ƒ Z" e j e  d ƒ d „  ƒ Z# e j e  d ƒ d „  ƒ Z$ e j e  d ƒ d „  ƒ Z% d „  Z& e j e d  ƒ d! „  ƒ Z' e j e( d ƒ d" „  ƒ Z) e* ƒ  e+ d e, ƒ e j e( d ƒ d# „  ƒ ƒ ƒ Z- d$ „  Z. d% „  Z/ e j e0 d ƒ d& „  ƒ Z1 e j e0 d ƒ d' „  ƒ Z2 d( „  Z3 d) „  Z4 d* „  Z5 d+ „  Z6 d, „  Z7 d- „  Z8 d. „  Z9 e j e: d/ ƒ e j e; d0 ƒ d1 „  ƒ ƒ Z< e j e d ƒ d2 „  ƒ Z= e j e d ƒ d3 „  ƒ Z> d4 „  Z? d5 „  Z@ d6 „  ZA d7 „  ZB d8 „  ZC e j eD d ƒ d9 „  ƒ ZE e j eD d ƒ d: „  ƒ ZF e j eD d ƒ d; „  ƒ ZG e j eH d< ƒ e j eI d= ƒ d> „  ƒ ƒ ZJ e j eH d< ƒ e j eI d= ƒ d? „  ƒ ƒ ZK e j e d ƒ d@ „  ƒ ZL e d e ƒ e j eM p^eN dA ƒ dB „  ƒ ƒ ZO dC „  ZP dD „  ZQ dE „  ZR dF „  ZS dG „  ZT dH „  ZU dI „  ZV dJ „  ZW dK „  ZX dL „  ZY dM „  ZZ dN „  Z[ dO „  Z\ dP „  Z] dQ „  Z^ dR „  Z_ e j e d ƒ dS „  ƒ Z` e j e d ƒ dT „  ƒ Za e j e d ƒ dU „  ƒ Zb dV „  Zc e j ed d ƒ dW „  ƒ Ze e j ed d ƒ e j e d ƒ dX „  ƒ ƒ Zf RS(Y   s   Tests for psutil.Process class.c         C   s   t  t ƒ d  S(   N(   R"   R'   (   t   self(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   setUpN   s    c         C   s   t  ƒ  d  S(   N(   R    (   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   tearDownQ   s    c         C   ss   t  j ƒ  } |  j | j t j ƒ  ƒ t ƒ  } |  j t  j | j ƒ j | j ƒ |  j t ƒ  d | _ Wd  QXd  S(   Ni!   (	   t   psutilt   Processt   assertEqualt   pidt   ost   getpidR   t   assertRaisest   AttributeError(   R-   t   pt   sproc(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_pidT   s    	"c         C   sn   t  ƒ  } | j } t j | ƒ } | j ƒ  | j ƒ  } |  j t j | ƒ ƒ t rj |  j	 | t
 j ƒ n  d  S(   N(   R   R3   R0   R1   t   killt   waitt   assertFalset
   pid_existsR   R2   t   signalt   SIGKILL(   R-   R9   R:   R8   t   sig(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_kill\   s    		
c         C   sn   t  ƒ  } | j } t j | ƒ } | j ƒ  | j ƒ  } |  j t j | ƒ ƒ t rj |  j	 | t
 j ƒ n  d  S(   N(   R   R3   R0   R1   t	   terminateR<   R=   R>   R   R2   R?   t   SIGTERM(   R-   R9   R:   R8   RA   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_terminatef   s    		
c         C   s²  t  r t j n t j } t ƒ  } t j | j ƒ } | j | ƒ | j	 ƒ  } |  j
 t j | j ƒ ƒ t  r®|  j | | ƒ t ƒ  } t j | j ƒ } | j | ƒ t j d d t t j d ƒ ƒ+ |  j t j ƒ  | j | ƒ Wd  QXWd  QXt ƒ  } t j | j ƒ } | j | ƒ t j d d t t j d ƒ ƒ1 |  j t j ƒ  t j ƒ  j | ƒ Wd  QXWd  QXd t j ƒ  k r®t j d ƒ } |  j t | j t j ƒ q®n  d  S(   Ns   psutil.os.killt   side_effectt    i    (   R   R?   R@   RD   R   R0   R1   R3   t   send_signalR<   R=   R>   R2   R   t   patcht   OSErrort   errnot   ESRCHR6   t   NoSuchProcesst   EPERMt   AccessDeniedt   pidst
   ValueError(   R-   RA   R9   R8   t   exit_sig(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_send_signalp   s2    			c         C   sé  t  ƒ  } t j | j ƒ } | j ƒ  | j ƒ  } t rN |  j | t j	 ƒ n |  j | t j
 ƒ |  j | j ƒ  ƒ t  ƒ  } t j | j ƒ } | j ƒ  | j ƒ  } t rÂ |  j | t j
 ƒ n |  j | t j
 ƒ |  j | j ƒ  ƒ d } t  t d | g ƒ } t j | j ƒ } |  j | j ƒ  d ƒ |  j | j ƒ  ƒ t  t d | g ƒ } t j | j ƒ } |  j | j ƒ  d ƒ |  j | j ƒ  d ƒ t  ƒ  } t j | j ƒ } | j ƒ  |  j t j | j d ƒ |  j t | j d ƒ d  S(   Ns0   import time, sys; time.sleep(0.01); sys.exit(5);s   -ci   g{®Gáz„?iÿÿÿÿ(   i   N(   R   R0   R1   R3   R;   R<   R   R2   R?   R@   RD   R=   t
   is_runningRC   R   t   assertInt   Nonet   nameR6   t   TimeoutExpiredRQ   (   R-   R9   R8   t   code(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_wait   s<    	
	
	
c         C   sÄ   t  ƒ  \ } } |  j t j | j d ƒ |  j t j | j d ƒ | j ƒ  | j ƒ  | j ƒ  } | j ƒ  } t rš |  j | t j	 ƒ |  j | d  ƒ n& |  j | t j	 ƒ |  j | t j	 ƒ d  S(   Ng{®Gáz„?(   R   R6   R0   RX   R<   RC   R   R2   R?   RD   RV   (   R-   t   p1t   p2t   ret1t   ret2(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_wait_non_children¿   s    

c         C   så   t  ƒ  } t j | j ƒ } |  j t j | j d ƒ | j ƒ  t j ƒ  d } xM t	 r y | j d ƒ } Wn, t j k
 r˜ t j ƒ  | k rš ‚  qš qQ XPqQ Wt
 r» |  j | t j ƒ n |  j | t j ƒ |  j | j ƒ  ƒ d  S(   Ni    i   (   R   R0   R1   R3   R6   RX   R<   R;   t   timet   TrueR   R2   R?   R@   RD   R=   RT   (   R-   R9   R8   t   stop_atRY   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_wait_timeout_0Ô   s     	
	
c         C   sŸ   t  j ƒ  } | j d d ƒ | j d d ƒ xF t d ƒ D]8 } | j d d  ƒ } |  j | t ƒ |  j | d ƒ q9 W|  j t	 ƒ  | j d d ƒ Wd  QXd  S(   Nt   intervalgü©ñÒMbP?id   g        iÿÿÿÿ(
   R0   R1   t   cpu_percentt   rangeRV   t   assertIsInstancet   floatt   assertGreaterEqualR6   RQ   (   R-   R8   t   xt   percent(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_percentè   s    c         C   sA   t  j d d d  ƒ& } t j ƒ  j ƒ  | j s7 t ‚ Wd  QXd  S(   Ns   psutil.cpu_countt   return_value(   R   RI   RV   R0   R1   Re   t   calledt   AssertionError(   R-   t   m(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_percent_numcpus_noneó   s    c         C   s¬   t  j ƒ  j ƒ  } | j d k s< | j d k s< t | ƒ ‚ | j d k sW t | ƒ ‚ | j d k sr t | ƒ ‚ x3 | j D]( } t	 j
 d t	 j t | | ƒ ƒ ƒ q| Wd  S(   Ng        s   %H:%M:%S(   R0   R1   t	   cpu_timest   usert   systemRo   t   children_usert   children_systemt   _fieldsR`   t   strftimet	   localtimet   getattr(   R-   t   timesRW   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_timesù   s    *c         C   sº   t  j ƒ  j ƒ  d  \ } } t j ƒ  d  \ } } t | | g ƒ t | | g ƒ d k rt |  j d | | f ƒ n  t | | g ƒ t | | g ƒ d k r¶ |  j d | | f ƒ n  d  S(   Ni   gš™™™™™¹?s   expected: %s, found: %s(   R0   R1   Rr   R4   R{   t   maxt   mint   fail(   R-   t	   user_timet   kernel_timet   utimet   ktime(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_times_2  s    ((s   not supportedc         C   ss   t  j ƒ  } | j ƒ  } |  j | d ƒ t  j ƒ  d k rM |  j | d ƒ n  |  j | j ƒ  t t  j ƒ  ƒ ƒ d  S(   Ni    i   (   R0   R1   t   cpu_numRi   t	   cpu_countR2   RU   Rf   (   R-   R8   t   num(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_num  s    c         C   s   t  ƒ  } t j ƒ  } t j | j ƒ } | j ƒ  } t | | ƒ } | d k rl |  j d | | | f ƒ n  t j d t j	 | j ƒ  ƒ ƒ d  S(   Ni   s'   expected: %s, found: %s, difference: %ss   %Y %m %d %H:%M:%S(
   R   R`   R0   R1   R3   t   create_timet   absR   Rx   Ry   (   R-   R9   t   nowR8   R‰   t
   difference(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_create_time  s    		s
   POSIX onlys   not reliable on TRAVISc         C   sl   t  j ƒ  j ƒ  } t j j ƒ  s0 t j j ƒ  r[ t j j	 t
 d ƒ ƒ } |  j | | ƒ n |  j | ƒ d  S(   Nt   tty(   R0   R1   t   terminalt   syst   stdint   isattyt   stdoutR4   t   patht   realpathR#   R2   t   assertIsNone(   R-   R   RŽ   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_terminal)  s
    t   only_ifc      	   C   s9  t  j ƒ  } | j ƒ  } t t d ƒ  } | j ƒ  Wd  QX| j ƒ  } t r¸ t r¸ |  j | j	 | j	 ƒ |  j
 | j | j ƒ t rä |  j | j | j ƒ |  j
 | j | j ƒ qä n, |  j | j | j ƒ |  j | j | j ƒ | j ƒ  } t j d t ƒ ; } t r(| j t d d d ƒ ƒ n | j d d ƒ Wd  QX| j ƒ  } |  j | j | j ƒ |  j | j | j ƒ |  j | j	 | j	 ƒ |  j | j | j ƒ t rØ|  j | j | j ƒ |  j | j | j ƒ n  xZ t t | ƒ ƒ D]F } t r	| d k r	qën  |  j | | d ƒ |  j | | d ƒ qëWd  S(   Nt   rbt   prefixRj   i@B t   asciii   i    (   R0   R1   t   io_counterst   openR   t   readR   R    t   assertGreatert
   read_countR2   t   write_countR   t
   read_charst   write_charsRi   t
   read_bytest   write_bytest   tempfilet   TemporaryFileR&   R   t   writet   bytesRf   t   len(   R-   R8   t   io1t   ft   io2t   i(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_io_counters3  s>    s
   linux onlyc      
   C   s™  t  j ƒ  } |  j | j ƒ  d t  j ƒ |  j t  j d ƒ |  j t  j d ƒ |  j t  j d ƒ |  j t  j d ƒ z| j t  j ƒ |  j t | j ƒ  ƒ t  j d f ƒ |  j	 t
 ƒ  | j t  j d d ƒWd  QX| j t  j ƒ |  j t | j ƒ  ƒ t  j d f ƒ | j t  j d d ƒ|  j t | j ƒ  ƒ t  j d f ƒ |  j	 t
 ƒ  | j t  j d d ƒWd  QXt j ƒ  d k r&| j t  j ƒ |  j t | j ƒ  ƒ t  j d f ƒ | j t  j d d ƒ|  j t | j ƒ  ƒ t  j d f ƒ |  j	 t
 ƒ  | j t  j d d ƒWd  QXn  |  j t
 d | j t  j d ƒ |  j t
 d | j t  j d ƒ |  j t
 d	 | j d d ƒWd  | j t  j ƒ Xd  S(
   Ni    i   i   i   t   valuei   i   s   ioclass accepts no values$   'ioclass' argument must be specified(   R0   R1   R2   t   ionicet   IOPRIO_CLASS_NONEt   IOPRIO_CLASS_RTt   IOPRIO_CLASS_BEt   IOPRIO_CLASS_IDLEt   tupleR6   RQ   R4   t   getuidt   assertRaisesRegex(   R-   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_ionice_linux_  sH    %%%s!   not supported on this win versionc         C   s2  t  j ƒ  } |  j | j ƒ  t  j ƒ zÜ | j t  j ƒ |  j | j ƒ  t  j ƒ | j t  j ƒ |  j | j ƒ  t  j ƒ y | j t  j ƒ Wn t  j k
 r¤ n X|  j | j ƒ  t  j ƒ |  j	 t
 d | j t  j d d ƒ|  j	 t d | j t  j d ƒ Wd  | j t  j ƒ |  j | j ƒ  t  j ƒ Xd  S(   Ns&   value argument not accepted on WindowsR°   i   s   is not a valid priority(   R0   R1   R2   R±   t   IOPRIO_NORMALt   IOPRIO_VERYLOWt
   IOPRIO_LOWt   IOPRIO_HIGHRO   R¸   t	   TypeErrorRQ   (   R-   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_ionice_winŒ  s(    c         C   s>  d d  l  } t j t j ƒ  ƒ } g  t t ƒ D] } | j d ƒ r. | ^ q. } | sa t | ƒ ‚ xÖ | D]Î } t t | ƒ } |  j	 | d ƒ | t | ƒ k ré |  j
 | t | | ƒ ƒ t rÄ qh n  |  j
 | j | ƒ | j | ƒ ƒ qh | j | ƒ } |  j
 t | ƒ d ƒ |  j	 | d d ƒ |  j	 | d d ƒ qh Wd  S(   Niÿÿÿÿt   RLIMITi    i   i   (   t   resourceR0   R1   R4   R5   t   dirt
   startswithRo   Rz   Ri   R2   R   t   rlimitt	   getrlimitRª   (   R-   RÁ   R8   Rj   t   namesRW   R°   t   ret(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_rlimit_get¨  s     .%c      
   C   s¦   t  ƒ  } t j | j ƒ } | j t j d ƒ |  j | j t j ƒ d ƒ |  j t ƒ  t j	 j d ƒ j d ƒ Wd  QX|  j t ƒ  | j t j d ƒ Wd  QXd  S(   Ni   i    (   i   i   (   i   i   (   i   i   i   (
   R   R0   R1   R3   RÄ   t   RLIMIT_NOFILER2   R6   RQ   t   _psplatform(   R-   R9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_rlimit_set¿  s    	c         C   s  t  j ƒ  } | j t  j ƒ \ } } z³ | j t  j d | f ƒ t t d ƒ  } | j d d ƒ Wd  QX|  j t ƒ 0 } t t d ƒ  } | j d d ƒ Wd  QXWd  QX|  j	 t
 rÂ | j j n
 | j d t j ƒ Wd  | j t  j | | f ƒ |  j	 | j t  j ƒ | | f ƒ Xd  S(   Ni   t   wbt   Xi  i    (   R0   R1   RÄ   t   RLIMIT_FSIZER   R'   R¨   R6   t   IOErrorR2   R   t	   exceptionRK   t   EFBIG(   R-   R8   t   softt   hardR¬   t   exc(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_rlimitÌ  s    "c         C   sÉ   t  j ƒ  } | j t  j ƒ \ } } zb | j t  j d | f ƒ | j t  j t  j | f ƒ t t d ƒ  } | j d d ƒ Wd  QXWd  | j t  j | | f ƒ |  j | j t  j ƒ | | f ƒ Xd  S(   Ni   RÌ   RÍ   i   (	   R0   R1   RÄ   RÎ   t   RLIM_INFINITYR   R'   R¨   R2   (   R-   R8   RÒ   RÓ   R¬   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_rlimit_infinityß  s    c         C   sT   t  j ƒ  } | j t  j ƒ \ } } |  j t  j | ƒ | j t  j | | f ƒ d  S(   N(   R0   R1   RÄ   RÎ   R2   RÖ   (   R-   R8   RÒ   RÓ   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_rlimit_infinity_valueî  s    c         C   s‹   t  j ƒ  } t rK y | j ƒ  } WqW t  j k
 rG t j d ƒ ‚ qW Xn | j ƒ  } t ƒ  % | j ƒ  } |  j | | d ƒ Wd  QXd  S(   Ns$   on OpenBSD this requires root accessi   (	   R0   R1   R   t   num_threadsRO   R*   t   SkipTestR(   R2   (   R-   R8   t   step1t   step2(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_num_threadsú  s    
s   WINDOWS onlyc         C   s&   t  j ƒ  } |  j | j ƒ  d ƒ d  S(   Ni    (   R0   R1   RŸ   t   num_handles(   R-   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_num_handles  s    c         C   sæ   t  j ƒ  } t rK y | j ƒ  } WqW t  j k
 rG t j d ƒ ‚ qW Xn | j ƒ  } t ƒ  € | j ƒ  } |  j t	 | ƒ t	 | ƒ d ƒ | d } |  j | j
 | d ƒ |  j | j | d ƒ |  j | j | d ƒ Wd  QXd  S(   Ns$   on OpenBSD this requires root accessi   i    i   (   R0   R1   R   t   threadsRO   R*   RÚ   R(   R2   Rª   t   idR€   t   system_time(   R-   R8   RÛ   RÜ   t   athread(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_threads  s    
 
c         C   sÞ   t  ƒ  } t j | j ƒ } t rX y | j ƒ  WqX t j k
 rT t j d ƒ ‚ qX Xn  |  j	 | j
 ƒ  j t g  | j ƒ  D] } | j ^ qz ƒ d d ƒ|  j	 | j
 ƒ  j t g  | j ƒ  D] } | j ^ q» ƒ d d ƒd  S(   Ns$   on OpenBSD this requires root accesst   deltagš™™™™™¹?(   R   R0   R1   R3   R   Rà   RO   R*   RÚ   t   assertAlmostEqualRr   Rs   t   sumR€   Rt   Râ   (   R-   R9   R8   Rj   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_threads_2%  s    	/c         C   s.  t  j ƒ  } | j ƒ  d  \ } } | j ƒ  } |  j | d ƒ |  j | d ƒ d  g d } | j ƒ  d  \ } } | j ƒ  } |  j | | ƒ |  j | | ƒ |  j | | ƒ ~ t rñ | j ƒ  }	 |  j |	 j	 |	 j
 ƒ |  j |	 j |	 j ƒ n  | j ƒ  }	 x* |	 j D] }
 |  j t |	 |
 ƒ d ƒ qWd  S(   Ni   i    i`ã (   R0   R1   t   memory_infot   memory_percentRŸ   RV   Ri   R	   R2   t   rsst   wsett   vmst   pagefileRw   Rz   (   R-   R8   t   rss1t   vms1t   percent1t   memarrt   rss2t   vms2t   percent2t   memRW   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_memory_info8  s&    c         C   sø   t  j ƒ  j } t  j ƒ  j ƒ  } xy | j D]n } t | | ƒ } |  j | d d | | f ƒ| d k rn t s+ t	 rz q+ n  |  j
 | | d | | | f ƒq+ Wt	 s¯ t s¯ t rÅ |  j | j d ƒ n  t	 rô |  j | j d ƒ |  j | j d ƒ n  d  S(   Ni    t   msgRí   (   R0   t   virtual_memoryt   totalR1   t   memory_full_infoRw   Rz   Ri   R   R   t   assertLessEqualR	   R   t   usst   psst   swap(   R-   Rú   Rö   RW   R°   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_memory_full_infoV  s    #c         C   s*  t  j ƒ  } | j ƒ  } g  | D] } | ^ q } |  j t | ƒ t t | ƒ ƒ ƒ | j d t ƒ } x)| D]!} | j j d ƒ sl t	 j j
 | j ƒ s¨ t | j ƒ ‚ t rHy= t	 j j | j ƒ sê t	 j j | j ƒ sê t | j ƒ ‚ WqŠt k
 rDt s‚  qEt d ƒ  } | j ƒ  } Wd  QXd | j | k rE‚  qEqŠXqd t	 j j | j ƒ k rt	 j j | j ƒ sŠt | j ƒ ‚ qql ql Wx’ | D]Š } x | j D]v }	 t | |	 ƒ }
 |	 d k rÏq¨q¨|	 d
 k rð|
 st |
 ƒ ‚ q¨|  j |
 t t f ƒ |
 d	 k s¨t |
 ƒ ‚ q¨Wq˜Wd  S(   Nt   groupedt   [s   /proc/self/smapss   %s (deleted)t   64R”   t   addrt   permsi    (   R  R  (   R0   R1   t   memory_mapsR2   Rª   t   sett   FalseR”   RÃ   R4   t   isabsRo   R   t   existst   islinkR   R
   Rž   t   basenameRw   Rz   Rg   t   intR   (   R-   R8   t   mapsRj   t   pathst   ext_mapst   ntR¬   t   datat   fnameR°   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_memory_mapse  s<    "$(.c         C   sc   t  ƒ  T } d „  } g  t j ƒ  j ƒ  D] } | | j ƒ ^ q( } |  j | | ƒ | ƒ Wd  QXd  S(   Nc         S   s   t  j j t  j j |  ƒ ƒ S(   N(   R4   R”   R•   t   normcase(   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   normpath’  s    (   R   R0   R1   R  R”   RU   (   R-   R”   R  Rj   t   libpaths(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_memory_maps_lists_libŽ  s
    	+c         C   sX   t  j ƒ  } | j ƒ  |  j t | j d d ƒt sA t sA t rT | j d d ƒ n  d  S(   Nt   memtypes   ?!?Rý   (   R0   R1   Rê   R6   RQ   R   R   R	   (   R-   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_memory_percent˜  s
    
c         C   s}   t  ƒ  } t j | j ƒ } | j ƒ  s- t ‚ | j ƒ  s? t ‚ | j ƒ  | j ƒ  | j ƒ  sf t ‚ | j ƒ  sy t ‚ d  S(   N(   R   R0   R1   R3   RT   Ro   R;   R<   (   R-   R9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_is_runningŸ  s    	

c         C   s  t  ƒ  } t j | j ƒ j ƒ  } y |  j | t ƒ Wn¸ t k
 rï t rŽ t	 | ƒ t	 t ƒ k rŽ t
 j j } |  j | | ƒ | t ƒ ƒ qð d t j d t j d f } y, |  j | j | d ƒ t j | d ƒ ƒ Wqð t k
 rë qð Xn Xt | d d g ƒ } |  j | d ƒ d  S(   Ns   %s.%si    i   RG   s   -cs   import os; print('hey')t   hey(   R   R0   R1   R3   t   exeR2   R   Ro   R	   Rª   R4   R”   R  R   t   version_infot   replaceR#   (   R-   R9   R  R  t   vert   out(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_exe©  s     	c         C   s©   t  d d g } t | ƒ } y8 |  j d j t j | j ƒ j ƒ  ƒ d j | ƒ ƒ WnO t k
 r¤ t	 su t
 su t rž |  j t j | j ƒ j ƒ  d t  ƒ q¥ ‚  n Xd  S(   Ns   -cs   import time; time.sleep(60)t    i    (   R   R   R2   t   joinR0   R1   R3   t   cmdlineRo   R   R   R    (   R-   R%  R9   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cmdlineÅ  s    $#c         C   sf   t  t ƒ |  j t t ƒ t g d g d } t | ƒ } t j | j ƒ } |  j | j	 ƒ  | ƒ d  S(   Nt
   0123456789i   (
   R   R'   t
   addCleanupR"   R   R0   R1   R3   R2   R%  (   R-   R%  R9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_long_cmdline×  s    
c         C   sv   t  t ƒ } t j | j ƒ j ƒ  j ƒ  } t j j	 t j j
 t j ƒ ƒ j ƒ  } | j | ƒ sr t | | f ƒ ‚ d  S(   N(   R   R   R0   R1   R3   RW   t   lowerR4   R”   R  R•   R   t
   executableRÃ   Ro   (   R-   R9   RW   t   pyexe(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_nameß  s    'c         C   sh   t  d } t | ƒ |  j t | ƒ t | ƒ } t j | j ƒ } |  j | j	 ƒ  t
 j j | ƒ ƒ d  S(   NR'  i   t   01234567890123456789(   R'   R   R(  R"   R   R0   R1   R3   R2   RW   R4   R”   R  (   R-   t	   long_nameR9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_long_nameå  s    

s   broken on SUNOSs   broken on AIXc            sé   ‡  f d †  } t  d ‰  t ˆ  ƒ |  j | ƒ ˆ  d d d d d d g } t | ƒ } t j | j ƒ } t r t | j ƒ n  |  j	 | j
 ƒ  | ƒ |  j	 | j ƒ  t j j ˆ  ƒ ƒ |  j	 t j j | j ƒ  ƒ t j j ˆ  ƒ ƒ d  S(   Nc              s&   y t  ˆ  ƒ Wn t k
 r! n Xd  S(   N(   R"   RJ   (    (   t
   funky_path(    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   rmõ  s    s	   foo bar )s   -cs9   import time; [time.sleep(0.01) for x in range(3000)];arg1t   arg2RG   t   arg3(   R'   R   R(  R   R0   R1   R3   R)   R+   R2   R%  RW   R4   R”   R  R  R  (   R-   R2  R%  R9   R8   (    (   R1  s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_prog_w_funky_nameî  s    	

"c         C   s   t  j ƒ  } | j ƒ  \ } } } |  j | t j ƒ  ƒ |  j | t j ƒ  ƒ t t d ƒ r{ |  j t j ƒ  | j ƒ  ƒ n  d  S(   Nt	   getresuid(	   R0   R1   t   uidsR2   R4   R·   t   geteuidt   hasattrR6  (   R-   R8   t   realt	   effectivet   saved(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_uids  s    c         C   s   t  j ƒ  } | j ƒ  \ } } } |  j | t j ƒ  ƒ |  j | t j ƒ  ƒ t t d ƒ r{ |  j t j ƒ  | j ƒ  ƒ n  d  S(   NR6  (	   R0   R1   t   gidsR2   R4   t   getgidt   getegidR9  t	   getresgid(   R-   R8   R:  R;  R<  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_gids  s    c         C   s  t  j ƒ  } |  j t | j d ƒ t ré zª | j ƒ  } t j d k r\ |  j | t	 j
 ƒ n |  j | t ƒ |  j | t  j ƒ | j t  j ƒ |  j | j ƒ  t  j ƒ | j t  j ƒ |  j | j ƒ  t  j ƒ Wd  | j t  j ƒ Xn | j ƒ  } zè yÍ t t d ƒ r8|  j t j t j t j ƒ  ƒ | j ƒ  ƒ n  | j d ƒ |  j | j ƒ  d ƒ t t d ƒ r˜|  j t j t j t j ƒ  ƒ | j ƒ  ƒ n  t sÄ| j d ƒ |  j | j ƒ  d ƒ n  Wn t  j k
 rÛn XWd  y | j | ƒ Wn t  j k
 rn XXd  S(   Nt   stri   i   t   getpriorityi   i    (   i   i   (   R0   R1   R6   R¾   t   niceR	   R   R  Rg   R   t   IntEnumR  R2   t   NORMAL_PRIORITY_CLASSt   HIGH_PRIORITY_CLASSR9  R4   RD  t   PRIO_PROCESSR5   R   RO   (   R-   R8   t   initt
   first_nice(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_nice*  sD     ((c         C   s)   t  j ƒ  } |  j | j ƒ  t  j ƒ d  S(   N(   R0   R1   R2   t   statust   STATUS_RUNNING(   R-   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_statusS  s    c         C   sž   t  ƒ  } t j | j ƒ } | j ƒ  } t r„ | j d ƒ \ } } |  j | t j	 ƒ  ƒ d t
 j k rš |  j | t
 j d ƒ qš n |  j | t j	 ƒ  ƒ d  S(   Ns   \t
   USERDOMAIN(   R   R0   R1   R3   t   usernameR	   t   splitR2   t   getpasst   getuserR4   t   environ(   R-   R9   R8   RQ  t   domain(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_usernameW  s    	c         C   s;   t  ƒ  } t j | j ƒ } |  j | j ƒ  t j ƒ  ƒ d  S(   N(   R   R0   R1   R3   R2   t   cwdR4   t   getcwd(   R-   R9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cwdc  s    	c         C   sA   t  d d g } t | ƒ } t j | j ƒ } t | j d ƒ d  S(   Ns   -cs/   import os, time; os.chdir('..'); time.sleep(60)s#   ret == os.path.dirname(os.getcwd())(   R   R   R0   R1   R3   R   RX  (   R-   t   cmdR9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt
   test_cwd_2h  s
    	c         C   sD  t  j ƒ  } | j ƒ  } | s* t | ƒ ‚ |  j | j | ƒ t t d ƒ rq |  j | t t j	 | j
 ƒ ƒ ƒ n  |  j t | ƒ t t | ƒ ƒ ƒ t t t t  j d t ƒ ƒ ƒ ƒ } x¯ t sÆ | n | D]› } | j | g ƒ |  j | j ƒ  | g ƒ t t d ƒ r3|  j | j ƒ  t t j	 | j
 ƒ ƒ ƒ n  t | d ƒ rÊ |  j | j ƒ  d | j ƒ  ƒ qÊ qÊ W| j g  ƒ t rž|  j | j ƒ  | j j ƒ  ƒ n |  j | j ƒ  | ƒ t t d ƒ rî|  j | j ƒ  t t j	 | j
 ƒ ƒ ƒ n  |  j t | j d ƒ | j | ƒ t s@| j t | ƒ ƒ | j t | ƒ ƒ n  d  S(   Nt   sched_getaffinityt   percput   num_cpui    i   (   R0   R1   t   cpu_affinityRo   R(  R9  R4   R2   t   listR]  R3   Rª   R  Rf   Re   Ra   R)   R_  R   t   _proct   _get_eligible_cpusR6   R¾   R¶   (   R-   R8   t   initialt   all_cpust   n(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_affinityo  s8    %"$'"c         C   s«   t  ƒ  } t j | j ƒ } t t j d t ƒ ƒ d g } |  j t | j	 | ƒ |  j t | j	 t
 d d ƒ ƒ |  j t | j	 d d g ƒ |  j t | j	 d d g ƒ d  S(   NR^  i
   i'  iø*  i    t   1iÿÿÿÿ(   R   R0   R1   R3   Rª   Rr   Ra   R6   RQ   R`  Rf   R¾   (   R-   R9   R8   t   invalid_cpu(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_cpu_affinity_errsš  s    	c         C   sØ   t  j ƒ  } | j ƒ  } | s* t | ƒ ‚ |  j | j | ƒ g  } xZ t d t | ƒ d ƒ D]? } x6 t j | | ƒ D]" } | rv | j	 t
 | ƒ ƒ qv qv Wq] Wx1 | D]) } | j | ƒ |  j | j ƒ  | ƒ q§ Wd  S(   Ni    i   (   R0   R1   R`  Ro   R(  Rf   Rª   t	   itertoolst   combinationst   appendRa  R2   (   R-   R8   Rd  t   combost   lt   subsett   combo(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt"   test_cpu_affinity_all_combinations¤  s     s   broken on BSDs   unreliable on APPVEYORc   	   	   C   sÍ  t  j ƒ  } | j ƒ  } |  j t | k ƒ t t d ƒ • } | j d d ƒ | j ƒ  t | j d t	 | ƒ ƒ } xT | D]5 } | j
 t k r{ t r¬ |  j | j d ƒ n  Pq{ q{ W|  j d t | ƒ ƒ Wd  QXx/ | D]' } t j
 j | j
 ƒ sØ t | ƒ ‚ qØ Wd t } t t d | g ƒ } t  j | j ƒ } xc t d ƒ D]E } g  | j ƒ  D] } | j
 ^ qT} t | k ryPn  t j d	 ƒ qAW|  j t | ƒ x, | D]$ } t j
 j | ƒ s¡t | ƒ ‚ q¡Wd  S(
   NRÌ   Rj   i   s   len(ret) != %is   no file found; files=%ss2   import time; f = open(r'%s', 'r'); time.sleep(60);s   -cid   g{®Gáz„?(   R0   R1   t
   open_filesR=   R'   R   R¨   t   flushR   Rª   R”   R   R2   t   positionR   t   reprR4   t   isfileRo   R   R   R3   Rf   R`   t   sleepRU   (	   R-   R8   t   filesR¬   t   fileR%  R9   Rj   t	   filenames(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_open_files·  s4    
%
"c         C   s)  t  t d ƒ } t j ƒ  } x\ | j ƒ  D]1 } | j | j k sX | j | j ƒ  k r+ Pq+ q+ W|  j	 d t
 | j ƒ  ƒ ƒ |  j | j | j ƒ t r¯ |  j | j d ƒ n |  j | j | j ƒ  ƒ | j ƒ  d } |  j | d | j ƒ |  j | d | j ƒ |  j | j | j ƒ  ƒ Wd  QXd  S(   Nt   ws   no file found; files=%siÿÿÿÿi    i   (   R   R'   R0   R1   Rs  R”   RW   t   fdt   filenoR   Rv  R2   R	   t   assertNotIn(   R-   t   fileobjR8   Rz  t   ntuple(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_open_files_2Þ  s    'c         C   sµ   t  j ƒ  } | j ƒ  } t t d ƒ } |  j | j ƒ |  j | j ƒ  | d ƒ t j ƒ  } |  j | j ƒ |  j | j ƒ  | d ƒ | j ƒ  | j ƒ  |  j | j ƒ  | ƒ d  S(   NR}  i   i   (	   R0   R1   t   num_fdsR   R'   R(  t   closeR2   t   socket(   R-   R8   t   startRz  t   sock(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_num_fdsö  s    

s    not reliable on OPENBSD & NETBSDc         C   sh   t  j ƒ  } t | j ƒ  ƒ } x6 t d ƒ D]( } t | j ƒ  ƒ } | | k r+ d  Sq+ W|  j d ƒ d  S(   Ni ¡ s7   num ctx switches still the same after 50.000 iterations(   R0   R1   Rç   t   num_ctx_switchesRf   R   (   R-   R8   t   beforeRj   t   after(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_num_ctx_switches  s    c         C   s×   t  t d ƒ r4 |  j t j ƒ  j ƒ  t j ƒ  ƒ n  t j ƒ  } t ƒ  } t j | j	 ƒ } |  j | j ƒ  | ƒ t
 d t ƒ t rˆ d  SxH t j ƒ  D]: } | j	 | j	 k r³ q• n  |  j | j ƒ  | d | ƒq• Wd  S(   Nt   getppidt	   recursiveRø   (   R9  R4   R2   R0   R1   t   ppidRŽ  R5   R   R3   R    Ra   R   t   process_itert   assertNotEqual(   R-   t   this_parentR9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_ppid  s    %	c         C   sp   t  j ƒ  } t ƒ  } t j | j ƒ } |  j | j ƒ  j | ƒ t j ƒ  d } |  j	 t j | ƒ j ƒ  ƒ d  S(   Ni    (
   R4   R5   R   R0   R1   R3   R2   t   parentRP   R–   (   R-   R“  R9   R8   t
   lowest_pid(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_parent#  s    	c         C   sE   t  ƒ  \ } } |  j | j ƒ  | ƒ |  j | j ƒ  t j ƒ  ƒ d  S(   N(   R   R2   R•  R0   R1   (   R-   R[   R\   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_parent_multi,  s    c         C   sZ   t  ƒ  } t j | j ƒ } t j d d t j d d ƒ ƒ |  j | j ƒ  ƒ Wd  QXd  S(   Ns   psutil.ProcessRF   i    t   foo(	   R   R0   R1   R3   R   RI   RM   R–   R•  (   R-   R9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_parent_disappeared1  s
    	c         C   sØ   t  j ƒ  j ƒ  s t ‚ t ƒ  \ } } |  j | j ƒ  d t  j ƒ  ƒ |  j | j ƒ  d | ƒ |  j | j ƒ  d t  j ƒ  ƒ t rÔ t  j ƒ  d } |  j | j ƒ  d j | ƒ |  j | j ƒ  d j | ƒ n  d  S(   Ni    i   iÿÿÿÿ(	   R0   R1   t   parentsRo   R   R2   R   RP   R3   (   R-   R[   R\   R–  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_parents9  s      c         C   sã   t  d t ƒ t j ƒ  } |  j | j ƒ  g  ƒ |  j | j d t ƒ g  ƒ t d d ƒ } | j ƒ  } | j d t ƒ } xd | | f D]V } |  j t | ƒ d ƒ |  j | d j | j ƒ |  j | d j	 ƒ  t
 j ƒ  ƒ q… Wd  S(   NR  t   creationflagsi    i   (   R    Ra   R0   R1   R2   t   childrenR   Rª   R3   R  R4   R5   (   R-   R8   R9   t	   children1t	   children2Rž  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_childrenD  s    c         C   sŠ   t  ƒ  \ } } t j ƒ  } |  j | j ƒ  | g ƒ |  j | j d t ƒ | | g ƒ | j ƒ  | j ƒ  |  j | j d t ƒ g  ƒ d  S(   NR  (   R   R0   R1   R2   Rž  Ra   RC   R<   (   R-   R[   R\   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_children_recursiveT  s    "

c         C   sÜ   t  j t ƒ } xE t j ƒ  D]7 } y | | j ƒ  c d 7<Wq t j k
 rR q Xq Wt | j ƒ  d d „  ƒd d } t j	 | ƒ } y | j
 d t ƒ } Wn t j k
 rµ n# X|  j t | ƒ t t | ƒ ƒ ƒ d  S(   Ni   t   keyc         S   s   |  d S(   Ni   (    (   Rj   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   <lambda>j  RG   iÿÿÿÿi    R  (   t   collectionst   defaultdictR  R0   R‘  R  t   Errort   sortedt   itemsR1   Rž  Ra   RO   R2   Rª   R  (   R-   t   tableR8   R3   t   c(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_children_duplicatesa  s    #c         C   s£   t  ƒ  \ } } t j ƒ  } | j d t ƒ } |  j t | ƒ d ƒ |  j | d | ƒ |  j | d | ƒ | j ƒ  } |  j | d | ƒ |  j | d | ƒ d  S(   NR  i   i    i   (   R   R0   R1   Rž  Ra   R2   Rª   R›  (   R-   R[   R\   t   meRž  R›  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_parents_and_childrens  s    c         C   s‰   t  ƒ  } t j | j ƒ } | j ƒ  x: t d ƒ D], } | j ƒ  t j k rQ Pn  t j	 d ƒ q2 W| j
 ƒ  |  j | j ƒ  t j ƒ d  S(   Nid   g{®Gáz„?(   R   R0   R1   R3   t   suspendRf   RM  t   STATUS_STOPPEDR`   Rx  t   resumeR’  (   R-   R9   R8   Rj   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_suspend_resume€  s    	

c         C   s0   |  j  t t j d ƒ |  j  t t j d ƒ d  S(   NRh  iÿÿÿÿ(   R6   R¾   R0   R1   RQ   (   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_invalid_pid‹  s    c         C   s  t  j ƒ  } | j d d d g ƒ } |  j t | j ƒ  ƒ d d g ƒ t  j t t  j ƒ  ƒ ƒ } | j d d g d d ƒ } t | d t	 ƒ s¦ |  j | d d ƒ n  t
 j d d t d	 t  j ƒ1 |  j | j d d
 g d d ƒ i d d
 6ƒ Wd  QXt
 j d d t d	 t  j | j d ƒ ƒ$ |  j t  j | j d d
 g ƒWd  QXt
 j d d t d	 t  j | j d ƒ ƒ1 |  j | j d d
 g d d ƒ i d d
 6ƒ Wd  QXt
 j d d t d	 t ƒV | j ƒ  } |  j d
 t	 | j ƒ  ƒ ƒ |  j t ƒ  | j d d
 g ƒ Wd  QXWd  QX|  j t ƒ  | j d ƒ Wd  QX|  j t ƒ  | j d g ƒ Wd  QX|  j t ƒ  | j d d g ƒ Wd  QXd  S(   Nt   attrsR  RW   t   connectionst   ad_valueR™  s   psutil.Process.nicet   createRF   RE  i   t   bar(   R0   R1   t   as_dictR2   R¨  t   keysR~   RP   t
   isinstanceRa  R   RI   Ra   RO   RM   R3   R6   t   ZombieProcesst   NotImplementedErrorR€  R¾   RQ   (   R-   R8   t   d(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_as_dict  s>    ",,
c      	   C   s¡   t  j d ƒ M } t j ƒ  } | j ƒ   | j ƒ  | j ƒ  Wd  QX|  j | j d ƒ Wd  QXt  j d ƒ  } | j ƒ  | j ƒ  Wd  QX|  j | j d ƒ d  S(   Ns$   psutil._psplatform.Process.cpu_timesi   i   (   R   RI   R0   R1   t   oneshotRr   R2   t
   call_count(   R-   Rp   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_oneshot½  s    

c         C   só   t  j d ƒ Ÿ } t  j d ƒ ‡ } t j ƒ  } | j ƒ  @ | j ƒ  | j ƒ  | j ƒ   | j ƒ  | j ƒ  Wd  QXWd  QX|  j | j d ƒ |  j | j d ƒ Wd  QXWd  QXt  j d ƒ  } | j ƒ  | j ƒ  Wd  QX|  j | j d ƒ d  S(   Ns$   psutil._psplatform.Process.cpu_timess(   psutil._psplatform.Process.oneshot_enteri   i   (   R   RI   R0   R1   RÀ  Rr   R2   RÁ  (   R-   t   m1t   m2R8   Rp   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_oneshot_twiceÊ  s    



c         C   s¹   t  ƒ  \ } } | j ƒ  } | j ƒ  } |  j | | ƒ | j ƒ  1 |  j | j ƒ  | ƒ |  j | j ƒ  | ƒ Wd  QX| j ƒ  1 |  j | j ƒ  | ƒ |  j | j ƒ  | ƒ Wd  QXd  S(   N(   R   R  R’  RÀ  R2   (   R-   R[   R\   t   p1_ppidt   p2_ppid(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_oneshot_cacheÞ  s    c         C   s£  t  ƒ  } t j | j ƒ } | j ƒ  | j ƒ  t rO t t j d | j ƒ n  | j	 ƒ  sb t
 ‚ t r½ |  j t j ƒ  | j t j ƒ Wd  QX|  j t j ƒ  | j t j ƒ Wd  QXn  d d d d d d g } t rò t rò | j d ƒ n  xªt | ƒ D]œ} | j d	 ƒ sÿ | | k r&qÿ n  yè t | | ƒ } | d
 k rkt rY| d ƒ } q| t j ƒ } n¢ | d k r| ƒ  } | d ƒ } n~ | d k r¿| t j ƒ } | t j d ƒ } nN | d k ræ| ƒ  } | d g ƒ } n' | d k r| t j ƒ } n	 | ƒ  } Wns t j k
 r5|  j d | ƒ qÿ t j k
 rHqÿ t j k
 rst rm| d k rmq›‚  qÿ t k
 rƒqÿ X|  j d | | f ƒ qÿ Wd  S(   Ns   %s not in retR3   RT   R<   R‰   RÀ  t   memory_info_exRÄ   t   _RE  i   R±   i   i   R`  i    RH   s/   ZombieProcess for %r was not supposed to happenRà   RÙ   s4   NoSuchProcess exception not raised for %r, retval=%s(   i   i   (   Rà   RÙ   (    R   R0   R1   R3   RC   R<   R	   R   RP   RT   Ro   R6   RM   RH   R?   t   CTRL_C_EVENTt   CTRL_BREAK_EVENTR   R   Rm  RÂ   RÃ   Rz   R   RG  RÉ   RD   R¼  R   RO   R   R½  (   R-   R9   R8   t   excluded_namesRW   t   methRÇ   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_halfway_terminated_processí  sh    	

			c         C   sŽ  d „  } t  ƒ  } |  j t d t ƒt j | ƒ } |  j | j ƒ  t j ƒ |  j	 | j
 ƒ  ƒ | j ƒ  | | j ƒ } | d  k	 r˜ |  j | g  ƒ n  t | d ƒ rÓ | | j t j ƒ | | j t j d
 ƒ n  | | j ƒ t | d ƒ rCy | | j d g ƒ WqCt k
 r?} t r9t r9d t | ƒ k r9q@‚  qCXn  | | j d ƒ t | d ƒ r‘t r~| | j d	 d ƒ q‘| | j d ƒ n  t | d ƒ r¹| | j t j d ƒ n  | | j ƒ | | j ƒ | | j ƒ | | j ƒ |  j	 t j | ƒ ƒ t rŠt rŠ|  j | t j ƒ  ƒ |  j | g  t j  ƒ  D] } | j! ^ q<ƒ i  t _" |  j | g  t j  ƒ  D] } | j! ^ qqƒ n  d  S(   Nc         _   s5   y |  | | Ž  SWn t  j t  j f k
 r0 n Xd  S(   N(   R0   R¼  RO   (   t   funt   argst   kwargs(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   succeed_or_zombie_p_exc3  s    R  RÄ   i   R`  i    s   not eligibleR±   i   (   i   i   (   i   i   (#   R   R(  R    Ra   R0   R1   R2   RM  t   STATUS_ZOMBIEt
   assertTrueRT   R¹  R¯  RV   R9  RÄ   RÉ   R•  R`  RQ   R)   R   RC  RE  R±   R±  RC   R;   R>   R   RU   RP   R‘  R3   t   _pmap(   R-   RÓ  t   zpidt   zprocRÇ   t   errRj   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_zombie_process1  sP    		


	,	c         C   sX   t  j ƒ  } t j d d t  j d ƒ ƒ( } | j ƒ  s? t ‚ | j sN t ‚ Wd  QXd  S(   Ns   psutil.ProcessRF   i    (   R0   R1   R   RI   R¼  RT   Ro   Rn   (   R-   R8   Rp   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt$   test_zombie_process_is_running_w_excz  s
    c         C   s_   t  j ƒ  } t j d d t  j d ƒ ƒ/ } |  j | j ƒ  t  j ƒ | j sU t	 ‚ Wd  QXd  S(   Ns!   psutil._psplatform.Process.statusRF   i    (
   R0   R1   R   RI   R¼  R2   RM  RÔ  Rn   Ro   (   R-   R8   Rp   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt    test_zombie_process_status_w_exc„  s
    c         C   s§  d t  j ƒ  k r/ |  j t  j t  j d ƒ d  St  j d ƒ } xæ t  j D]Û } | d k r` qH n  t | | ƒ } y | ƒ  } Wn t  j k
 r’ qH X| d
 k rµ |  j | j	 d ƒ qH | d k rt
 rà |  j | j ƒ  d ƒ q#t r#|  j | j ƒ  d ƒ q#qH | d k rH | s#t | ƒ ‚ qH qH Wt | d	 ƒ rdy | j t  j ƒ Wqdt  j k
 r`qdXn  | j ƒ  t s£|  j d t  j ƒ  ƒ |  j t  j d ƒ ƒ n  d  S(   Ni    R3   R7  R>  RQ  t   roots   NT AUTHORITY\SYSTEMRW   RÄ   (   R7  R>  (   R0   RP   R6   RM   R1   t   _as_dict_attrnamesRz   RO   R2   R:  R   RQ  R	   Ro   R9  RÄ   RÎ   R¹  R   RU   RÕ  R>   (   R-   R8   RW   RÎ  RÇ   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt
   test_pid_0Ž  s<    
c         C   sY   d „  } d  |  _ t j ƒ  } | | j ƒ  ƒ } | t j j ƒ  ƒ } |  j | | ƒ d  S(   Nc         S   sÈ   |  j  d d  ƒ |  j  d d  ƒ |  j  d d  ƒ t ri |  j  d d  ƒ |  j  d d  ƒ |  j  d d  ƒ n  t g  |  j ƒ  D]H \ } } | j d d ƒ j d	 d ƒ | j d d ƒ j d	 d ƒ f ^ qy ƒ S(
   Nt   PSUTIL_TESTINGt   PLATt   HOMEt   __CF_USER_TEXT_ENCODINGt   VERSIONER_PYTHON_PREFER_32_BITt   VERSIONER_PYTHON_VERSIONs   RG   s   
(   t   popRV   R   t   dictR©  R  (   R¾  t   kt   v(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt
   clean_dict·  s    (   RV   t   maxDiffR0   R1   RU  R4   t   copyR2   (   R-   Rê  R8   t   d1t   d2(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_environµ  s    		c         C   sæ   t  j d ƒ } t } t | d | ƒ|  j t | ƒ t | g d t j d t j ƒ} t	 j
 | j ƒ } t | j ƒ |  j | j ƒ  ƒ |  j | j j ƒ  d ƒ |  j | j ƒ  i d d 6d d	 6ƒ | j ƒ  |  j | j d
 ƒ d  S(   Ns×  
            #include <unistd.h>
            #include <fcntl.h>
            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);
            }
            t   c_codeR‘   t   stderrRG   Rh  t   At   3t   Ci    (   t   textwrapt   dedentR'   R   R(  R"   R   t
   subprocesst   PIPER0   R1   R3   R+   RÕ  RT   R2   Rñ  Rž   RU  t   communicatet
   returncode(   R-   RY   R”   R9   R8   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_weird_environË  s    		$
(g   t   __name__t
   __module__t   __doc__R.   R/   R:   RB   RE   RS   RZ   R_   Rc   Rl   Rq   R|   R„   R*   t   skipIfR   Rˆ   R   R   R)   R—   R   R%   R   R¯   R   R¹   R	   R¿   R   RÈ   RË   RÕ   R×   RØ   RÝ   Rß   R   Rä   R!   R$   R   Rè   R÷   R   R   R  R  R  R  R"  R&  R)  R-  R0  R   R    R5  R=  RB  RL  RO  RW  RZ  R\  R   Rg  Rj  Rr  R   R   R|  Rƒ  R‰  R   R   R  R”  R—  R˜  Rš  Rœ  R¡  R¢  R¬  R®  R²  R³  R¿  RÂ  RÅ  RÈ  RÏ  RÚ  RÛ  RÜ  Rß  R   Rï  Rû  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR,   K   s°   				
	
	 	/										+,	"		)
		
							)				+
%$
													.				DI

	'i    t   LimitedUserTestCasec           B   se   e  Z d  Z e e d ƒ r6 e j ƒ  Z e j ƒ  Z n  d „  Z	 d „  Z
 d „  Z d „  Z d „  Z RS(   s—   Repeat the previous tests by using a limited user.
        Executed only on UNIX and only if the user who run the test script
        is root.
        R·   c            sŠ   t  j |  | | Ž xp g  t |  ƒ D] } | j d ƒ r# | ^ q# D]@ } t |  | ƒ ‰  ‡  f d †  } t |  | t j | |  ƒ ƒ qB Wd  S(   Nt   testc            s&   y ˆ  ƒ  Wn t  j k
 r! n Xd  S(   N(   R0   RO   (   R-   (   RÎ  (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_  s    (   R,   t   __init__RÂ   RÃ   Rz   t   setattrt   typest
   MethodType(   R-   RÑ  RÒ  Rj   t   attrR  (    (   RÎ  s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR  ü  s
    5c         C   s5   t  t ƒ t j |  ƒ t j d ƒ t j d ƒ d  S(   Niè  (   R"   R'   R,   R.   R4   t   setegidt   seteuid(   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR.   
  s    
c         C   s1   t  j |  j ƒ t  j |  j ƒ t j |  ƒ d  S(   N(   R4   R  t   PROCESS_UIDR	  t   PROCESS_GIDR,   R/   (   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR/     s    c         C   s?   y t  j ƒ  j d ƒ Wn t  j k
 r- n X|  j d ƒ d  S(   Niÿÿÿÿs   exception not raised(   R0   R1   RE  RO   R   (   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyRL    s
    c         C   s   d  S(   N(    (   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyRÚ    s    (   Rü  Rý  Rþ  R9  R4   R·   R
  R?  R  R  R.   R/   RL  RÚ  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR   ò  s   				t	   TestPopenc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   s   Tests for psutil.Popen class.c         C   s   t  ƒ  d  S(   N(   R    (   R-   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR/   *  s    c      	   C   s‹   t  d d g } t j | d t j d t j ƒU } | j ƒ  | j ƒ  | j |  j t	 | ƒ ƒ |  j
 t t | d ƒ | j ƒ  Wd  QXd  S(   Ns   -cs   import time; time.sleep(60);R“   Rñ  R™  (   R   R0   t   PopenR÷  Rø  RW   Rr   R‘   RÕ  RÂ   R6   R7   Rz   RC   (   R-   R[  t   proc(    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt	   test_misc-  s    

c         C   s   t  j t d g d t j d t j d t j ƒ } | j ƒ  Wd  QX| j j sU t ‚ | j	 j sg t ‚ | j
 j sy t ‚ |  j | j d ƒ d  S(   Ns   -VR“   Rñ  R‘   i    (   R0   R  R   R÷  Rø  Rù  R“   t   closedRo   Rñ  R‘   R2   Rú  (   R-   R  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_ctx_manager;  s    		c         C   sé   t  d d g } t j | d t j d t j ƒ³ } | j ƒ  | j ƒ  |  j t j | j ƒ |  j t j | j	 ƒ |  j t j | j
 t j ƒ t rß t j d k rß |  j t j | j
 t j ƒ |  j t j | j
 t j ƒ n  Wd  QXd  S(   Ns   -cs   import time; time.sleep(60);R“   Rñ  i   i   (   i   i   (   R   R0   R  R÷  Rø  RC   R<   R6   RM   R;   RH   R?   RD   R	   R   R  RË  RÌ  (   R-   R[  R  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   test_kill_terminateF  s    



(   Rü  Rý  Rþ  R/   R  R  R  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyR  '  s
   			t   __main__(   t   run(G   Rþ  R¥  RK   RS  Rk  R4   R?   R†  R÷  R   R¦   Rõ  R`   R  R0   R    R   R   R   R   R   R   R   R   R	   t   psutil._commonR
   t   psutil._compatR   R   t   psutil.testsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   t   TestCaseR,   R·   R   R  Rü  t   psutil.tests.runnerR  t   __file__(    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_process.pyt   <module>   sŒ   ÿ ÿ ÿ ÿ ÿ «53