
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 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	 Z	 d  e$ j( f d!     YZ) d" e$ j( f d#     YZ* d$ e$ j( f d%     YZ+ d& e$ j( f d'     YZ, e- d( k rd d) l. m/ Z/ e/ e0  n  d S(*   s   Contracts tests. These tests mainly check API sanity in terms of
returned types and APIs availability.
Some of these are duplicates of tests test_system.py and test_process.py
iN(   t   closing(   t   AIX(   t   BSD(   t   FREEBSD(   t   LINUX(   t   MACOS(   t   NETBSD(   t   OPENBSD(   t   OSX(   t   POSIX(   t   SUNOS(   t   WINDOWS(   t   long(   t   bind_unix_socket(   t   check_connection_ntuple(   t   get_kernel_version(   t   HAS_CONNECTIONS_UNIX(   t   HAS_NET_IO_COUNTERS(   t
   HAS_RLIMIT(   t   HAS_SENSORS_FANS(   t   HAS_SENSORS_TEMPERATURES(   t   is_namedtuple(   t   safe_rmpath(   t   skip_on_access_denied(   t   TESTFN(   t   unittest(   t   unix_socket_path(   t   VALID_PROC_STATUSES(   t   warnt   TestAvailabilityc           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 d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sQ   Make sure code reflects what doc promises in terms of APIs
    availability.
    c         C   s2   t  p t p t } |  j t t j d  |  d  S(   Nt   cpu_affinity(   R   R   R   t   assertEqualt   hasattrt   psutilt   Process(   t   selft   hasit(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_cpu_affinity=   s    c         C   s6   |  j  t t d  t  |  j  t t d  t  d  S(   Nt   win_service_itert   win_service_get(   R   R    R!   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_win_serviceA   s    c         C   s)   |  j  t t d  t p! t p! t  d  S(   Nt   PROCFS_PATH(   R   R    R!   R   R
   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_PROCFS_PATHE   s    c         C   s   |  j  } | t t d  t  | t t d  t  | t t d  t  | t t d  t  | t t d  t  | t t d  t  d  S(   Nt   ABOVE_NORMAL_PRIORITY_CLASSt   BELOW_NORMAL_PRIORITY_CLASSt   HIGH_PRIORITY_CLASSt   IDLE_PRIORITY_CLASSt   NORMAL_PRIORITY_CLASSt   REALTIME_PRIORITY_CLASS(   R   R    R!   R   (   R#   t   ae(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_win_priorityI   s    	c         C   se   |  j  } | t t d  t  | t t d  t  | t t d  t  | t t d  t  d  S(   Nt   IOPRIO_CLASS_NONEt   IOPRIO_CLASS_RTt   IOPRIO_CLASS_BEt   IOPRIO_CLASS_IDLE(   R   R    R!   R   (   R#   R1   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_linux_ioprioR   s
    	c         C   s  |  j  } t o t   d k } | t t j d  |  | t t d  |  | t t d  |  | t t d  |  | t t d  |  | t t d	  |  | t t d
  |  | t t d  |  | t t d  |  | t t d  |  | t t d  |  | t t d  |  | t t d  |  t oQt   d k } | t t d  |  | t t d  |  | t t d  |  | t t d  |  | t t d  |  d  S(   Ni   i   i$   t   rlimitt   RLIM_INFINITYt	   RLIMIT_ASt   RLIMIT_COREt
   RLIMIT_CPUt   RLIMIT_DATAt   RLIMIT_FSIZEt   RLIMIT_LOCKSt   RLIMIT_MEMLOCKt   RLIMIT_NOFILEt   RLIMIT_NPROCt
   RLIMIT_RSSt   RLIMIT_STACKi   i    t   RLIMIT_MSGQUEUEt   RLIMIT_NICEt   RLIMIT_RTPRIOt   RLIMIT_RTTIMEt   RLIMIT_SIGPENDING(   i   i   i$   (   i   i    (   R   R   R   R    R!   R"   (   R#   R1   R$   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_linux_rlimitY   s*    	c         C   sY   t  o' t j j d  p' t j j d  } |  j t t d  | pQ t pQ t pQ t	  d  S(   Ns   /sys/devices/system/cpu/cpufreqs$   /sys/devices/system/cpu/cpu0/cpufreqt   cpu_freq(
   R   t   ost   patht   existsR   R    R!   R   R   R   (   R#   t   linux(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_cpu_freqq   s
    c         C   s#   |  j  t t d  t p t  d  S(   Nt   sensors_temperatures(   R   R    R!   R   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_sensors_temperaturesx   s    c         C   s   |  j  t t d  t  d  S(   Nt   sensors_fans(   R   R    R!   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_sensors_fans|   s    c         C   s/   |  j  t t d  t p' t p' t p' t  d  S(   Nt   sensors_battery(   R   R    R!   R   R   R   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_battery   s    c         C   s8   |  j  t t j d  t p0 t p0 t p0 t p0 t  d  S(   Nt   environ(	   R   R    R!   R"   R   R   R   R   R
   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_environ   s    c         C   s    |  j  t t j d  t  d  S(   Nt   uids(   R   R    R!   R"   R	   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_uids   s    c         C   s    |  j  t t j d  t  d  S(   NRY   (   R   R    R!   R"   R	   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_gids   s    c         C   s    |  j  t t j d  t  d  S(   Nt   terminal(   R   R    R!   R"   R	   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_terminal   s    c         C   s&   |  j  t t j d  t p t  d  S(   Nt   ionice(   R   R    R!   R"   R   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_ionice   s    c         C   s    |  j  t t j d  t  d  S(   NR8   (   R   R    R!   R"   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_rlimit   s    c         C   s8   t  t j d  } |  j | t s' t r- t n t  d  S(   Nt   io_counters(   R    R!   R"   R   R   R
   t   Falset   True(   R#   R$   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_io_counters   s    c         C   s    |  j  t t j d  t  d  S(   Nt   num_fds(   R   R    R!   R"   R	   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_num_fds   s    c         C   s    |  j  t t j d  t  d  S(   Nt   num_handles(   R   R    R!   R"   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_num_handles   s    c         C   s,   |  j  t t j d  t p$ t p$ t  d  S(   NR   (   R   R    R!   R"   R   R   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_cpu_affinity   s    c         C   s,   |  j  t t j d  t p$ t p$ t  d  S(   Nt   cpu_num(   R   R    R!   R"   R   R   R
   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_cpu_num   s    c         C   sD   t  t j d  } |  j | t s3 t s3 t s3 t r9 t n t	  d  S(   Nt   memory_maps(
   R    R!   R"   R   R   R   R   R   Rb   Rc   (   R#   R$   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_proc_memory_maps   s    (   t   __name__t
   __module__t   __doc__R%   R(   R*   R2   R7   RJ   RP   RR   RT   RV   RX   RZ   R[   R]   R_   R`   Rd   Rf   Rh   Ri   Rk   Rm   (    (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR   8   s.   																						t   TestDeprecationsc           B   s   e  Z d    Z RS(   c         C   s   t  j d t   } t j   j   Wd  QX| d } |  j | j   t  |  j	 d t
 | j   |  j	 d t
 | j   d  S(   Nt   recordi    s   memory_info_ex() is deprecateds   use memory_info() instead(   t   warningst   catch_warningsRc   R!   R"   t   memory_info_ext   assertIsInstancet   categoryt   DeprecationWarningt   assertInt   strt   message(   R#   t   wst   w(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_memory_info_ex   s    
(   Rn   Ro   R~   (    (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRq      s   t
   TestSystemc           B   s   e  Z d  Z e d    Z d   Z d   Z d   Z d   Z e	 j
 e d  e	 j
 e d  e d e  d	      Z d
   Z d   Z e	 j
 e d  d    Z e	 j
 e d  d    Z e	 j
 e d  d    Z d   Z RS(   s   Check the return types of system related APIs.
    Mainly we want to test we never return unicode on Python 2, see:
    https://github.com/giampaolo/psutil/issues/1039
    c         C   s   t  j   |  _ d  S(   N(   R!   R"   t   proc(   t   cls(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt
   setUpClass   s    c         C   s   t  t  d  S(   N(   R   R   (   R#   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   tearDown   s    c         C   sS   t  j   } t |  s t  x. | D]& } |  j | t  |  j | d  q% Wd  S(   Ni    (   R!   t	   cpu_timesR   t   AssertionErrorRv   t   floatt   assertGreaterEqual(   R#   t   rett   n(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_cpu_times   s
    c         C   s1   x* t  j d t  D] } |  j | t  q Wd  S(   Nt   perdisk(   R!   t   disk_io_countersRc   Rv   Rz   (   R#   t   k(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_io_counters   s    c         C   sg   x` t  j   D]R } |  j | j t  |  j | j t  |  j | j t  |  j | j t  q Wd  S(   N(   R!   t   disk_partitionsRv   t   deviceRz   t
   mountpointt   fstypet   opts(   R#   t   disk(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_disk_partitions   s
    s
   POSIX onlys   can't list UNIX socketst   only_ifc         C   sq   t    b } t t |   G t j d d  } | s= t  x! | D] } |  j | j t  qD WWd  QXWd  QXd  S(   Nt   kindt   unix(	   R   R    R   R!   t   net_connectionsR   Rv   t   laddrRz   (   R#   t   namet   const   conn(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_net_connections   s    c         C   s   x t  j   j   D]~ \ } } |  j | t  x_ | D]W } |  j | j t  |  j | j t t d   f  |  j | j	 t t d   f  q6 Wq Wd  S(   N(
   R!   t   net_if_addrst   itemsRv   Rz   t   addresst   netmaskt   typet   Nonet	   broadcast(   R#   t   ifnamet   addrst   addr(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_net_if_addrs   s    c         C   s7   x0 t  j   j   D] \ } } |  j | t  q Wd  S(   N(   R!   t   net_if_statsR   Rv   Rz   (   R#   R   t   _(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_net_if_stats   s    s   not supportedc         C   s=   x6 t  j d t  j   D] \ } } |  j | t  q Wd  S(   Nt   pernic(   R!   t   net_io_countersRc   R   Rv   Rz   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_net_io_counters   s    %c         C   s[   xT t  j   j   D]@ \ } } |  j | t  x! | D] } |  j | j t  q6 Wq Wd  S(   N(   R!   RS   R   Rv   Rz   t   label(   R#   R   t   unitst   unit(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRT     s    c         C   s[   xT t  j   j   D]@ \ } } |  j | t  x! | D] } |  j | j t  q6 Wq Wd  S(   N(   R!   RQ   R   Rv   Rz   R   (   R#   R   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRR     s    c         C   s   x t  j   D]v } |  j | j t  |  j | j t t d   f  |  j | j t t d   f  |  j | j	 t
 t d   f  q Wd  S(   N(   R!   t   usersRv   R   Rz   R\   R   R   t   hostt   pidt   int(   R#   t   user(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt
   test_users  s
    (   Rn   Ro   Rp   t   classmethodR   R   R   R   R   R   t   skipIfR	   R   R   R   R   R   R   R   R   R   RT   R   RR   R   (    (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR      s   								t   TestFetchAllProcessesc           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 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 d   Z d   Z d   Z  d   Z! d    Z" d!   Z# d"   Z$ d#   Z% d$   Z& d%   Z' RS(&   s~   Test which iterates over all running processes and performs
    some sanity checks against Process API's returned values.
    c         C   s   t  d d d d d d d d d	 d
 d d g  } t rM t rM | j d  n  g  } xK t t j  D]: } | j d  r~ qc n  | | k r qc n  | j |  qc W| S(   Nt   send_signalt   suspendt   resumet	   terminatet   killt   waitt   as_dictt   parentt   parentst   childrenRu   t   oneshotR8   R   (	   t   setR   R   t   addt   dirR!   R"   t
   startswitht   append(   R#   t   excluded_namest   attrsR   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   get_attr_names'  s    c         c   sV   |  j    } xC t j   D]5 } | j   ! x | D] } | | f Vq3 WWd  QXq Wd  S(   N(   R   R!   t   process_iterR   (   R#   R   t   pR   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt
   iter_procs8  s
    c         C   s   d } i  } t  | | d   } | d  k	 rz t |  rz | d k rQ t j f } n | d k rm i t d 6} n  | | |   S| Sd  S(   NR8   Rl   t   grouped(    (   t   getattrR   t   callableR!   RA   Rb   (   R#   R   R   t   argst   kwargst   attr(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt	   call_meth?  s    c         C   sB  d } t    } g  } x|  j   D]\ } } | } y |  j | |  } Wnit k
 r d |  j j d | } t |  q" t j t j	 f k
 r } |  j
 | j | j  | j r |  j
 | j | j    n  t |  s t  | j st  q" t k
 rd d d d }	 |	 d | | f 7}	 | | k rO|	 d t |  7}	 n  |	 d	 7}	 |	 d
 d 7}	 |	 d t j   7}	 d j d   |	 j   D  }	 |	 d 7}	 | j |	  Pq" X| d 7} | d d g  d  d i  f k r| st |   n  t |  |  }
 |
 | |  q" W| r2|  j d j |   n  | s>t  d  S(   Ni    s&   %r was skipped because not implementeds   .test_s   
t   =iF   s   FAIL: test_%s (proc=%ss	   , ret=%s)s   )
t   -s   
%sc         s   s   |  ] } d | Vq d S(   t    i   Ns       (    (   t   .0t   i(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pys	   <genexpr>h  s    i   g        t    (   t   objectR   R   t   NotImplementedErrort	   __class__Rn   R   R!   t   NoSuchProcesst   AccessDeniedR   R   R   Rz   R   t   msgt	   Exceptiont   reprt	   tracebackt
   format_exct   joint
   splitlinesR   R   R   t   fail(   R#   t   valid_procst   defaultt   failuresR   R   R   R   t   errt   st   meth(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   test_fetch_allL  sJ    		


c         C   s5   |  j  | t  x | D] } |  j  | t  q Wd  S(   N(   Rv   t   listRz   (   R#   R   R   t   part(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   cmdlinez  s    c         C   s   |  j  | t t d   f  | s5 |  j | d  nu t j j |  sS t |   t	 r t j j
 |  r t t d  r t t d  r t j | t j  s t  q n  d  S(   NR   t   accesst   X_OK(   Rv   Rz   R   R   R   RL   RM   t   isabsR   R	   t   isfileR    R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   exe  s    c         C   s$   |  j  | t  |  j | d  d  S(   Ni    (   Rv   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR     s    c         C   s*   |  j  | t t f  |  j | d  d  S(   Ni    (   Rv   R   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   ppid  s    c         C   s)   |  j  | t  t s% | s% t  n  d  S(   N(   Rv   Rz   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR     s    c         C   sv   |  j  | t  y |  j | d  Wn2 t k
 rX t rR | j   t j k rR qY   n Xt j	 d t j
 |   d  S(   Ni    s   %Y %m %d %H:%M:%S(   Rv   R   R   R   R   t   statusR!   t   STATUS_ZOMBIEt   timet   strftimet	   localtime(   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   create_time  s    c         C   sG   t  |  s t  x. | D]& } |  j | t  |  j | d  q Wd  S(   Ni    (   R   R   Rv   R   R   (   R#   R   R   t   uid(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRY     s    c         C   sX   t  |  s t  x? | D]7 } |  j | t  t r t r |  j | d  q q Wd  S(   Ni    (   R   R   Rv   R   R   R   R   (   R#   R   R   t   gid(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   gids  s
    c         C   s    |  j  | t  | s t  d  S(   N(   Rv   Rz   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   username  s    c         C   s@   |  j  | t  | s t  |  j | d  |  j | t  d  S(   Nt   ?(   Rv   Rz   R   t   assertNotEqualRy   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR     s    c         C   s\   t  |  s t  xC | D]; } |  j | t t f  | d k r |  j | d  q q Wd  S(   Nii    (   R   R   Rv   R   R   R   (   R#   R   R   t   field(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRa     s
    c         C   s   t  r< t |  s t  x! | D] } |  j | t  q Wn  t rk |  j | j d  |  j | j d  n  |  j | d  |  j	 | d  d  S(   Ni    i   i   (   i    i   i   (
   R	   R   R   Rv   R   R   R   t   ioclasst   valueRy   (   R#   R   R   R  (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR^     s    c         C   s$   |  j  | t  |  j | d  d  S(   Ni   (   Rv   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   num_threads  s    c         C   s   |  j  | t  x | D]x } t |  s/ t  |  j | j d  |  j | j d  |  j | j d  x$ | D] } |  j  | t t	 f  qo Wq Wd  S(   Ni    (
   Rv   R   R   R   R   t   idt	   user_timet   system_timeR   R   (   R#   R   R   t   tR  (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   threads  s    c         C   sG   t  |  s t  x. | D]& } |  j | t  |  j | d  q Wd  S(   Ni    (   R   R   Rv   R   R   (   R#   R   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR     s    c         C   s<   |  j  | t  d | k o' d k n s8 t |   d  S(   Ng        g      Y@(   Rv   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   cpu_percent  s    c         C   s   |  j  | t  t r& | d k r& d  S|  j | d  t j   d k r[ |  j | d  n  |  j | t t	 t j      d  S(   Nii    i   (
   Rv   R   R   R   R!   t	   cpu_countR   Ry   R   t   range(   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRj     s    c         C   s  t  |  s t  x4 | D], } |  j | t t f  |  j | d  q Wt r t r | j d k r x | j	 D]= } | d k ro t
 | |  } |  j | j | d | qo qo Wna t r|  j | j | j  |  j | j | j  |  j | j | j  |  j | j | j  n  d  S(   Ni    t   vmsR   (   R   R   Rv   R   R   R   R	   R   R  t   _fieldsR   t   assertGreaterR   t	   peak_wsett   wsett   peak_paged_poolt
   paged_poolt   peak_nonpaged_poolt   nonpaged_poolt   peak_pagefilet   pagefile(   R#   R   R   R
  R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   memory_info  s    #c         C   s   t  |  s t  t j   j } x | j D] } t | |  } |  j | t t	 f  |  j
 | d d | | f t s+ t r | d k r q+ n  |  j | | d | | | f q+ Wt r |  j
 | j | j  n  d  S(   Ni    R   R  t   data(   R  R   (   R   R   R!   t   virtual_memoryt   totalR  R   Rv   R   R   R   R   R   t   assertLessEqualt   psst   uss(   R#   R   R   R"  R   R
  (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   memory_full_info
  s    #c         C   s:  |  j  | t  x#| D]} |  j  | j t  |  j  | j t  t r_ |  j | j d  n t r |  j  | j	 t  |  j  | j
 t  |  j  | j t  |  j | j	 d  |  j | j
 d  |  j | j d  n t r | j r q n  t j j | j  st |   t j j | j  s t |   q Wd  S(	   Nii    t   rR}   t   as   r+s   a+(   R'  R}   R(  s   r+s   a+(   Rv   R   t   fdR   RM   Rz   R   R   R   t   positiont   modet   flagsR   Ry   R  R   RL   R   R   R   (   R#   R   R   t   f(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt
   open_files  s"    !c         C   s$   |  j  | t  |  j | d  d  S(   Ni    (   Rv   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRe   .  s    c         C   sA   |  j  t |  t t |    x | D] } t |  q) Wd  S(   N(   R   t   lenR   R   (   R#   R   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   connections2  s    "c         C   s   | r |  j  | t  t j j |  s4 t |   y t j |  } WnI t k
 r } t rw | j	 t
 j j k rw q | j	 t	 j k r   q q Xt j | j  s t  n  d  S(   N(   Rv   Rz   RL   RM   R   R   t   statt   OSErrorR   t   errnoR!   t   _psplatformt   ACCESS_DENIED_SETt   ENOENTt   S_ISDIRt   st_mode(   R#   R   R   t   stR   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   cwd7  s    
c         C   s<   |  j  | t  d | k o' d k n s8 t |   d  S(   Ni    id   (   Rv   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   memory_percentG  s    c         C   s   |  j  | t  d  S(   N(   Rv   t   bool(   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt
   is_runningK  s    c         C   so   |  j  | t  | g  k s( t |   t t j    } x. | D]& } |  j  | t  |  j | |  qA Wd  S(   N(   Rv   R   R   R  R!   R  R   Ry   (   R#   R   R   t   cpusR   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR   N  s    c         C   sk   |  j  | t t d   f  | d  k	 rg t j j |  sF t |   t j j |  sg t |   n  d  S(   N(	   Rv   Rz   R   R   RL   RM   R   R   RN   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR\   V  s    c         C   s3  x,| D]$} |  j  | j t  |  j  | j t  |  j  | j t  x | j D] } t | |  } | d k r | j d  s't j j	 | j  s t
 | j   q'qP | d k r | s't
 t |    qP | d k rt s'| s t
 t |    q'qP |  j  | t t f  |  j | d  qP Wq Wd  S(   NRM   t   [R   t   permsi    (   Rv   R   Rz   R@  RM   R  R   R   RL   R   R   R   R   R   R   R   (   R#   R   R   t   ntt   fnameR
  (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRl   \  s     *c         C   s$   |  j  | t  |  j | d  d  S(   Ni    (   Rv   R   R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRg   r  s    c         C   s   |  j  | t  t rA d | k o- d k n s t |   nG g  t t  D]$ } | j d  rN t t |  ^ qN } |  j | |  d  S(   Nii   t   _PRIORITY_CLASS(	   Rv   R   R	   R   R   R!   t   endswithR   Ry   (   R#   R   R   t   xt
   priorities(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   nicev  s    +$c         C   sM   t  |  s t  x4 | D], } |  j | t t f  |  j | d  q Wd  S(   Ni    (   R   R   Rv   R   R   R   (   R#   R   R   R
  (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   num_ctx_switches  s    c         C   sR   |  j  | t  |  j t |  d  |  j | d d  |  j | d d  d  S(   Ni   i    ii   (   Rv   t   tupleR   R/  R   (   R#   R   R   (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR8     s    c         C   sQ   |  j  | t  x: | j   D], \ } } |  j  | t  |  j  | t  q Wd  S(   N(   Rv   t   dictR   Rz   (   R#   R   R   R   t   v(    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyRW     s    ((   Rn   Ro   Rp   R   R   R   R   R   R   R   R   R   R  RY   R  R  R   Ra   R^   R  R  R   R  Rj   R  R&  R.  Re   R0  R:  R;  R=  R   R\   Rl   Rg   RG  RH  R8   RW   (    (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyR   "  sL   				.															
																				t   __main__(   t   run(1   Rp   R3  RL   R1  R   R   Rs   t
   contextlibR    R!   R   R   R   R   R   R   R   R   R	   R
   R   t   psutil._compatR   t   psutil.testsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   TestCaseR   Rq   R   R   Rn   t   psutil.tests.runnerRM  t   __file__(    (    (    s:   lib/python2.7/site-packages/psutil/tests/test_contracts.pyt   <module>
   sX   {_ q