
Gq]c        	   @   sd  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 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 e j   o e j d  y4 d d l Z d d l Z d d l Z d d l Z Wn& e k
 re j d k r  qn XWd QXe j  j! Z! e	 j" d% k Z# d   Z$ e j% e d  d e j& f d     Y Z' e j% e d  d e j& f d     Y Z( e j% e d  d e j& f d     Y Z) e j% e d  d e j& f d     Y Z* e j% e d  d e j& f d     Y Z+ e j% e d  d e j& f d     Y Z, e j% e d  d e j& f d      Y Z- e j% e d  d! e j& f d"     Y Z. e/ d# k r`d d$ l0 m1 Z1 e1 e2  n  d S(&   s   Windows specific tests.iN(   t   WINDOWS(   t   APPVEYOR(   t   get_test_subprocess(   t   HAS_BATTERY(   t   mock(   t   PY3(   t   reap_children(   t   retry_on_failure(   t   sh(   t   unittestt   ignoret   nti   i    c            s     f d   } | S(   Nc            s   y   |  | |  SWnq t  k
 r } d d l m } | j | k rZ t j d  d    n  | j t j k r t j d  d    n    n Xd  S(   Ni(   t   ACCESS_DENIED_SET(	   t   OSErrort   psutil._pswindowsR   t   errnot   psutilt   AccessDeniedt   Nonet   ESRCHt   NoSuchProcess(   t   selft   argst   kwargst   errR   (   t   fun(    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   wrapper5   s    (    (   R   R   (    (   R   s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   wrap_exceptions4   s    
s   WINDOWS onlyt   TestCpuAPIsc           B   sY   e  Z e j d  e j k d  d    Z d   Z d   Z d   Z	 d   Z
 d   Z RS(   t   NUMBER_OF_PROCESSORSs-   NUMBER_OF_PROCESSORS env var is not availablec         C   s-   t  t j d  } |  j | t j    d  S(   NR   (   t   intt   ost   environt   assertEqualR   t	   cpu_count(   R   t   num_cpus(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt&   test_cpu_count_vs_NUMBER_OF_PROCESSORSJ   s    c         C   s0   t  j   d } t j   } |  j | |  d  S(   Ni   (   t   win32apit   GetSystemInfoR   R"   R!   (   R   t	   sys_valuet   psutil_value(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_count_vs_GetSystemInfoR   s    c         C   s9   t  j   } | j   d } |  j t j   | j  d  S(   Ni    (   t   wmit   WMIt   Win32_ProcessorR!   R   R"   t   NumberOfLogicalProcessors(   R   t   wt   proc(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_count_logical_vs_wmiY   s    c         C   s?   t  j   } | j   d } |  j t j d t  | j  d  S(   Ni    t   logical(   R*   R+   R,   R!   R   R"   t   Falset   NumberOfCores(   R   R.   R/   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_count_phys_vs_wmi^   s    c         C   s,   |  j  t j   t t j d t    d  S(   Nt   percpu(   R!   R   R"   t   lent	   cpu_timest   True(   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_count_vs_cpu_timesc   s    c         C   sX   t  j   } | j   d } |  j | j t j   j  |  j | j t j   j	  d  S(   Ni    (
   R*   R+   R,   R!   t   CurrentClockSpeedR   t   cpu_freqt   currentt   MaxClockSpeedt   max(   R   R.   R/   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_freqg   s    (   t   __name__t
   __module__R	   t   skipIfR   R    R$   R)   R0   R4   R9   R?   (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR   G   s   				t   TestSystemAPIsc           B   s}   e  Z d    Z d   Z e j e d  e   d     Z e   d    Z	 d   Z
 d   Z d   Z d   Z d	   Z RS(
   c         C   s}   t  d  } t j d t  j   } xR | D]J } d | j d d  j   k rU q+ n  | | k r+ |  j d |  q+ q+ Wd  S(   Ns   ipconfig /allt   pernics   pseudo-interfacet    t   -s-   %r nic wasn't found in 'ipconfig /all' output(   R   R   t   net_io_countersR8   t   keyst   replacet   lowert   fail(   R   t   outt   nicst   nic(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_nic_namesq   s    c         C   s<   t  j   j   d } |  j t | j  t j   j  d  S(   Ni    (	   R*   R+   t   Win32_ComputerSystemR!   R   t   TotalPhysicalMemoryR   t   virtual_memoryt   total(   R   R.   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_total_phymem{   s    s   test not relieable on appveyorc         C   sZ   t  j   j   } t g  | D] } | j ^ q  } t t j    } |  j | |  d  S(   N(   R*   R+   t   Win32_Processt   sett	   ProcessIdR   t   pidsR!   (   R   R.   t   xt   wmi_pidst   psutil_pids(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt	   test_pids   s    "c         C   s\  t  j d t  } t j   j   } x1| D])} x | D]} | j j d d  | j k r8 | j	 si Pn  d | j
 k r| Pn  y t  j | j	  } Wn, t k
 r } | j t j k r Pq   n X|  j | j t | j   t | j  } |  j | j |  t | j |  d
 k r5|  j d | j | f  n  Pq8 q8 W|  j d t |   q+ Wd  S(   Nt   alls   \t    t   cdromi
   i   s   psutil=%s, wmi=%ss   can't find partition %si (  i   (   R   t   disk_partitionsR8   R*   R+   t   Win32_LogicalDiskt   deviceRI   t   DeviceIDt
   mountpointt   optst
   disk_usageR   R   t   ENOENTR!   RS   R   t   Sizet	   FreeSpacet   freet   absRK   t   repr(   R   t   ps_partst	   wmi_partst   ps_partt   wmi_partt   usageR   t   wmi_free(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt
   test_disks   s.    		c         C   s   x t  j   D] } d | j k r( q n  t j | j  } t  j | j  } |  j | d | j d d |  j | d | j	 d d |  j
 | j | j	 | j  q Wd  S(   NR_   i    t   deltai   i   i   i   (   R   R`   Re   R%   t   GetDiskFreeSpaceExRd   Rf   t   assertAlmostEqualRj   RS   R!   t   used(   R   t   diskR'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_disk_usage   s    c         C   s~   g  t  j   j d  D]& } | r | j d  r | d ^ q } g  t j d t  D] } | j ^ qU } |  j | |  d  S(   Ns   \ s   A:s   \R]   (	   R%   t   GetLogicalDriveStringst   splitt
   startswithR   R`   R8   Rd   R!   (   R   RY   R'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_disk_partitions   s    &(c         C   s   t  t j    } t j   j   } t    } x. | D]& } | j | j  | j | j  q4 W|  j	 | | @d | | f  d  S(   Ns   no common entries in %s, %s(
   RV   t   cextt   net_if_statsR*   R+   t   Win32_NetworkAdaptert   addt   Namet   NetConnectionIDt
   assertTrue(   R   t   ps_namest   wmi_adapterst	   wmi_namest   wmi_adapter(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_net_if_stats   s    	c         C   s   t  j   j   } | d j j d  d } t j j | d  } t j j t j	    } t
 | | j    } |  j | d  d  S(   Ni    t   .s   %Y%m%d%H%M%Si   (   R*   R+   t   Win32_OperatingSystemt   LastBootUpTimeR{   t   datetimet   strptimet   fromtimestampR   t	   boot_timeRk   t   total_secondst   assertLessEqual(   R   t   wmi_ost   wmi_btime_strt   wmi_btime_dtt	   psutil_dtt   diff(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_boot_time   s    	c      
   C   s   t  j d d d  |  j t j   d  Wd  QXt  j d d d  |  j t j   d  Wd  QXt  j d d d  |  j t j   d  Wd  QXt  j d d d  |  j t j   d  Wd  QXd  S(   Ns    psutil._pswindows.cext.boot_timet   return_valuei   i   i   iM  (   R   t   patchR!   R   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_boot_time_fluctuation   s    (   R@   RA   RO   RT   R	   RB   R   R   R\   Rs   Ry   R}   R   R   R   (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyRC   n   s   	
					
		t   TestSensorsBatteryc           B   sm   e  Z d    Z e j e d  d    Z e j e d  d    Z d   Z d   Z	 d   Z
 d   Z RS(   c         C   s=   t  j   d r& |  j t j    n |  j t j    d  S(   Nt   SystemBatteriesPresent(   R%   t   GetPwrCapabilitiest   assertIsNotNoneR   t   sensors_batteryt   assertIsNone(   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_has_battery   s    s
   no batteryc         C   sK   t  j   } | j d  d } t j   } |  j | j | j d d d  S(   Ns   select * from Win32_Batteryi    Rt   i   (   R*   R+   t   queryR   R   Rv   t   percentt   EstimatedChargeRemaining(   R   R.   t   battery_wmit   battery_psutil(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_percent   s    c         C   sK   t  j   } | j d  d } t j   } |  j | j | j d k  d  S(   Ns   select * from Win32_Batteryi    i   (   R*   R+   R   R   R   R!   t   power_pluggedt   BatteryStatus(   R   R.   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_power_plugged   s
    c         C   sD   t  j d d d ) } |  j t j    | j s: t  Wd  QXd  S(   Ns&   psutil._pswindows.cext.sensors_batteryR   i    i   (   i    i   i    i    (   R   R   R   R   R   t   calledt   AssertionError(   R   t   m(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_emulate_no_battery	  s    c         C   sM   t  j d d d 2 } |  j t j   j t j  | j sC t  Wd  QXd  S(   Ns&   psutil._pswindows.cext.sensors_batteryR   i   i    (   i   i    i    i    (	   R   R   R!   R   R   t   secsleftt   POWER_TIME_UNLIMITEDR   R   (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_emulate_power_connected  s
    
c         C   sM   t  j d d d 2 } |  j t j   j t j  | j sC t  Wd  QXd  S(   Ns&   psutil._pswindows.cext.sensors_batteryR   i    i   (   i    i   i    i    (	   R   R   R!   R   R   R   R   R   R   (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_emulate_power_charging  s
    
c         C   sM   t  j d d d 2 } |  j t j   j t j  | j sC t  Wd  QXd  S(   Ns&   psutil._pswindows.cext.sensors_batteryR   i    i(   i    i    i    i(	   R   R   R!   R   R   R   t   POWER_TIME_UNKNOWNR   R   (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_emulate_secs_left_unknown  s
    
(   R@   RA   R   R	   RB   R   R   R   R   R   R   R   (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR      s   		
			t   TestProcessc           B   s   e  Z e d     Z e d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 e j e j d k d
  d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s   t    j |  _ d  S(   N(   R   t   pid(   t   cls(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt
   setUpClass-  s    c         C   s   t    d  S(   N(   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   tearDownClass1  s    c         C   s)   t  j d  } |  j t  j | j  d  S(   Ni    (   R   t   Processt   assertRaisesR   t   kill(   R   t   p(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_issue_245  s    c         C   s   t  j d  } |  j | j   d  t |  | j   |  j | j   d k  y | j   d  \ } } Wn0 t  j	 k
 r t
 j   d d
 k r   q n X|  j | d	 k  d  S(   Ni   t   Systemg        i   i   t   vistas   win-7t   win7i    (   R   s   win-7R   (   R   R   R!   t   namet   strt   usernameR   t   create_timet   memory_infoR   t   platformt   uname(   R   R   t   rsst   vms(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_special_pid9  s    


c         C   s/   t  j |  j  } |  j t | j t j  d  S(   N(   R   R   R   R   t
   ValueErrort   send_signalt   signalt   SIGINT(   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_send_signalJ  s    c         C   s   x{ t  j   D]m } y | j   } Wn t  j k
 r9 q Xy& |  j t j j | j    |  Wq t  j	 k
 ry q q Xq Wd  S(   N(
   R   t   process_iterR   R   R!   R   t   patht   basenamet   exet   Error(   R   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_exe_and_nameN  s    &c         C   s   t  j t j    } | j   } t j t j t j	 t j    } | j   } |  j
 | | d  t j |  |  j
 | j   |  d  S(   Ni   (   R   R   R   t   getpidt   num_handlesR%   t   OpenProcesst   win32cont   PROCESS_QUERY_INFORMATIONt   FALSER!   t   CloseHandle(   R   R   t   beforet   handlet   after(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_num_handles_increment\  s    c            s    f d   } t  j |  j  } g  } x t t  j  D]     j d  s7   d k r^ q7 q7 y6 | |    | j   } | |    | j   } Wn t  j t  j f k
 r q7 X| | k r7 d   | | f } | j |  q7 q7 W| r
|  j	 d d j
 |   n  d  S(   Nc            s<   t  |    d   } | d  k	 r4 t |  r4 |   n | d  S(   N(   t   getattrR   t   callable(   R   t   attr(   R   (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   callj  s    
t   _t	   terminateR   t   suspendt   resumet   niceR   t   waitt   childrent   as_dictt   memory_info_exs@   failure while processing Process.%s method (before=%s, after=%s)s   
(
   R   R   R   R   R   R   R   R   R   R   (   R   R   R   t   dirR|   R   R   R   t   appendRK   t   join(   R   R   R   t   failurest   num1t   num2RK   (    (   R   s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_handles_leakf  s,     	i   i   s   CTRL_* signals not supportedc         C   s   t  j t   j  } | j t j  | j t j  | j   | j	   |  j
 t  j | j t j  |  j
 t  j | j t j  d  S(   N(   R   R   R   R   R   R   t   CTRL_C_EVENTt   CTRL_BREAK_EVENTR   R   R   R   (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_ctrl_signals  s    

c         C   s,   |  j  t j   j   t j t j   d  S(   N(   R!   R   R   R   R%   t   GetUserNameExR   t   NameSamCompatible(   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_username  s    c         C   sP   t  j d d t j    j   } d j t j   j    } |  j	 | |  d  S(   Ns    +RE   (
   t   ret   subR%   t   GetCommandLinet   stripR   R   R   t   cmdlineR!   (   R   R'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cmdline  s    !c         C   si   t  j t j t j t j    } |  j t  j |  t	 j
 |  } t j   j   } |  j | |  d  S(   N(   R%   R   R   R   R   R   R   t
   addCleanupR   t   win32processt   GetPriorityClassR   R   R   R!   (   R   R   R'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt	   test_nice  s    c         C   s@  t  j t j t j |  j  } |  j t  j |  t j	 |  } t
 j |  j  j   } |  j | d | j  |  j | d | j  |  j | d | j  |  j | d | j  |  j | d | j  |  j | d | j  |  j | d | j  |  j | d | j  |  j | j | j  |  j | j | j  d  S(	   Nt   PeakWorkingSetSizet   WorkingSetSizet   QuotaPeakPagedPoolUsaget   QuotaPagedPoolUsaget   QuotaPeakNonPagedPoolUsaget   QuotaNonPagedPoolUsaget   PagefileUsaget   PeakPagefileUsage(   R%   R   R   R   R   R   R  R   R  t   GetProcessMemoryInfoR   R   R   R!   t	   peak_wsett   wsett   peak_paged_poolt
   paged_poolt   peak_nonpaged_poolt   nonpaged_poolt   pagefilet   peak_pagefileR   R   (   R   R   R'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_memory_info  s0    
c         C   s|   t  j t j t j |  j  } |  j t  j |  t j	 |  j  } | j
   | j   } t j |  } |  j | |  d  S(   N(   R%   R   R   R   R   R   R  R   R   R   R   R   R  t   GetExitCodeProcessR!   (   R   R   R   R(   R'   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt	   test_wait  s    
c         C   s   d   } t  j t j t j |  j  } |  j t  j |  | t j	 |  d  } t
 j |  j  j   } |  j | |  d  S(   Nc         S   s+   g  t  d  D] } d | >|  @r | ^ q S(   Ni@   i   (   t   range(   RY   t   i(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   from_bitmask  s    i    (   R%   R   R   R   R   R   R  R   R  t   GetProcessAffinityMaskR   R   t   cpu_affinityR!   (   R   R  R   R'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_affinity  s    	c         C   s   t  j t j t j t j    } |  j t  j |  t	 j
 |  } t j   j   } |  j | j | d  |  j | j | d  |  j | j | d  |  j | j | d  |  j | j | d  |  j | j | d  d  S(   Nt   ReadOperationCountt   WriteOperationCountt   ReadTransferCountt   WriteTransferCountt   OtherOperationCountt   OtherTransferCount(   R%   R   R   R   R   R   R   R  R   R  t   GetProcessIoCountersR   R   t   io_countersR!   t
   read_countt   write_countt
   read_bytest   write_bytest   other_countt   other_bytes(   R   R   R'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_io_counters  s"    c         C   s   d d  l  } d d  l } d } | j j j | d |  j  } |  j | j j j |  | j j	   } | j j j
 | | j |   | j } t j |  j  j   } |  j | |  d  S(   Nii   i    (   t   ctypest   ctypes.wintypest   windllt   kernel32R   R   R  R   t   wintypest   DWORDt   GetProcessHandleCountt   byreft   valueR   R   R   R!   (   R   R0  R   R   t   hndcntR'   R(   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_num_handles  s    	(   i   i   (   R@   RA   t   classmethodR   R   R   R   R   R   R   R   R	   RB   t   syst   version_infoR   R   R  R  R  R  R   R/  R:  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR   *  s$   					
	$					
		t   TestProcessWMIc           B   sk   e  Z d  Z e d    Z e d    Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(
   s%   Compare Process API results with WMI.c         C   s   t    j |  _ d  S(   N(   R   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR     s    c         C   s   t    d  S(   N(   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR     s    c         C   sN   t  j   j d |  j  d } t j |  j  } |  j | j   | j  d  S(   NRW   i    (	   R*   R+   RU   R   R   R   R!   R   t   Caption(   R   R.   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt	   test_name  s    c         C   sZ   t  j   j d |  j  d } t j |  j  } |  j | j   j   | j	 j    d  S(   NRW   i    (
   R*   R+   RU   R   R   R   R!   R   RJ   t   ExecutablePath(   R   R.   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_exe  s    c         C   sc   t  j   j d |  j  d } t j |  j  } |  j d j | j    | j	 j
 d d   d  S(   NRW   i    RE   t   "R^   (   R*   R+   RU   R   R   R   R!   R   R  t   CommandLineRI   (   R   R.   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR  #  s    c         C   sp   t  j   j d |  j  d } t j |  j  } | j   \ } } } d | | f } |  j | j   |  d  S(   NRW   i    s   %s\%s(	   R*   R+   RU   R   R   R   t   GetOwnerR!   R   (   R   R.   R   t   domainR   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR   )  s
    c         C   sj   t  j d  t j   j d |  j  d } t j |  j  } | j   j	 } |  j
 | t | j   d  S(   Ng?RW   i    (   t   timet   sleepR*   R+   RU   R   R   R   R   R   R!   R   R  (   R   R.   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_memory_rss0  s
    c         C   s   t  j d  t j   j d |  j  d } t j |  j  } | j   j	 } t
 | j  } | | k r | | d k r |  j d | | f  n  d  S(   Ng?RW   i    i   s   wmi=%s, psutil=%s(   RG  RH  R*   R+   RU   R   R   R   R   R   R   t   PageFileUsageRK   (   R   R.   R   R   t	   wmi_usage(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_memory_vms7  s    c         C   s   t  j   j d |  j  d } t j |  j  } t | j j d  d  } t	 j
 d t	 j | j     } |  j | |  d  S(   NRW   i    R   s   %Y%m%d%H%M%S(   R*   R+   RU   R   R   R   R   t   CreationDateR{   RG  t   strftimet	   localtimeR   R!   (   R   R.   R   t   wmic_createt   psutil_create(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_create_timeD  s    	(   R@   RA   t   __doc__R;  R   R   R@  RB  R  R   RI  RL  RR  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR>    s   						t   TestDualProcessImplementationc           B   sk   e  Z d  Z e d    Z e d    Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(
   s{  
    Certain APIs on Windows have 2 internal implementations, one
    based on documented Windows APIs, another one based
    NtQuerySystemInformation() which gets called as fallback in
    case the first fails because of limited permission error.
    Here we test that the two methods return the exact same value,
    see:
    https://github.com/giampaolo/psutil/issues/304
    c         C   s   t    j |  _ d  S(   N(   R   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR   Y  s    c         C   s   t    d  S(   N(   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR   ]  s    c         C   sz   t  j |  j  j   } t j d d t  j t j    8 } |  j	 t  j |  j  j   |  | j
 sp t  Wd  QXd  S(   Ns    psutil._psplatform.cext.proc_exet   side_effect(   R   R   R   R   R   R   R   R   R   R!   R   R   (   R   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR@  d  s
    "c      
   C   s   t  j |  j  j   } t j d d t t j d   } t  j |  j  j   } |  j	 t
 |  t
 |   x` t t
 |   D]L } |  j | | d  |  j | | d  |  j | | | | d d q W| j s t  Wd  QXd  S(   Ns(   psutil._psplatform.cext.proc_memory_infoRU  t   msgi    Rt   i   (   R   R   R   R   R   R   R   R   t   EPERMR!   R6   R  t   assertGreaterEqualRv   R   R   (   R   t   mem_1R   t   mem_2R  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR  k  s    "c         C   sw   t  j |  j  j   } t j d d t t j d  8 } |  j	 t  j |  j  j   |  | j
 sm t  Wd  QXd  S(   Ns(   psutil._psplatform.cext.proc_create_timeRU  RV  (   R   R   R   R   R   R   R   R   RW  R!   R   R   (   R   t   ctimeR   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyRR  w  s
    "c      	   C   s   t  j |  j  j   } t j d d t t j d  f } t  j |  j  j   } | j	 sc t
  |  j | j | j d d |  j | j | j d d Wd  QXd  S(   Ns&   psutil._psplatform.cext.proc_cpu_timesRU  RV  Rt   g{Gz?(   R   R   R   R7   R   R   R   R   RW  R   R   Rv   t   usert   system(   R   t   cpu_times_1R   t   cpu_times_2(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cpu_times~  s    c      
   C   s   t  j |  j  j   } t j d d t t j d  i } t  j |  j  j   } x8 t	 t
 |   D]$ } |  j | | | | d d qg W| j s t  Wd  QXd  S(   Ns(   psutil._psplatform.cext.proc_io_countersRU  RV  Rt   i   (   R   R   R   R(  R   R   R   R   RW  R  R6   Rv   R   R   (   R   t   io_counters_1R   t   io_counters_2R  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR/    s    c         C   sw   t  j |  j  j   } t j d d t t j d  8 } |  j	 t  j |  j  j   |  | j
 sm t  Wd  QXd  S(   Ns(   psutil._psplatform.cext.proc_num_handlesRU  RV  (   R   R   R   R   R   R   R   R   RW  R!   R   R   (   R   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR:    s    c         C   s   d d l  m } x t j   D] } y. t j | d t } t j | d t } Wn@ t k
 r } | |  } t	 | t j
 t j f  s   q q X|  j | |  q Wd  S(   Ni(   t   convert_oserrort   use_peb(   R   Rc  R   RX   R~   t   proc_cmdlineR8   R2   R   t
   isinstanceR   R   R!   (   R   Rc  R   t   at   bR   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR    s    
(   R@   RA   RS  R;  R   R   R@  R  RR  R`  R/  R:  R  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyRT  M  s   
					
	t   RemoteProcessTestCasec           B   s   e  Z d  Z e d    Z e d    Z d d g Z d   Z d   Z	 e d    Z
 d   Z d	   Z d
   Z d   Z d   Z d   Z RS(   s   Certain functions require calling ReadProcessMemory.
    This trivially works when called on the current process.
    Check that this works on other processes, especially when they
    have a different bitness.
    c          C   sz   d }  xm t  j  d  D]\ } t j d | d |  g d t j d t j  } | j   \ } } | t t  k r | Sq Wd  S(   Ns6   import sys; sys.stdout.write(str(sys.maxsize > 2**32))s   C:\Python*\python.exeR   s   -ct   stdoutt   stderr(   t   globt
   subprocesst   Popent   PIPEt   STDOUTt   communicateR   t	   IS_64_BIT(   t   codet   filenameR/   t   outputR   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   find_other_interpreter  s    	c         C   sa   |  j    } | d  k r* t j d   n  t rH t j |  _ | |  _ n | |  _ t j |  _ d  S(   Ns0   could not find interpreter with opposite bitness(	   Rv  R   R	   t   SkipTestRr  R<  t
   executablet   python64t   python32(   R   t   other_python(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR     s    	s   -cs   import sys; sys.stdin.read()c         C   s   t  j j   } t t  j    | d <t |  j g |  j d | d t j	 |  _
 t |  j g |  j d | d t j	 |  _ d  S(   Nt   THINK_OF_A_NUMBERt   envt   stdin(   R   R    t   copyR   R   R   Rz  t	   test_argsRm  Ro  t   proc32Ry  t   proc64(   R   R}  (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   setUp  s    c         C   s%   |  j  j   |  j j   t   d  S(   N(   R  Rq  R  R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   tearDown  s    c         C   s   t    d  S(   N(   R   (   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR     s    c         C   sR   t  j |  j j  } |  j t | j    d  |  j | j   d |  j  d  S(   Ni   i   (   R   R   R  R   R!   R6   R  R  (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cmdline_32  s    c         C   sR   t  j |  j j  } |  j t | j    d  |  j | j   d |  j  d  S(   Ni   i   (   R   R   R  R   R!   R6   R  R  (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cmdline_64  s    c         C   s5   t  j |  j j  } |  j | j   t j    d  S(   N(   R   R   R  R   R!   t   cwdR   t   getcwd(   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cwd_32  s    c         C   s5   t  j |  j j  } |  j | j   t j    d  S(   N(   R   R   R  R   R!   R  R   R  (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_cwd_64  s    c         C   sU   t  j |  j j  } | j   } |  j d |  |  j | d t t j	     d  S(   NR|  (
   R   R   R  R   R    t   assertInt   assertEqualsR   R   R   (   R   R   t   e(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_environ_32  s    c         C   s>   t  j |  j j  } y | j   Wn t  j k
 r9 n Xd  S(   N(   R   R   R  R   R    R   (   R   R   (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_environ_64  s
    (   R@   RA   RS  t   staticmethodRv  R;  R   R  R  R  R   R  R  R  R  R  R  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyRi    s   	
						t   TestServicesc           B   s   e  Z d    Z d   Z RS(   c         C   s  t  d d d d d d d g  } t  d d	 d
 g  } t  d d d d d d d g  } xt j   D]z} | j   } |  j | d t  |  j | d j   d  |  j | d t  |  j | d t  |  j | d |  | d d  k	 rt j
 | d  n  |  j | d t  |  j | d t  |  j | d t  |  j | d |  |  j | d |  |  j | d t  | j   } | d  k	 rt j
 |  } |  j | j    n  t j | j    } |  j | |  qd Wd  S(   Nt   runningt   pausedt   startt   pauset   continuet   stopt   stoppedt	   automatict   manualt   disabledt   start_pendingt   pause_pendingt   continue_pendingt   stop_pendingR   R^   t   display_nameR   t   statusR   t   binpatht
   start_typet   description(   RV   R   t   win_service_iterR   t   assertIsInstanceR   t   assertNotEqualR   R  R   R   R   R   t
   is_runningt   win_service_getR   R!   (   R   t   valid_statusest   valid_start_typest   servt   dataR   R   t   s(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_win_service_iter  sR    c         C   s-  t  j j j } t  j j j } t t  j    j   } |  j t  j	   } t  j
 | d  Wd  QX|  j | j j | d  t  j
 |  } t r d d d | f } n | d f } t |   } t j d d |  |  j t  j	 | j  Wd  QXt j d d |  |  j t  j	 | j  Wd  QXt r=d d d | f } n | d f } t |   } t j d d |  |  j t  j | j  Wd  QXt j d d |  |  j t  j | j  Wd  QX|  j | j   t |   |  j | j   t |   |  j | j   t |   |  j | j   t |   d  S(   Ns   ???i    RV  s/   psutil._psplatform.cext.winservice_query_statusRU  s/   psutil._psplatform.cext.winservice_query_config(   R   t   _psplatformR~   t   ERROR_SERVICE_DOES_NOT_EXISTt   ERROR_ACCESS_DENIEDt   nextR  R   R   R   R  R!   t	   exceptionR   t   WindowsErrorR   R   R  R   R   R  R   R  Rl   (   R   R  R  R   t   cmt   serviceR   t   exc(    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   test_win_service_get=  s>    



(   R@   RA   R  R  (    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyR  
  s   	0t   __main__(   t   runI       (3   RS  R   R   Rl  R   R   R   R   Rm  R<  RG  t   warningsR   R    t   psutil.testsR   R   R   R   R   R   R   R   R	   t   catch_warningst   simplefilterR%   R   R  R*   t   ImportErrorR   R  R~   t   maxsizeRr  R   RB   t   TestCaseR   RC   R   R   R>  RT  Ri  R  R@   t   psutil.tests.runnerR  t   __file__(    (    (    s8   lib/python2.7/site-packages/psutil/tests/test_windows.pyt   <module>   sl   	&~<A\_^