403 Forbidden


Disable Functions:
Path : /lib64/python2.7/site-packages/psutil/tests/
File Upload :
Command :
Current File : //lib64/python2.7/site-packages/psutil/tests/test_linux.pyc

�
S��]c@ s�dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ddlm,Z,ej-j.ej-j/e0��Z1dZ2dZ3dZ4er�d Z5nejd!�Z6d"�Z7d#�Z8d$�Z9d%�Z:d&�Z;d'�Z<ej=d(��Z>ej=d)��Z?e+j@ed*�d+e+jAfd,��Y�ZBe+j@ed*�d-e+jAfd.��Y�ZCe+j@ed*�d/e+jAfd0��Y�ZDe+j@ed*�d1e+jAfd2��Y�ZEe+j@ed*�d3e+jAfd4��Y�ZFe+j@ed*�d5e+jAfd6��Y�ZGe+j@ed*�d7e+jAfd8��Y�ZHe+j@ed*�d9e+jAfd:��Y�ZIe+j@ed*�d;e+jAfd<��Y�ZJe+j@ed*�d=e+jAfd>��Y�ZKe+j@ed*�d?e+jAfd@��Y�ZLe+j@ed*�dAe+jAfdB��Y�ZMe+j@ed*�dCe+jAfdD��Y�ZNe+j@ed*�dEe+jAfdF��Y�ZOe+j@ed*�dGe+jAfdH��Y�ZPe+j@ed*�e+j@edI�dJe+jAfdK��Y��ZQe+j@ed*�dLe+jAfdM��Y�ZRe+j@ed*�dNe+jAfdO��Y�ZSe+j@ed*�dPe+jAfdQ��Y�ZTe+j@ed*�dRe+jAfdS��Y�ZUe+j@ed*�dTe+jAfdU��Y�ZVeWdVkr�ddWlXmYZYeYe0�ndS(XsLinux specific tests.i����(tdivisionN(tLINUX(t
basestring(tFileNotFoundError(tPY3(tu(t
call_until(tHAS_BATTERY(tHAS_CPU_FREQ(tHAS_GETLOADAVG(t
HAS_RLIMIT(tMEMORY_TOLERANCE(tmock(tPYPY(tpyrun(t
reap_children(t
reload_module(tretry_on_failure(tsafe_rmpath(tsh(tskip_on_not_implemented(tTESTFN(t
ThreadTask(tTRAVIS(tunittest(twhichi�i�i'�is/sys/class/hwmon/hwmon*cC s�ddl}|d }tr.t|d�}ntjtjtj�}tj|��:tj|j	|j
�ttj
d|��dd!�SWdQXdS(Ni����itasciit256sii(tfcntlRtbytestsockettAF_INETt
SOCK_DGRAMt
contextlibtclosingt	inet_ntoatioctltfilenotSIOCGIFADDRtstructtpack(tifnameRts((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytget_ipv4_addressBs
c
C s�ddl}|d }tr.t|d�}ntjtjtj�}tj|���|j|j	�t
tjd|��}tr�d�}nddl
}|j}djg|dd!D]}d	||�^q��d SWdQXdS(
Ni����iRRcS s|S(N((tx((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytordYstiis%02x:(RRRRRR R!R"R$R%t
SIOCGIFHWADDRR'R(t__builtin__R-tjoin(R)RR*tinfoR-R0tchar((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytget_mac_addressOs
!	cC s�tddidd6�}|jd�}xi|D]a}|jd�r/|j�\}}}}tjdd�}|t|�t|�t|��Sq/Wtd	dj|���d
S(sQParse 'free' cmd and return swap memory's s total, used and free
    values.
    sfree -btenvsC.UTF-8tLANGs
tSwaptfreestotal used frees&can't find 'Swap' in 'free' output:
%sN(Rtsplitt
startswithtcollectionst
namedtupletintt
ValueErrorR1(touttlinestlinet_ttotaltusedR8tnt((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	free_swapas
&c	C s�tddidd6�}|jd�}x}|D]u}|jd�r/g|j�dd!D]}t|�^qX\}}}}tjd	d
�}||||||�Sq/Wtddj|���dS(
sSParse 'free' cmd and return physical memory's total, used
    and free values.
    sfree -bR5sC.UTF-8R6s
tMemiiR8stotal used free shared outputs%can't find 'Mem' in 'free' output:
%sN(RR9R:R=R;R<R>R1(	R?R@RAR,RCRDR8tsharedRE((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytfree_physmemps
8cC svtddidd6�}xF|jd�D]5}|j�}||kr)t|jd�d�Sq)Wtd|��dS(	Ns	vmstat -sR5sC.UTF-8R6s
t is can't find %r in 'vmstat' output(RR9tstripR=R>(tstatR?RA((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytvmstat�scC s8td�j�}ttt|j�djd���S(Nsfree -Vi����t.(RRKttupletmapR=R9(R?((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytget_free_version_info�sc# sZ���fd�}t�tr'dnd}tj|dtd|��}|VWdQXdS(sMock open() builtin and forces it to return a certain `content`
    on read() if the path being opened matches `for_path`.
    c sb|�krNtr>t�t�r.tj��Stj��Sq^tj��Sn�|||�SdS(N(Rt
isinstanceRtiotStringIOtBytesIO(tnametargstkwargs(tcontenttfor_patht	orig_open(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	open_mock�s
s
builtins.opens__builtin__.opentcreatetside_effectN(topenRRtpatchtTrue(RZRYR\tpatch_pointtm((RYRZR[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytmock_open_content�s
c# sZ���fd�}t�tr'dnd}tj|dtd|��}|VWdQXdS(sZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    c s)|�kr��n�|||�SdS(N((RVRWRX(texcRZR[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s	s
builtins.opens__builtin__.openR]R^N(R_RRR`Ra(RZReR\RbRc((ReRZR[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytmock_open_exception�s
s
LINUX onlytTestSystemVirtualMemorycB seZd�Zejeo'e�dkd�e�d���Zeje	d�e�d���Z
e�d��Zeje	d�e�d���Zeje	d�e�d	���Z
e�d
��Ze�d��Zd�Zd
�Zd�Zd�Zd�Zd�ZRS(cC s3td�d}tj�j}|j||�dS(Nstotal memoryi(RMtpsutiltvirtual_memoryRCtassertAlmostEqual(tselftvmstat_valuetpsutil_value((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt
test_total�siisold free versionc
C sQt�}|j}tj�j}|j||dtdd|||jf�dS(Ntdeltatmsgs	%s %s 
%s(RIRDRhRiRjRtoutput(RkR8t
free_valueRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	test_used�s		sunreliable on TRAVIScC s9td�d}tj�j}|j||dt�dS(Nsfree memoryiRo(RMRhRiR8RjR(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	test_free�scC s9td�d}tj�j}|j||dt�dS(Ns
buffer memoryiRo(RMRhRitbuffersRjR(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_buffers�scC s9td�d}tj�j}|j||dt�dS(Ns
active memoryiRo(RMRhRitactiveRjR(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_active�scC s9td�d}tj�j}|j||dt�dS(Nsinactive memoryiRo(RMRhRitinactiveRjR(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt
test_inactive�sc
C sot�}|j}|dkr0tjd��ntj�j}|j||dtdd|||jf�dS(Nis%free does not support 'shared' columnRoRps	%s %s 
%s(	RIRHRtSkipTestRhRiRjRRq(RkR8RrRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_shared�s		c
C s�td�}|jd�}d|dkr=tjd��nRt|dj�d�}tj�j}|j||dt	d	d
|||f�dS(Nsfree -bs
t	availableis(free does not support 'available' columnii����RoRps	%s %s 
%s(
RR9RR{R=RhRiR}RjR(RkR?R@RrRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_availablescC s�tdtjd�j����}tjdt���}tjd�tj	�}|j
s^t�|jt
|�d�|d}|jjd�s�t�|jdt|j��|jd	t|j��|jd
t|j��|jdt|j��|jdt|j��|jd
t|j��|jdt|j��|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�WdQXWdQXdS(Ns
/proc/meminfosp                Active(anon):    6145416 kB
                Active(file):    2950064 kB
                Inactive(anon):   574764 kB
                Inactive(file):  1567648 kB
                MemAvailable:         -1 kB
                MemFree:         2057400 kB
                MemTotal:       16325648 kB
                SReclaimable:     346648 kB
                trecordtalwaysiispsutil/_pslinux.pys#memory stats couldn't be determinedtcachedRHRwRyRuR}(Rdttextwraptdedenttencodetwarningstcatch_warningsRatsimplefilterRhRitcalledtAssertionErrortassertEqualtlentfilenametendswithtassertIntstrtmessageR�RwRyRHRuR}tslab(RkRctwstrettw((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_warnings_on_missess4	

c
	C s�ddlm}ddlm}i}|d��@}x6|D].}|j�}t|d�d||d<q<WWdQX||�}d|kr�|d}t||�|d	}	|j|	d
�ndS(Ni����(tcalculate_avail_vmem(topen_binarys
/proc/meminfoiiis
MemAvailable:idi
(tpsutil._pslinuxR�R�R9R=tabst
assertLess(
RkR�R�tmemstfRAtfieldstatbtdiff_percent((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_avail_old_percent<s
&
c	C s�tdtjd�j���s}tjdt��}tj�}WdQX|j	sWt
�|j|jd�|d}|j
dt|j��WdQXdS(	Ns
/proc/meminfosL                Active:          9444728 kB
                Active(anon):    6145416 kB
                Active(file):    2950064 kB
                Buffers:          287952 kB
                Cached:          4818144 kB
                Inactive(file):  1578132 kB
                Inactive(anon):   574764 kB
                Inactive(file):  1567648 kB
                MemAvailable:    6574984 kB
                MemFree:         2057400 kB
                MemTotal:       16325648 kB
                Shmem:            577588 kB
                SReclaimable:     346648 kB
                Ri�Sdiis,inactive memory stats couldn't be determinedI N�(RdR�R�R�R�R�RaRhRiR�R�R�R}R�R�R�(RkRcR�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt test_avail_old_comes_from_kernelNs
c
C s�tdtjd�j���w}tjdt��}tj�}WdQX|j	sWt
�|j|jd	d
�|d}|j
dt|j��WdQXdS(Ns
/proc/meminfos�                    Active:          9444728 kB
                    Active(anon):    6145416 kB
                    Buffers:          287952 kB
                    Cached:          4818144 kB
                    Inactive(file):  1578132 kB
                    Inactive(anon):   574764 kB
                    MemFree:         2057400 kB
                    MemTotal:       16325648 kB
                    Shmem:            577588 kB
                    Ri�dii�Iis,inactive memory stats couldn't be determinedi�}I�&(RdR�R�R�R�R�RaRhRiR�R�R�R}R�R�R�(RkRcR�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_avail_old_missing_fieldsjs

cC s�tdtjd�j����tdttjd���ftj	dt
��M}tj�}|j
|jdd�|d	}|jd
t|j��WdQXWdQXWdQXdS(
Ns
/proc/meminfosT                    Active:          9444728 kB
                    Active(anon):    6145416 kB
                    Active(file):    2950064 kB
                    Buffers:          287952 kB
                    Cached:          4818144 kB
                    Inactive(file):  1578132 kB
                    Inactive(anon):   574764 kB
                    Inactive(file):  1567648 kB
                    MemFree:         2057400 kB
                    MemTotal:       16325648 kB
                    Shmem:            577588 kB
                    SReclaimable:     346648 kB
                    s/proc/zoneinfosno such file or directoryRi�dii�Iis,inactive memory stats couldn't be determinedi�}I�&(RdR�R�R�RftIOErrorterrnotENOENTR�R�RaRhRiR�R}R�R�R�(RkR�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_avail_old_missing_zoneinfo�s

c s�fd�}t�tr!dnd}tj|dtd|���}tj�}|js`t�|j	|j
d�|j	|jd�|j	|jd�|j	|j
d�|j	|jd�|j	|jd�|j	|jd�|j	|jd�|j	|jd�WdQXdS(Nc s<|dkr(tjtjd�j��S�|||�SdS(Ns
/proc/meminfos=	                    MemTotal:              100 kB
                    MemFree:               2 kB
                    MemAvailable:          3 kB
                    Buffers:               4 kB
                    Cached:                5 kB
                    SwapCached:            6 kB
                    Active:                7 kB
                    Inactive:              8 kB
                    Active(anon):          9 kB
                    Inactive(anon):        10 kB
                    Active(file):          11 kB
                    Inactive(file):        12 kB
                    Unevictable:           13 kB
                    Mlocked:               14 kB
                    SwapTotal:             15 kB
                    SwapFree:              16 kB
                    Dirty:                 17 kB
                    Writeback:             18 kB
                    AnonPages:             19 kB
                    Mapped:                20 kB
                    Shmem:                 21 kB
                    Slab:                  22 kB
                    SReclaimable:          23 kB
                    SUnreclaim:            24 kB
                    KernelStack:           25 kB
                    PageTables:            26 kB
                    NFS_Unstable:          27 kB
                    Bounce:                28 kB
                    WritebackTmp:          29 kB
                    CommitLimit:           30 kB
                    Committed_AS:          31 kB
                    VmallocTotal:          32 kB
                    VmallocUsed:           33 kB
                    VmallocChunk:          34 kB
                    HardwareCorrupted:     35 kB
                    AnonHugePages:         36 kB
                    ShmemHugePages:        37 kB
                    ShmemPmdMapped:        38 kB
                    CmaTotal:              39 kB
                    CmaFree:               40 kB
                    HugePages_Total:       41 kB
                    HugePages_Free:        42 kB
                    HugePages_Rsvd:        43 kB
                    HugePages_Surp:        44 kB
                    Hugepagesize:          45 kB
                    DirectMap46k:          46 kB
                    DirectMap47M:          47 kB
                    DirectMap48G:          48 kB
                    (RSRUR�R�R�(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s1s
builtins.opens__builtin__.openR]R^idiiiiiiiiiii�iiiipiTii iXi(R_RRR`RaRhRiR�R�R�RCR8RuR�RHRwRyR�R}(RkR\RbRctmem((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_virtual_memory_mocked�s7(iii(t__name__t
__module__RnRtskipIfRRQRRsRRtRvRxRzR|R~R�R�R�R�R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRg�s&			'				tTestSystemSwapMemorycB sheZed��Zd�Ze�d��Ze�d��Zd�Zd�Z	d�Z
d�ZRS(cC s7td��}|j�}WdQXd|ko6d|kS(s3Return True if /proc/meminfo provides swap metrics.s
/proc/meminfoNs
SwapTotal:s	SwapFree:(R_tread(R�tdata((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytmeminfo_has_swap_info�scC s1t�j}tj�j}|j||dt�S(NRo(RFRCRhtswap_memoryRjR(RkRrRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRn�scC s1t�j}tj�j}|j||dt�S(NRo(RFRDRhR�RjR(RkRrRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRsscC s1t�j}tj�j}|j||dt�S(NRo(RFR8RhR�RjR(RkRrRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRtscC s�tjddt���}tjdt���}tjd�tj�}|jsUt	�|j
t|�d�|d}|jj
d�s�t	�|jdt|j��|j
|jd�|j
|jd�WdQXWdQXdS(	Nspsutil._common.openR]RR�iispsutil/_pslinux.pys9'sin' and 'sout' swap memory stats couldn't be determined(RR`RaR�R�R�RhR�R�R�R�R�R�R�R�R�R�tsintsout(RkRcR�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_missing_sin_souts

cC s�tdttjd����}tjdt���}tjd�tj	�}|j
s[t�|jt
|�d�|d}|jjd�s�t�|jdt|j��|j|jd�|j|jd�WdQXWdQXdS(	Ns/proc/vmstatsno such file or directoryRR�iispsutil/_pslinux.pysK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0(RfR�R�R�R�R�RaR�RhR�R�R�R�R�R�R�R�R�R�R�R�(RkRcR�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_no_vmstat_mockeds

cC s�|j�stjd�Stjd��}tj�}WdQX|jsMt�ddl	j
}|j�\}}}}}}}||9}||9}|j|j
|�|j|j|dt�dS(Ns!/proc/meminfo has no swap metricss"psutil._pslinux.cext.linux_sysinfoi����Ro(R�RtskipRR`RhR�R�R�tpsutil._psutil_linuxt
_psutil_linuxt
linux_sysinfoR�RCRjR8R(RkRctswaptcextRBRCR8tunit_multiplier((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_meminfo_against_sysinfo1s
!

cC s5tdd�� }tj�|js+t�WdQXdS(Ns
/proc/meminfoR.(RdRhR�R�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt#test_emulate_meminfo_has_no_metricsAs
(R�R�tstaticmethodR�RnRRsRtR�R�R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��s				tTestSystemCPUTimescB s#eZejed�d��ZRS(sunknown failure on traviscC s�tj�j}tjdtj�d�d}ttt	|j
d���}|dkrl|jd|�n|jd|�|d
kr�|jd	|�n|jd	|�|dkr�|jd|�n|jd|�dS(Ns
\d+\.\d+\.\d+iiRNiitstealitguestit
guest_nice(iii(iii(iii(
Rht	cpu_timest_fieldstretfindalltostunameRORPR=R9R�tassertNotIn(RkR�t
kernel_vertkernel_ver_info((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_fieldsRs (R�R�RR�RR�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR�OstTestSystemCPUCountLogicalcB s�eZejejjd�d�d��Zejejjd�d�d��Zeje	d�d�d��Z
eje	d	�d
�d��Zd�ZRS(
s/sys/devices/system/cpu/onlines-/sys/devices/system/cpu/online does not existcC sstd��}|j�j�}WdQXdt|�krot|jd�d�d}|jtj�|�ndS(Ns/sys/devices/system/cpu/onlinet-i(	R_R�RKR�R=R9R�Rht	cpu_count(RkR�tvalue((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_against_sysdev_cpu_onlinehs
s/sys/devices/system/cpus&/sys/devices/system/cpu does not existcC s`tjd�}tg|D]$}tjd|�dk	r|^q�}|jtj�|�dS(Ns/sys/devices/system/cpuscpu\d+$(	R�tlistdirR�R�tsearchtNoneR�RhR�(RktlsR,tcount((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_against_sysdev_cpu_numqs7tnprocsnproc utility not availablecC s2ttd��}|jtjdt�|�dS(Nsnproc --alltlogical(R=RR�RhR�Ra(Rktnum((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_against_nprocxstlscpuslscpu utility not availablecC sctd�}tg|jd�D]}|jd�s|^q�}|jtjdt�|�dS(Nslscpu -ps
t#R�(RR�R9R:R�RhR�Ra(RkR?R,R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_against_lscpu}s7cC soddl}|jj�}tjddt��9}|j|jj�|�|js[t�tjddt	��K}|j
|jj��|j|jd�|j|jddd�WdQXt
d	d
��}|j�}WdQXtj|�}tjdd|dt	�� }|j|jj�|�WdQXtd	d��'}|j|jj�|�|jWdQXWdQXdS(
Ni����spsutil._pslinux.os.sysconfR^spsutil._common.openR]iis
/proc/stats
/proc/cpuinfotrbtreturn_valueR.(R�t_pslinuxtcpu_count_logicalRR`R>R�R�R�RatassertIsNonet
call_countt	call_argsR_R�RSRURd(RkRhtoriginalRcR�tcpuinfo_datat	fake_file((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_fallbacks�s&!(
R�R�RR�R�tpathtexistsR�R�RR�R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR�es""tTestSystemCPUCountPhysicalcB s3eZejed�d�d��Zd�ZRS(R�slscpu utility not availablecC s�td�}t�}xI|jd�D]8}|jd�s%|jd�}|j|d�q%q%W|jtjdt�t	|��dS(Nslscpu -ps
R�t,iR�(
RtsetR9R:taddR�RhR�tFalseR�(RkR?tcore_idsRAR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��s	c
C sttjddg��;}tjddt��}|jtjj��WdQXWdQX|jsat�|jspt�dS(Ns	glob.globR�spsutil._common.openR](	RR`RaR�RhR�tcpu_count_physicalR�R�(Rktm1tm2((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_none�s
"(R�R�RR�RR�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��s"
tTestSystemCPUFrequencycB s�eZejed�ejed�d���Zejed�d��Zejed�d��Zejed�d��Z	ejed�ejed�d���Z
RS(sfails on Traviss
not supportedc sS�fd�}tjj�tjdd|dt��tj�sIt�WdQXdS(Nc s!|jd�rtS�|�SdS(Ns&/sys/devices/system/cpu/cpufreq/policy(R:R�(R�(torig_exists(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytpath_exists_mock�ssos.path.existsR^R](	R�R�R�RR`RaRhtcpu_freqR�(RkR�((R�s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_use_second_file�s

c s���fd�}g�tjj�z�tjdd|���ttj�tj�}|sbt	��snt	�|j
|jd�|j
|jd�x@tjdt
�D],}|j
|jd�|j
|jd�q�WWdQXWdttj�tt�XdS(Nc s=|jd�rtS|dkr/�jd�n�|�SdS(Ns/sys/devices/system/cpu/s
/proc/cpuinfo(R:R�tappendR�(R�(tflagstos_path_exists(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��s
sos.path.existsR^gtpercpu(R�R�R�RR`RRhR�R�R�R�tmaxtminRa(RkR�R�tfreq((R�R�s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_use_cpuinfo�s 
!
c s��fd�}t�tr!dnd}tj|d|���tjddt��ntj�}|j|jd�|j	dkr�|j|j	d	�n|j
dkr�|j|j
d
�nWdQXWdQXdS(Nc s�|jd�r+|jd�r+tjd�S|jd�rV|jd�rVtjd�S|jd�r�|jd�r�tjd�S|dkr�tjd	�S�|||�SdS(
Ns/scaling_cur_freqs&/sys/devices/system/cpu/cpufreq/policyt500000s/scaling_min_freqt600000s/scaling_max_freqt700000s
/proc/cpuinfoscpu MHz		: 500(R�R:RSRU(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s



s
builtins.opens__builtin__.openR^sos.path.existsR�g@@gg��@g�@(R_RRR`RaRhR�R�tcurrentRR(RkR\RbR((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_data�sc ss�fd�}t�tr!dnd}tj|d|��1tjddt��tjddd���tjd	t�}|j|d
jd�|d
j	dkr�|j|d
j	d
�n|d
j
dkr�|j|d
j
d�n|j|djd�|dj	dkr0|j|dj	d�n|dj
dkr]|j|dj
d�nWdQXWdQXWdQXdS(Nc
 s5|}|jd�r1|jd�r1tjd�S|jd�r\|jd�r\tjd�S|jd�r�|jd�r�tjd�S|jd�r�|jd�r�tjd	�S|jd�r�|jd�r�tjd
�S|jd�r|jd�rtjd�S|dkr!tjd
�S�|||�SdS(Ns/scaling_cur_freqs'/sys/devices/system/cpu/cpufreq/policy0t100000s/scaling_min_freqt200000s/scaling_max_freqt300000s'/sys/devices/system/cpu/cpufreq/policy1t400000RRs
/proc/cpuinfoscpu MHz		: 100
cpu MHz		: 400(R�R:RSRU(RVRWRXtn(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\
s,






s
builtins.opens__builtin__.openR^sos.path.existsR�s!psutil._pslinux.cpu_count_logicaliR�igY@ggi@g�r@igy@g@@g��@(R_RRR`RaRhR�R�RRR(RkR\RbR((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_multi_cpus$
c s��fd�}t�tr!dnd}tj|d|��\tjddt��@tjddd��$tj�}|j|jd	�WdQXWdQXWdQXdS(
Nc sm|jd�r$ttjd��nE|jd�r@tjd�S|dkrYtjd�S�|||�SdS(Ns/scaling_cur_freqR.s/cpuinfo_cur_freqR
s
/proc/cpuinfoscpu MHz		: 200(R�R�R�R�RSRU(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\:s

s
builtins.opens__builtin__.openR^sos.path.existsR�s!psutil._pslinux.cpu_count_logicalii�(	R_RRR`RaRhR�R�R(RkR\RbR((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt%test_emulate_no_scaling_cur_freq_file6s

(R�R�RR�RRR�RRRR(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��s.tTestSystemCPUStatscB s>eZejed�d��Zejed�d��ZRS(sfails on TraviscC s5td�}tj�j}|j||dd�dS(Nscontext switchesRoi�(RMRht	cpu_statstctx_switchesRj(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_ctx_switchesQscC s5td�}tj�j}|j||dd�dS(Nt
interruptsRoi�(RMRhRRRj(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_interruptsWs(R�R�RR�RRR(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRNstTestLoadAvgcB s$eZejed�d��ZRS(s
not supportedcC s�tj�}tdd��}|j�j�}WdQX|jt|d�|ddd�|jt|d�|ddd�|jt|d�|ddd�dS(Ns
/proc/loadavgtriRoii(Rht
getloadavgR_R�R9Rjtfloat(RkRmR�t
proc_value((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_getloadavgas$$(R�R�RR�R	R(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR^stTestSystemNetIfAddrscB seZd�ZRS(cC s�x�tj�j�D]y\}}xj|D]b}|jtjkrZ|j|jt|��q&|jtj	kr&|j|jt
|��q&q&WqWdS(N(Rhtnet_if_addrstitemstfamilytAF_LINKR�taddressR4RRR+(RkRVtaddrstaddr((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_ipsts
(R�R�R$(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRqstTestSystemNetIfStatscB seZd�ZRS(cC sxxqtj�j�D]]\}}ytd|�}Wntk
rFqX|j|jttj	d|�d��qWdS(Nsifconfig %ss(?i)MTU[: ](\d+)i(
Rhtnet_if_statsRRtRuntimeErrorR�tmtuR=R�R�(RkRVtstatsR?((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_against_ifconfig�s
(R�R�R*(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR%�stTestSystemNetIOCounterscB seZe�d��ZRS(c sW�fd�}tjdtdt�}x)|j�D]\�}y|��}Wntk
rfq4nX|j|j|ddd�|j|j|ddd�|j|j	|d	dd�|j|j
|d
dd�|j|j|ddd�|j|j|d
dd�|j|j
|ddd�|j|j|ddd�q4WdS(Nc si}td��}ttjd|�d�|d<ttjd|�d�|d<ttjd|�d�|d<ttjd|�d	�|d
<ttjd|�d�|d<ttjd|�d	�|d
<ttjd|�d�|d<ttjd|�d�|d<|S(Nsifconfig %ssRX packets[: ](\d+)itpackets_recvsTX packets[: ](\d+)tpackets_sentserrors[: ](\d+)terriniterroutsdropped[: ](\d+)tdropintdropouts#RX (?:packets \d+ +)?bytes[: ](\d+)t
bytes_recvs#TX (?:packets \d+ +)?bytes[: ](\d+)t
bytes_sent(RR=R�R�(tnicR�R?(RV(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytifconfig�s    tpernictnowrapR2RoiiR3R,R-R.i
R/R0R1ii(Rhtnet_io_countersRaR�RR'RjR2R3R,R-R.R/R0R1(RkR5tnioR)tifconfig_ret((RVs=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR*�s.
(R�R�RR*(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR+�stTestSystemNetConnectionscB sDeZejdde�ejdde�d���Zd�ZRS(s psutil._pslinux.socket.inet_ntopR^spsutil._pslinux.supports_ipv6R�cC sdy9tjtjtj�}|j|j�|jd�Wntjk
rOnXtjdd�dS(Ns::1itkindtinet6(s::1i(	RtAF_INET6tSOCK_STREAMt
addCleanuptclosetbindterrorRhtnet_connections(Rkt
supports_ipv6t	inet_ntopR*((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_ipv6_unsupported�scC sDtdtjd���&}tjdd�|js:t�WdQXdS(Ns/proc/net/unixs.                0: 00000003 000 000 0001 03 462170 @/tmp/dbus-Qw2hMPIU3n
                0: 00000003 000 000 0001 03 35010 @/tmp/dbus-tB2X8h69BQ
                0: 00000003 000 000 0001 03 34424 @/tmp/dbus-cHy80Y8O
                000000000000000000000000000000000000000000000000000000
                R<tunix(RdR�R�RhRDR�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_unix�s(R�R�RR`R>R�RGRI(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR;�s!tTestSystemDiskPartitionscB sHeZejeed�d�e�d���Zd�Zd�Z	RS(tstatvfssos.statvfs() not availablecC s�d�}x�tjdt�D]�}tj|j�}||j�\}}}}|j|j|�t|j|�dkr�|j	d|j|f�nt|j
|�d	kr|j	d|j
|f�qqWdS(
NcS s�td|�j�}|jd�}|jd�|jd�}|j�d \}}}}|dkrrd}nt|�t|�t|�}}}||||fS(Nsdf -P -B 1 "%s"s
iitnoneR.(RRKR9tpopR=(R�R?R@RAtdevRCRDR8((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytdf�s
	&talli
ispsutil=%s, df=%si(i�i(i�(Rhtdisk_partitionsR�t
disk_usaget
mountpointR�RCR�R8tfailRD(RkROtparttusageRNRCRDR8((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_against_df�s	cC stdd��}|j�}WdQXd|krjx�tj�D]}|jdkr=Pq=q=W|jd�n�tjtd��}t	j
dd|dt��u}t	j
d	ddg��T}tj�}|js�t
�|js�t
�|s�t
�|j|d
jd�WdQXWdQXdS(Ns/proc/filesystemsRtzfsscouldn't find any ZFS partitions
nodev	zfs
spsutil._common.openR�R]s$psutil._pslinux.cext.disk_partitionss	/dev/sdb3t/trwi(s	/dev/sdb3RYRXRZ(R_R�RhRQtfstypeRTRSRTRRR`RaR�R�R�(RkR�R�RUR�R�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_zfs_fs
s$c	C sbzQtjddd��6}|jt��tj�WdQX|jsJt�WdQXWddt_XdS(Nsos.path.realpathR�s
/non/existents/proc(	RR`tassertRaisesRRhRQR�R�tPROCFS_PATH(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_realpath_fail"s(
R�R�RR�thasattrR�RRWR\R_(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRJ�s	tTestSystemDiskIoCounterscB sGeZd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cC s�tdd���tjddt���tjdt�}|j|jd�|j|j	d�|j|j
dt�|j|jd	�|j|j
d
�|j|jd�|j|jdt�|j|jd
�|j|jd�WdQXWdQXdS(Ns/proc/diskstatss+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12s!psutil._pslinux.is_storage_deviceR�R7iiiiiiiii
(RdRR`RaRhtdisk_io_countersR�R�t
read_counttread_merged_countt
read_bytestSECTOR_SIZEt	read_timetwrite_counttwrite_merged_counttwrite_bytest
write_timet	busy_time(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_kernel_2_41s

cC s�tdd���tjddt���tjdt�}|j|jd�|j|j	d�|j|j
dt�|j|jd	�|j|j
d
�|j|jd�|j|jdt�|j|jd
�|j|jd�WdQXWdQXdS(Ns/proc/diskstatss'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11s!psutil._pslinux.is_storage_deviceR�R7iiiiiiiii
(RdRR`RaRhRbR�R�RcRdReRfRgRhRiRjRkRl(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_kernel_2_6_fullDs

cC s�tdd���tjddt���tjdt�}|j|jd�|j|j	dt
�|j|jd�|j|jd	t
�|j|j
d
�|j|jd
�|j|jd
�|j|jd
�|j|jd
�WdQXWdQXdS(Ns/proc/diskstatss   3    1   hda 1 2 3 4s!psutil._pslinux.is_storage_deviceR�R7iiiii(RdRR`RaRhRbR�R�RcReRfRhRjRdRgRiRkRl(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_kernel_2_6_limitedXs

c
C s�tdtjd����tjddt���tjdtdt�}|j	t
|�d�|j	|djd	�|j	|d
jd	�|j	|djd�|j	|d
jd�WdQXWdQXdS(Ns/proc/diskstatss�                    3    0   nvme0n1 1 2 3 4 5 6 7 8 9 10 11
                    3    0   nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
                    s!psutil._pslinux.is_storage_deviceR�tperdiskR7itnvme0n1it	nvme0n1p1i(
RdR�R�RR`R�RhRbRaR�R�RcRh(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_include_partitionsos

cC s�tdtjd���Ftjddt��*tjdtdt�}|j|�WdQXWdQXd�}tdtjd���etjddt	d	|��Ctjdtdt�}|j
|jd
�|j
|jd�WdQXWdQXdS(Ns/proc/diskstatss�                    3    0   nvme0n1 1 2 3 4 5 6 7 8 9 10 11
                    3    0   nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
                    s!psutil._pslinux.is_storage_deviceR�RpR7cS s
|dkS(NRq((RV((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytis_storage_device�sR]R^ii(
RdR�R�RR`R�RhRbR�RaR�RcRh(RkR�Rt((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_exclude_partitions�s$

	
cC sod�}tjdt�}tjddtd|��tjdt�}WdQX|jt|�t|��dS(NcS s|dkrtStS(Ns/proc/diskstats(R�Ra(R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��sRpspsutil._pslinux.os.path.existsR]R^(RhRbRaRR`R�R�(RkR�twprocfstwsysfs((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_use_sysfs�s	cC sBd�}tjddtd|��|jttj�WdQXdS(NcS stS(N(R�(R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR��sspsutil._pslinux.os.path.existsR]R^(RR`RaR]tNotImplementedErrorRhRb(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_not_impl�s	(	R�R�RmRnRoRsRuRxRz(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRa.s						tTestMisccB sPeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	RS(cC s8td�}tj�}|jt|�t|��dS(Ns	boot time(RMRht	boot_timeR�R=(RkRlRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_boot_time�sc
 s�tj�}ttjj|d�d��.}|jd�|jd�|jd�WdQXz6t��fd�}tr~dnd}tj	|d	|���t
t�|jt
tj�|jt
tjd
t�|jt
tj�|jt
tjd
t�|jt
tj�|jt
tjd
t�|t_|jtj�d�|jttj��d�tjd
t�}|jt|�d�tjd
t�}|jttt|��d�ttjj|d�d��.}|jd�|jd
�|jd�WdQX|jtj�d�|jttjd
t��d�|jttj��d�|jttttjd
t���d�WdQXWdtj|�t
t�X|jtjd�dS(NRLR�scpu   0 0 0 0 0 0 0 0 0 0
scpu0  0 0 0 0 0 0 0 0 0 0
scpu1  0 0 0 0 0 0 0 0 0 0
c s4|jd�r$ttjd��n�|||�S(Ns/procsrejecting access for test(R:R�R�R�(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�ss
builtins.opens__builtin__.openR^R�iscpu   1 0 0 0 0 0 0 0 0 0
scpu0  1 0 0 0 0 0 0 0 0 0
scpu1  1 0 0 0 0 0 0 0 0 0
s/proc(ttempfiletmkdtempR_R�R�R1twriteRRR`RRhR]R�R�Ratcpu_percenttcpu_times_percentR^R�tsumRPtassertNotEqualtshutiltrmtree(Rkt	my_procfsR�R\Rbtper_cpu_percenttper_cpu_times_percent((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_no_procfs_on_import�sL!


	!

/
c
C s�tdtjd�j���J}tj�|js:t�tjdt�tj	�tj	dt�WdQXtdtjd�j���}tj�}|js�t�tjdt�}tj	�}tj	dt�}|j
|d�|j
t|�d�|j
t|�d�|j
t|�d�|j
ttt|��d�|j
ttt|��d�|j
|jd�|j
|jd�WdQXdS(Ns
/proc/stats�                cpu   0 0 0 0 0 0 0 1 0 0
                cpu0  0 0 0 0 0 0 0 1 0 0
                cpu1  0 0 0 0 0 0 0 1 0 0
                R�s�                cpu   1 0 0 0 0 0 0 0 0 0
                cpu0  1 0 0 0 0 0 0 0 0 0
                cpu1  1 0 0 0 0 0 0 0 0 0
                igY@(RdR�R�R�RhR�R�R�RaR�R�R�RPR�R�tuser(RkRcR�tcpu_percent_percpuR�tcpu_times_percent_percpu((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cpu_steal_decrease�s4

cC sGtjddt��,}|jttjj�|js=t	�WdQXdS(Nspsutil._common.openR](
RR`RaR]R'RhR�R|R�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_boot_time_mocked(s

cC s!tjddddddtdfg��3}|jtj�djd	�|jsYt�WdQXtjddddd
dtdfg��3}|jtj�djd	�|js�t�WdQXtjddddddtdfg��3}|jtj�djd�|jst�WdQXdS(Nspsutil._pslinux.cext.usersR�t	giampaolospts/2s:0g�h�Aiit	localhosts:0.0tfoo(	RR`RaR�RhtusersthostR�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_users_mocked/s			cC s�tj�}z�|t_|jttj�|jttj�|jttjdt�|jttj	�|jttj
�|jttj�|jttj�|jttj
�|jtjtj�Wddt_tj|�XdS(NR�s/proc(R~RRhR^R]R�RiR�RaR|RDR8R&RQt
NoSuchProcesstProcessR�trmdir(Rkttdir((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_procfs_pathCs		cC s�t�}|j�zntj�}|j�dj}tj|�sQt|��tj|�}|j�|j	|tj
��Wd|j�XdS(Ni(RtstartRhR�tthreadstidt
pid_existsR�tas_dictR�tpidststop(Rktttpttidtpt((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_issue_687Vs	

cC sFtdd��1}tjtj��s-t�|js<t�WdQXdS(Ns/proc/%s/statusR.(RdRhR�R�tgetpidR�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_pid_exists_no_proc_statushs(
R�R�R}R�R�R�R�R�R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR{�s		<	)				s
no batterytTestSensorsBatterycB s�eZejed�d�d��Zejed�d�d��Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�ZRS(
tacpisacpi utility not availablecC s`td�}t|jd�dj�jdd��}tj�j}|j||dd�dS(Nsacpi -bR�it%R.Ro(	RR=R9RKtreplaceRhtsensors_batterytpercentRj(RkR?t
acpi_valueRm((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_percentzs+cC svtd�}d|j�kr+tjd�Sd|kr@t}nd|jd�dk}|jtj�j	|�dS(Nsacpi -btunknownsacpi output not reliablesdischarging at zero ratetChargings
i(
RtlowerRR�RaR9R�RhR�t
power_plugged(RkR?tplugged((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_power_plugged�s
	c s��fd�}t�tr!dnd}tj|d|��K}|jtj�jt�|jtj�j	tj
�|js�t�WdQXdS(Nc s?|jd�s|jd�r+tjd�S�|||�SdS(Ns
AC0/onlines	AC/onlinet1(R�RSRU(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s
s
builtins.opens__builtin__.openR^(
R_RRR`R�RhR�R�RatsecslefttPOWER_TIME_UNLIMITEDR�R�(RkR\RbRc((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_power_plugged�sc sq�fd�}t�tr!dnd}tj|d|��/}|jtj�jt�|j	sgt
�WdQXdS(Nc si|jd�s|jd�r3ttjd��n2|jd�rUtjtd��S�|||�SdS(Ns
AC0/onlines	AC/onlineR.s/statustcharging(R�R�R�R�RSRTR(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s
s
builtins.opens__builtin__.openR^(R_RRR`R�RhR�R�RaR�R�(RkR\RbRc((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_power_plugged_2�sc sq�fd�}t�tr!dnd}tj|d|��/}|jtj�jt�|j	sgt
�WdQXdS(Nc s?|jd�s|jd�r+tjd�S�|||�SdS(Ns
AC0/onlines	AC/onlinet0(R�RSRU(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s
s
builtins.opens__builtin__.openR^(R_RRR`R�RhR�R�R�R�R�(RkR\RbRc((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_power_not_plugged�sc sq�fd�}t�tr!dnd}tj|d|��/}|jtj�jt�|j	sgt
�WdQXdS(Nc si|jd�s|jd�r3ttjd��n2|jd�rUtjtd��S�|||�SdS(Ns
AC0/onlines	AC/onlineR.s/statustdischarging(R�R�R�R�RSRTR(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s
s
builtins.opens__builtin__.openR^(R_RRR`R�RhR�R�R�R�R�(RkR\RbRc((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt test_emulate_power_not_plugged_2�sc sn�fd�}t�tr!dnd}tj|d|��,}|jtj�j�|jsdt	�WdQXdS(Nc sc|jd�s|jd�r3ttjd��n,|jd�rOtjd�S�|||�SdS(Ns"/sys/class/power_supply/AC0/onlines!/sys/class/power_supply/AC/onlineR.s#/sys/class/power_supply/BAT0/statuss???(R:R�R�R�RSRU(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\�s
s
builtins.opens__builtin__.openR^(
R_RRR`R�RhR�R�R�R�(RkR\RbRc((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_power_undetermined�s	c
C s[tdttjd���:tdttjd���|jtj��WdQXWdQXdS(Ns'/sys/class/power_supply/BAT0/energy_nowR.s'/sys/class/power_supply/BAT0/charge_now(RfR�R�R�R�RhR�(Rk((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_no_base_files�scC sDtdd��/}|jtj�jd�|js:t�WdQXdS(Ns(/sys/class/power_supply/BAT0/energy_fullR�i(RdR�RhR�R�R�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_energy_full_0�scC swtdttjd���Vtdttjd���4tdd��|jtj�jd�WdQXWdQXWdQXdS(Ns(/sys/class/power_supply/BAT0/energy_fullR.s(/sys/class/power_supply/BAT0/charge_fulls%/sys/class/power_supply/BAT0/capacityt88iX(	RfR�R�R�RdR�RhR�R�(Rk((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt"test_emulate_energy_full_not_avail�s
cC s�tdttjd���_tdttjd���=tdttjd���|jtj�j�WdQXWdQXWdQXdS(Ns!/sys/class/power_supply/AC/onlineR.s"/sys/class/power_supply/AC0/onlines#/sys/class/power_supply/BAT0/status(RfR�R�R�R�RhR�R�(Rk((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_no_power�s(R�R�RR�RR�R�R�R�R�R�R�R�R�R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR�vs""								
tTestSensorsTemperaturescB sMeZejed�ejeo$ed�d���Zd�Zd�Z	RS(sunreliable on TRAVISsno temperaturesc
 s��fd�}t�tr!dnd}tj|d|��d}tjdt��I}|jtj	�i�|j
syt�|jdt
|dj��WdQXWdQXdS(Nc s\|jd�r$ttjd��n4|jd�rHttjd��n�|||�SdS(Nt_inputR.ttemp(R�tOSErrorR�tEIO(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\s
s
builtins.opens__builtin__.openR^Rtignoringi(R_RRR`R�R�RaR�Rhtsensors_temperaturesR�R�R�R�R�(RkR\RbRcR�((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_eio_errorsc s��fd�}t�tr!dnd}tj|d|���tjdddg��etj�dd	}|j|jd
�|j|jd�|j|j	d�|j|j
d
�WdQXWdQXdS(Nc s�|jd�r"tjtd��S|jd�rDtjtd��S|jd�r`tjd�S|jd�r|tjd�S|jd	�r�tjd
�S�|||�SdS(Ns/nameRVs/temp1_labeltlabels/temp1_inputt30000s
/temp1_maxt40000s/temp1_critt50000(R�RSRTRRU(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\"s


s
builtins.opens__builtin__.openR^s	glob.globR�s/sys/class/hwmon/hwmon0/temp1RViR�g>@gD@gI@(R_RRR`RhR�R�R�Rthightcritical(RkR\RbR�((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_class_hwmon!s
c s��fd�}d�}t�tr*dnd}tj|d|���tjddtd|��etj�dd	}|j|jd
�|j|j	d�|j|j
d�|j|jd�WdQXWdQXdS(
Nc s�|jd�rtjd�S|jd�r8tjd�S|jd�rZtjtd��S|jd�r|tjtd��S�|||�SdS(	Nt0_tempR�R�R�t0_typeR�ttypeRV(R�RSRURTR(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\=s

cS sM|dkrgS|dkr gS|dkr3dgS|dkrIddgSdS(Ns/sys/class/hwmon/hwmon*/temp*_*s&/sys/class/hwmon/hwmon*/device/temp*_*s /sys/class/thermal/thermal_zone*s /sys/class/thermal/thermal_zone0s,/sys/class/thermal/thermal_zone0/trip_point*s2/sys/class/thermal/thermal_zone1/trip_point_0_types2/sys/class/thermal/thermal_zone1/trip_point_0_temp((R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	glob_mockIss
builtins.opens__builtin__.openR^s	glob.globR]RViR.g>@gI@(R_RRR`RaRhR�R�R�RR�R�(RkR\R�RbR�((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_emulate_class_thermal<s	(
R�R�RR�RRtEMPTY_TEMPERATURESR�R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR�s$	tTestSensorsFanscB seZd�ZRS(c s��fd�}t�tr!dnd}tj|d|��^tjdddg��?tj�dd	}|j|jd
�|j|jd�WdQXWdQXdS(Nc sz|jd�r"tjtd��S|jd�rDtjtd��S|jd�rftjtd��S�|||�SdS(Ns/nameRVs/fan1_labelR�s/fan1_inputt2000(R�RSRTR(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\css
builtins.opens__builtin__.openR^s	glob.globR�s/sys/class/hwmon/hwmon2/fan1RViR�i�(	R_RRR`Rhtsensors_fansR�R�R(RkR\Rbtfan((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRbs

(R�R�R(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR�_stTestProcesscB s�eZd�ZeZd�Zd�Zejed�d��Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zejed�d��Zd�Zd�Zd�ZRS(cC stt�dS(N(RR(Rk((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytsetUpscC s'tjdt�}t|�}|jt�td�dt�tj|j	�}t
jd�|j�}|j
dt�}|j|jtg|D]}|j|j^q��dd�|j|jtg|D]}|j^q��dd�|j|jtg|D]}|j^q�dd�dS(Nsk
            import time
            with open("%s", "w") as f:
                time.sleep(10)
            cS s
tjd�S(NRN(R�R�(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt<lambda>�ss'%s' not in retg�������?tgroupedRoi(R�R�RRR@RRRhR�tpidttimetsleeptmemory_full_infotmemory_mapsR�RjtussR�t
private_dirtyt
private_cleantpssR�(RktsrctsprocR�R�tmapsR,((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_memory_full_info�s 


//cC s�tdtj�tjd�j���g}tj�}|j�}|j	sRt
�|j|jd�|j|j
d�|j|jd
�WdQXdS(Ns/proc/%s/smapss�                fffff0 r-xp 00000000 00:00 0                  [vsyscall]
                Size:                  1 kB
                Rss:                   2 kB
                Pss:                   3 kB
                Shared_Clean:          4 kB
                Shared_Dirty:          5 kB
                Private_Clean:         6 kB
                Private_Dirty:         7 kB
                Referenced:            8 kB
                Anonymous:             9 kB
                LazyFree:              10 kB
                AnonHugePages:         11 kB
                ShmemPmdMapped:        12 kB
                Shared_Hugetlb:        13 kB
                Private_Hugetlb:       14 kB
                Swap:                  15 kB
                SwapPss:               16 kB
                KernelPageSize:        17 kB
                MMUPageSize:           18 kB
                Locked:                19 kB
                VmFlags: rd ex
                iiiiiii
iilii<(RdR�R�R�R�R�RhR�R�R�R�R�R�R�R�(RkRcR�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_memory_full_info_mocked�s
sunreliable on PYPYcC s�d�}ttd��|j|�jd�WdQXttd��|j|�jd�WdQXttd��|j|�jd�WdQXttd��|j|�jd�WdQXttd��|j|�jd�WdQXttd��|j|�jd�WdQXtr�tt�ttd��|j|�jd�WdQXtt�ttd	��|j|�jd�WdQXndS(
NcS s�tj�}tj�d}xVtrtxI|j�D];}|jtjjt�krW|Stj�|kr2Pq2q2WqWt	d��dS(Nistimeout looking for test file(
RhR�R�Rat
open_filesR�R�tabspathRR'(R�t	giveup_attfile((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt
get_test_file�s	R�RR�sr+sw+sa+R,sx+(R_RR�tmodeRR(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_open_files_mode�s(	

cC s�tj�}|j�}tj���t|jdt|��tjddt	t
jd���/}|j�}|s|t�|j
s�t�WdQXtjddt	t
jd���,}|j|j�g�|j
s�t�WdQXWdQXdS(Nslen(ret) != %ispsutil._pslinux.os.readlinkR^R.(RhR�R�R~tNamedTemporaryFileRR�RR`R�R�R�R�R�tEINVALR�(RkR�tfilesRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_open_files_file_gone�s

c
C s�tj�}|j�}tj���t|jdt|��trKdnd}tj	|dt
tjd���/}|j�}|s�t
�|js�t
�WdQXWdQXdS(Nslen(ret) != %is
builtins.opens__builtin__.openR^R.(RhR�R�R~R�RR�RRR`R�R�R�R�R�(RkR�R�RbRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_open_files_fd_gone�s

cC sVtjddi��;}|jtjjtj��j��|j	sLt
�WdQXdS(Ns)psutil._pslinux._psposix.get_terminal_mapR�(RR`R�RhR�R�R�R�tterminalR�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_terminal_mockeds%c
C s�tj�}tjtd��}tjdd|dt��2}|j|j	�ddg�|j
sjt�WdQXtjtd��}tjdd|dt��5}|j|j	�dddg�|j
s�t�WdQXdS(	Ntfoobarspsutil._common.openR�R]R�tbart	foobarR.(RhR�RSRTRRR`RaR�tcmdlineR�R�(RkR�R�Rc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cmdline_mockedsc
C s�tj�}tjtd��}tjdd|dt��2}|j|j	�ddg�|j
sjt�WdQXtjtd��}tjdd|dt��5}|j|j	�dddg�|j
s�t�WdQXdS(	Nsfoo bar spsutil._common.openR�R]R�Rs	foo bar  R.(RhR�RSRTRRR`RaR�RR�R�(RkR�R�Rc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cmdline_spaces_mocked"scC sttj�}tjtd��}tjdd|dt��2}|j|j	�ddg�|j
sjt�WdQXdS(Nsfoo barspsutil._common.openR�R]R�R(RhR�RSRTRRR`RaR�RR�R�(RkR�R�Rc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cmdline_mixed_separators0scC sXtjddd��=|jtj�j�d�|jtj�j�d�WdQXdS(Nspsutil._pslinux.os.readlinkR�s/home/foo (deleted)s	/home/foo(RR`R�RhR�texetcwd(Rk((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt!test_readlink_path_deleted_mocked:s
c s��fd�}t�tr!dnd}tj|d|��8}tj�j�}|js`t�|j	|g�WdQX�fd�}tj|d|��!|j
tjtj�j�WdQXdS(Nc sB|jdtj��r.ttjd��n�|||�SdS(Ns
/proc/%s/taskR.(R:R�R�R�R�R�(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\Ess
builtins.opens__builtin__.openR^c sB|jdtj��r.ttjd��n�|||�SdS(Ns
/proc/%s/taskR.(R:R�R�R�R�tEPERM(RVRWRX(R[(s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR\Ts(R_RRR`RhR�R�R�R�R�R]tAccessDenied(RkR\RbRcR�((R[s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_threads_mocked@scC s�tjddttjd����}tjddtjdd���}tj�j�}|j	sit
�|j	sxt
�|j|d�tjddt��!|j
tjtj�j�WdQXWdQXWdQXdS(Nspsutil._pslinux.readlinkR^R.spsutil.Process.cmdlineispsutil._pslinux.os.path.lexistsR�(RR`R�R�R�RhRR�RR�R�R�R�R]t
ZombieProcess(RkR�R�R�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_exe_mocked]s
c	C smtdtj�ttjd���B}tj�}|jt	��|j
�WdQX|jsct�WdQXdS(Ns/proc/%s/smapsR.(
RfR�R�R�R�R�RhR�R]RR�R�R�(RkRcR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_issue_1014rs
s
not supportedc
C s�tjddttjd���W}tj�}|j�|jtj	��}|j
tj�WdQX|jstt
�WdQX|j|jj|j�|j|jj|j��dS(Ns"psutil._pslinux.cext.linux_prlimitR^R.(RR`R�R�tENOSYSRhR�RVR]R
trlimitt
RLIMIT_NOFILER�R�R�t	exceptionR�(RkRcR�Re((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_rlimit_zombie}s
c	C s�tjddttjd���Q}tj�}|j�|jtj	��}|j
�WdQX|jsnt�WdQX|j
|jj|j�|j
|jj|j��dS(Nspsutil._pslinux.os.readlinkR^R.(RR`R�R�R�RhR�RVR]R
RR�R�R�RR�(RkRcR�Re((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cwd_zombie�s
c*C s�ddlm}dddddddddddddddd	d
dddddddddddddddddddddddddg*}d
j|�j�}tdtj�|��tj�}|j	|j
�d�|j	|j�tj�|j	|j
�d�|j	|j�d|tj��|j�}|j	|jd|�|j	|jd|�|j	|jd|�|j	|jd|�|j	|jd|�|j	|j�d�WdQXdS(Ni����(tCLOCK_TICKSR�s(cat)tZR�t2t3t4t5t6t7RJs
/proc/%s/stattcatiiiiiii(R�RR1R�RdR�R�RhR�R�RVtstatust
STATUS_ZOMBIEtppidtcreate_timeR|R�R�tsystemt
children_usertchildren_systemtiowaittcpu_num(RkRRWRYR�tcpu((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_stat_file_parsing�st	c
C s9tdtj�tjd�j���tj�}|j|j	�j
d�|j|j	�jd�|j|j�d�|j
�}|j|jd�|j|jd�|j|jd�|j�}|j|jd	�|j|jd
�|j|jd�|j|jj�ttdd
���WdQXdS(Ns/proc/%s/statuss                Uid:	1000	1001	1002	1003
                Gid:	1004	1005	1006	1007
                Threads:	66
                Cpus_allowed:	f
                Cpus_allowed_list:	0-7
                voluntary_ctxt_switches:	12
                nonvoluntary_ctxt_switches:	13ii
iBi�i�i�i�i�i�ii(RdR�R�R�R�R�RhR�R�tnum_ctx_switchest	voluntarytinvoluntarytnum_threadstuidstrealt	effectivetsavedtgidst_proct_get_eligible_cpustlisttrange(RkR�R.R2((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_status_file_parsing�s"
(R�R�R�ttearDownR�R�RR�R
R�R�R�R�RRRR	RRRR
RRR)R7(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR�|s&			#$						
						?tTestProcessAgainstStatuscB s�eZdZed��Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Ze�d	��Z
d
�Zd�ZRS(s/proc/pid/stat and /proc/pid/status have many values in common.
    Whenever possible, psutil uses /proc/pid/stat (it's faster).
    For all those cases we check that the value found in
    /proc/pid/stat (by psutil) matches the one found in
    /proc/pid/status.
    cC stj�|_dS(N(RhR�tproc(tcls((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt
setUpClass�sc
C s�tjjd|jj��|}xb|D]Z}|j�}|j|�r&|jd�d}yt|�SWq�t	k
r||SXq&q&Wt	d|��WdQXdS(Ns/proc/%s/statuss	is
can't find %r(
Rht_psplatformt	open_textR:R�RKR:t	partitionR=R>(Rkt	linestartR�RAR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pytread_status_file�s	

cC s,|jd�}|j|jj�|�dS(NsName:(RAR�R:RV(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	test_name
scC sa|jd�}||jd�d|jd�!}|jdd�}|j|jj�|�dS(NsState:t(it)RJR�(RAtfindtrfindR�R�R:R(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_statuss#cC s,|jd�}|j|jj�|�dS(NsPPid:(RAR�R:R!(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	test_ppidscC s,|jd�}|j|jj�|�dS(NsThreads:(RAR�R:R-(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_num_threadsscC sN|jd�}ttt|j�dd!��}|j|jj�|�dS(NsUid:ii(RARORPR=R9R�R:R.(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	test_uidss"cC sN|jd�}ttt|j�dd!��}|j|jj�|�dS(NsGid:ii(RARORPR=R9R�R:R2(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt	test_gids!s"cC sZ|jd�}|j|jj�j|�|jd�}|j|jj�j|�dS(Nsvoluntary_ctxt_switches:snonvoluntary_ctxt_switches:(RAR�R:R*R+R,(RkR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_num_ctx_switches&scC sr|jd�}dt|�krntt|jd��\}}|j|jj�tt	||d���ndS(NsCpus_allowed_list:R�i(
RAR�RPR=R9R�R:tcpu_affinityR5R6(RkR�tmin_tmax_((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cpu_affinity-s
cC so|jd�}tjd��}|jjj�WdQXdt|�kr\|jskt�n|jskt�dS(NsCpus_allowed_list:spsutil._pslinux.per_cpu_timesR�(	RARR`R:R3R4R�R�R�(RkR�Rc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_cpu_affinity_eligible_cpus4s(R�R�t__doc__tclassmethodR<RARBRGRHRIRJRKRRLRPRQ(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyR9�s	
							t	TestUtilscB seZd�Zd�ZRS(cC sMtjddd��2}|jtjjd�d�|jsCt�WdQXdS(Nsos.readlinkR�s
foo (deleted)RR�(RR`R�RhR=treadlinkR�R�(RkRc((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt
test_readlinkFscC s�tjjt�}t|d��}|jd�WdQX|jtjj	tdt
�d�|jtjj	tdt�d�|jtjj	tddd�d�dS(Ntwtsfoo tbinaryR�s??tfallbackR(R�R�R�RR_R�R�RhR=RR�Ra(RktfnameR�((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyttest_catKs""(R�R�RVR[(((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyRTCs	t__main__(trun(ZRRt
__future__RR;R!R�tglobRSR�R�R�RR'R~R�R�R�RhRtpsutil._compatRRRRtpsutil.testsRRRR	R
RRR
RRRRRRRRRRRRR�R�tdirnamet__file__tHERER&tSIOCGIFCONFR/RfR�R+R4RFRIRMRQtcontextmanagerRdRfR�tTestCaseRgR�R�R�R�R�RRRR%R+R;RJRaR{R�R�R�R�R9RTR�tpsutil.tests.runnerR](((s=/usr/lib64/python2.7/site-packages/psutil/tests/test_linux.pyt<module>s�		
						�1]?�- @���S�tR

404 Not Found
[ LogOut ]