%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python2.7/site-packages/fail2ban/tests/
Upload File :
Create Path :
Current File : //usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyc

�
��&dc@sdZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZmZmZmZdd	lmZmZdd
lmZddlmZddlm Z dd
l!m!Z!ee"�a#dZ$ej%j&dd�Z(e(s�ej)j*ej)j+dd��r�dZ(q�dZ(nej)j*ej)j+e(d��Z,ej-dej)j.ej)j.ej)j.ej)j/e0�����dej1fd��YZ2dd�Z3d�Z4de2fd��YZ5d�Z6d�Z7e8ed�s�de9fd��YZ:e:e_:ej;j<Z=d�Z<e<ej;_<nd �Z>d!�Z?ej%j&d"d�Z@d#�ZAd$�ZBddd%�ZCddlDZDddlEZEe8ejFd&�s0dd'�ZGeGejF_Gnd(eHeIdd)�ZJeJejF_Je8ejFd*�s{d+�ZKeKejF_KneLr�dd,�ZMeMejF_Mdd-�ZNeNejF_NnejFjOZPd.�ZQejFjRZSd/�ZTeQejF_OeTejF_Rd0ejFfd1��YZUejVZVdS(2sYaroslav Halchenkos%Copyright (c) 2013 Yaroslav HalchenkotGPLi����N(tStringIO(twrapsi(t	getLoggertstr2LogLeveltgetVerbosityFormatt
uni_decode(tIPAddrtDNSUtils(tMyTime(tUtils(tasyncserver(tversioni �BtFAIL2BAN_CONFIG_DIRtconfigs
fail2ban.confs
/etc/fail2bant
PYTHONPATHtDefaultTestOptionscBseZd�ZRS(cCsSi
dd6dd6td6dd6dd6td6td6td6td	6td
6|_dS(Nt	log_levelt	verbositytlog_lazyt
log_tracebacktfull_tracebacktfastt	memory_dbtno_gamint
no_networkt	negate_re(tNonetTruetFalset__dict__(tself((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt__init__Hs
(t__name__t
__module__R (((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRGstcCs�tj}tjddtjd|ddt�}|j|dddd	d
ddd�|d
ddddd
ddd�|ddddddtd
ddd�|dddddd
t	dd�|dddddddd�|dd dddd!dd"�|d#d$dddd%dd&�|d'd(dddd)dd*�|d+d,dddd-dd.�|d/d0dddd1�|d2dddd3�g�|S(4Ntusages%s [OPTIONS] [regexps]
iRs%prog s-ls--log-leveltdestRtdefaultthelps4Log level for the logger to use during running testss-vtactiontcountRsIncrease verbositys--verbositytstorettypes'Set numerical level of verbosity (0..4)s--log-directtstore_falseRs!Prevent lazy logging inside testss-ns--no-networkt
store_trueRs)Do not run tests that require the networks-gs
--no-gaminRs'Do not run tests that require the gamins-ms--memory-dbRs/Run database tests using memory instead of files-fs--fastRsQTry to increase speed of the tests, decreasing of wait intervals, memory databases-is--ignoreRsAnegate [regexps] filter to ignore tests matched specified regexpss-ts--log-tracebacks.Enrich log-messages with compressed tracebackss--full-tracebacksBEither to make the tracebacks full, not compressed (as by default)(
toptparsetOptiontOptionParsertsystargvRtadd_optionsRtintR(tdocR/tp((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytgetOptParserSsN		

cCs�td�ad}|jdk	r@t|j�}tj|�ntjtj�tj|_|j	}|dkr|dkr�dno|tj
kr�dnZ|tjkr�dnE|ttj
tj�kr�dn$|ttjtj�kr�dnd}||_	ntjtj�}d}|jrNddlm}|jrAd	pDd
|}n	tj}t||�}|j||��tj|�|j	dkr�dtttj�jdd
�fGHn|S(Ntfail2baniiiiis %(message)s(tFormatterWithTraceBacks %(tb)ss %(tbc)ss1Fail2ban %s test suite. Python %s. Please wait...s
R#(RtlogSysRRRtsetLeveltloggingtCRITICALtlevelRt
HEAVYDEBUGtDEBUGtmintINFOtNOTICEtWARNINGtERRORt
StreamHandlerR1tstdoutRthelpersR9Rt	FormatterRtsetFormattert
addHandlerRtstrtreplace(toptstllevRRGtfmtRI((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytinitProcesss:	!!		
$tF2BcBsMeZdZdZd�Zd�Zd�Zd�Zd�Ze	d�Z
RS(i<icCs;|j|_|jr*t|_t|_ni|jd<dS(Ntshare_config(RRRRR(RRN((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR �s
		cCsdS(N((R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
SkipIfFast�scCsdS(N((R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytSkipIfNoNetwork�scKs�ts�|jd�r'tjd��nx�dD]�}|j|�}|d
krUq.ntjj|�ddkr~|d7}ntjjtjj	t
|d|��s.tjd	||f��q.q.Wnd
S(s4Helper to check action/filter config is available
		tstocks/Skip test because of missing stock-config filesR(tfilteriR#s.confs.ds-Skip test because of missing %s-config for %rN(sactionsfilter(tSTOCKtgettunittesttSkipTestRtostpathtsplitexttexiststjoint
CONFIG_DIR(Rtkwargstttv((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytSkipIfCfgMissing�s

(cs�fd�}|S(s>Helper decorator to check action/filter config is available
		cs"t����fd��}|S(Ncs tjj���|||�S(N(RZRRRe(RtargsRb(tdecargstf(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytwrapper�s(R(RhRi(Rg(Rhs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_deco_wrapper�s((RRgRj((Rgs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytskip_if_cfg_missing�scCsPt|t�r!|r!|j}n|jrLt|t�rLt|�d}n|S(Ni
(t
isinstancetbooltMAX_WAITTIMERR4tfloat(Rtwtime((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytmaxWaitTime�s
(R!R"RntMID_WAITTIMER RTRUReRkRRq(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRR�s				
	cst���fd��}|S(s�Helper decorator to create a temporary directory

	Directory gets removed after function returns, regardless
	if exception was thrown of not
	cs>tjdd�}z�||||�SWdtj|�XdS(Ntprefixsf2b-temp(ttempfiletmkdtemptshutiltrmtree(RRfRbttmp(Rh(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRi�s(R(RhRi((Rhs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytwith_tmpdir�scst���fd��}|S(s@Helper decorator to execute test in alternate (fixed) test time.cs*t�z�|||�SWdt�XdS(N(tsetUpMyTimettearDownMyTime(RRfRb(Rh(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRi�s(R(RhRi((Rhs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
with_alt_time�sR[cBseZRS((R!R"(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR[scCsw|dtkrc|jr6|jjt|d��n)|jr_|jjd�|jj�ndSt|||�dS(Niits(	R[tshowAlltstreamtwritelnRLtdotstwritetflusht
_org_AddError(Rttestterr((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytaddErrors		cs�|stt��}nt|�t_tjjrfdt_dt_dt_d�}|tj_	n<dt_dt_dt_t
j��fd�}|t
_tjjr�d�}|tj_
nd	tjd
<t
j�tjt�tj}|jddd
d'�xdtd�D]V}|jd|d�|jd|d�|jd|d�|jd|d�qW|jdd�|jdd�tjjr�|jdd�|jdd�|jdd�tj}x�dt�fdt�fdt�fdt�fd t�fd!t�fd"ttd#�td$�g�fd%ttd#�td$�g�ffD]}|j|�qfWtjjr�x0tj�D]}|j|tjd&��q�Wq�ndS((Ng{�G�zd?g����Mb@?g-C��6?cSstjd��dS(NsSkip test because of "--fast"(RZR[(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytF2B_SkipIfFast"sg�������?g{�G�zt?cs-|dkrtd|��n�|�dS(Ng�?sT[BAD-CODE] To long sleep interval: %s, try to use conditional Utils.wait_for instead(t
ValueError(Rd(t
_org_sleep(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_new_sleep,scSstjd��dS(Ns#Skip test because of "--no-network"(RZR[(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytF2B_SkipIfNoNetwork3ssCET-01CEST-02,M3.5.0,M10.5.0tTZtmaxCounti'tmaxTimeii<is
192.0.2.%ss
198.51.100.%ss203.0.113.%ss2001:db8::%ss	test-hosts2001:db8::ffffs
test-others
87.142.124.10s192.0.2.888s8.8.4.4s
dns.googles999.999.999.999s
abcdef.abcdefs
192.168.0.s
failed.dns.chs!doh1.2.3.4.buga.xxxxx.yyy.invalids1.2.3.4.buga.xxxxx.yyy.invalidsexample.coms"2606:2800:220:1:248:1893:25c8:1946s
93.184.216.34swww.example.comt	localhosti,(RQRRRRZRR
tDEFAULT_SLEEP_TIMEtDEFAULT_SLEEP_INTERVALtDEFAULT_SHORT_INTERVALRTttimetsleepRRUR\tenvironttzsetR	tsetAlternateNowtTEST_NOWRtCACHE_ipToNamet
setOptionstxrangetsetRtCACHE_nameToIpRtgetSelfNamestdnsToIp(RNR�R�R�tcti((R�s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt	initTestss`										


		!+cCsdS(N((((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
mtimesleepesR�cCstjt�dS(N(R	tsetTimeR�(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRzmscCs
dt_dS(N(RR	tmyTime(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR{sscs�t��ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}dd	lm	}	dd
lm
}
ddlm}ddlm}dd
lm
}
ddlm}ddlm}ddlm}ddlm}ddlm}�s/tj�}n.dtjf���fd��Y���}|jtj|j��|jtj|j��|jtj|j��|jtj|j��|jtj|j��|jtj|
j��|jtj|j��|jtj|j��|jtj|j��|jtj|j ��|jtj|j��y)ddl!}|jtj|j"��Wnt#k
r�nX|jtj|j$��|jtj|j%��|jtj|j&��|jtj|j'��|jtj|j(��|jtj|j)��|jtj|j*��|jtj|j+��|jtj|
j,��|jtj|
j-��|jtj|
j.��|jtj|
j/��|jtj|j0��|jtj|j1��|jtj|j2��|jtj|j3��|jtj|j4��|jtj|j5��|jtj|j6��|jtj|j7��|jtj|j8��|jtj|j9��|jtj|j:��|jtj|j;��|jtj|j<��|jtj|j��|jtj|	j=��|jtj|	j>��|jtj|j?��|jtj|j@��|jtj|jA��|jtj|jB��tjC�}ddlmD}x�tEjFtEjGjHtEjGjI|jJ���D]Z}|jKd�r|jLd�r|j|jMd|jNtEjGjO|�df��qqWddlPmQ}|g}y^tjRjSs�tjRjTr�t#dtjRjStjRjTf��nddlUmV}|jW|�Wn$t#k
r}tXjYd|�nXy!dd lZm[}|jW|�Wn$t#k
rW}tXjYd!|�nXx-|D]%}|jtj|j\|���q_Wy3dd"l]m^}|jtj|j_|���Wn$t#k
r�}tXjYd#|�nX|jtj|j`��|S($Ni(tbanmanagertestcase(tclientbeautifiertestcase(tclientreadertestcase(ttickettestcase(tfailmanagertestcase(tfiltertestcase(tservertestcase(tdatedetectortestcase(tactiontestcase(tactionstestcase(tsockettestcase(tmisctestcase(tdatabasetestcase(tobservertestcase(tsamplestestcase(tfail2banclienttestcase(tfail2banregextestcasetFilteredTestSuitecs<eZg�D]Zeje�^q
Z��fd�ZRS(cs�g}x�|D]�}t|tj�r8|j|�q
nt|�}xG|jD]<}|j|�}�jsr|n|rN|j|�PqNqNWq
Wx$|D]}t	�|�j|�q�WdS(N(
RlRZt	TestSuitetaddTestRLt_regexpstsearchRtappendtsuper(RtsuitetmatchedR�R}trtm(R�RN(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR��s



(R!R"R�tretcompileR�R�((R�RNtregexps(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR��s"i����(taction_dttest_s.pys%s.%sii(t
FilterPollsSkip, fast: %s, no_gamin: %s(tFilterGamins2Skipping gamin backend testing. Got exception '%s'(tFilterPyinotifys9I: Skipping pyinotify backend testing. Got exception '%s'(t
FilterSystemds7I: 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�RZR�R�t	makeSuitetTransmittert	JailTestst
RegexTeststLoggingTeststServerConfigReaderTeststCommandActionTesttExecuteActionstTicketTestst
AddFailuretFailmanagerComplextdnstStatusExtendedCymruInfotImportErrortBeautifierTesttConfigReaderTesttJailReaderTesttFilterReaderTesttJailsReaderTesttJailsReaderTestCachetSockett
ClientMisctHelpersTestt	SetupTesttTestsUtilsTestt
MyTimeTesttDatabaseTesttObserverTesttBanTimeIncrt
BanTimeIncrDBtIgnoreIPtBasicFiltertLogFiletLogFileMonitortLogFileFilterPolltIgnoreIPDNStGetFailurest
DNSUtilsTeststDNSUtilsNetworkTeststDateDetectorTesttCustomDateFormatsTesttFilterSamplesRegextFail2banClientTesttFail2banServerTesttFail2banRegexTestt
TestLoaderR�R\tlistdirR]tabspathtdirnamet__file__t
startswithtendswithtloadTestsFromNameR!R^tserver.filterpollR�RRRRtserver.filtergaminR�R�R:twarningtserver.filterpyinotifyR�tget_monitor_failures_testcasetserver.filtersystemdR�t%get_monitor_failures_journal_testcasetTransmitterLogging(R�RNR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�ttestsR�t
testloaderR�tfile_R�tfiltersR�teR�tFilter_R�((R�RNR�s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytgatherTestsws�
%	
	(.	%
#tassertDictEqualcCs�|jt|t�d�|jt|t�d�||kr�d||f}ddjtjtj|�j�tj|�j���}|p�||}|j	|�ndS(Ns"First argument is not a dictionarys#Second argument is not a dictionarys%r != %rs
(
tassert_RltdictR`tdifflibtndifftpprinttpformatt
splitlinestfail(Rtd1td2tmsgtstandardMsgtdiff((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR'sic
s�d��|rt�n|�fd�����fd��y�|||||�Wn�tk
r�}t|t�r�|jdn
t|�d}ddjtjt	j
|�j�t	j
|�j���}	|p�||	}|j|�nXdS(s�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.
	cSs=t|t�r)td�|j�D��Std�|D��S(Ncss'|]}t|tttf�VqdS(N(RlRtlistttuple(t.0Rd((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pys	<genexpr>;scss'|]}t|tttf�VqdS(N(RlRRR(R Rd((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pys	<genexpr><s(RlRtanyt
itervalues(Rd((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_is_nested9scsEt|tttf�rAtt��fd�|D��d��S|S(Nc3s|]}�|��VqdS(N((R Rd(t_nest_sortedtkey(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pys	<genexpr>BsR%(RlR�RRtsorted(RdR%(R$(R%s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR$@s)cst|�t|�kr1td||f��n|r�|r��|�r��|�r�||krhdStd||f��nt|t�rMt|t�rMxs|j�D]�\}}||}t|tttf�r!t|tttf�r!�|||dkr|dnd||�q�||kr�td||f��q�q�Wn��|d|�}�|d|�}x�t||�D]�\}}t|tttf�r�t|tttf�r��|||dkr�|dnd||�q�||kr�td||f��q�q�WdS(Ns%r != %riiR%(tlenR�RlRt	iteritemsRRtzip(tatbR>t
nestedOnlyR%tktv1tv2(t_assertSortedEqualR#R$(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR0Es('
0/ 0/is
within:s
N(
R&t	ExceptionRlR�RfRLR`RRRRRR(
RR*R+R>R,R%RR
RR((R0R#R$s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertSortedEqual3s		,tassertRaisesRegexpcOs}y|||�WnK|k
r^}tj|t|��dkry|jd||f�qynX|jdt|d��dS(Ns"%s" does not match "%s"s
%s not raisedR!(R�R�RLRRtgetattr(RtexcclstregexptfunRfRbR
((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR3jscCs�|}t}|dkrUt|d�rUt|t�rUtj|�\}}t}n||kr�|rvt|�}n|p�d||f}|j	|�ndS(Nt__iter__s%r was not found in %r(
RRthasattrRlt
basestringt	itertoolstteeRRR(RR*R+Rtbbtwrap((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertInvs+	cCs�|}t}|dkrUt|d�rUt|t�rUtj|�\}}t}n||kr�|rvt|�}n|p�d||f}|j	|�ndS(NR8s%r unexpectedly found in %r(
RRR9RlR:R;R<RRR(RR*R+RR=R>((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertNotIn�s+	cCsttjjtjkrBtjjd�tj	dd	|j
��nt|�tjjdkrpt
j
�|_ndS(
Ns
t=i
s %s iis
==========s========== %s s====================(RZRRRR<R@R1tstderrR�R:tdebugtidt
_org_setUpRR�t__startTime(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt_customSetUp�s
cCs=tjjdkr9tjjdtj�|jf�ndS(Nis
 %.3fs -- (RZRRRR1RBR�R�RF(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt_customTearDown�stLogCaptureTestCasecBsxeZdejfd��YZd�Zd�Zd�Zd�Zd�Z	d
d�Zd�Ze
ejd	��ZRS(t_MemHandlercBsJeZdZed�Zdd�Zd�Zd�Zd�Z	d�Z
RS(s�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.
		cCsktj�|_d|_d|_t�|_d|_t�|_	t
jj|�|rg|j
|_ndS(NR#i(t	threadingtLockt_lockt_valt_dirtyRt_recst
_nolckCntrRt_strmR<tHandlerR t_handle_lazythandle(Rtlazy((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyR �s			cCs[|rtd|��nd|_|j�*d|_t�|_|jjd�WdQXdS(s)Truncate the internal buffer and records.s.invalid size argument: %r, should be None or 0R#iN(R1RNRMRORRPRRttruncate(Rtsize((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRW�s	
	cCs�yX|j�d}y|jj|�Wn-tk
rV|jj|jdd��nXWn'tk
r�}|jjd|�nXdS(Ns
sUTF-8RMsError by logging handler: %r(t
getMessageRRR�tUnicodeEncodeErrortencodeR1(RtrecordRR
((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt__write�s
$cCs|js|jS|jjt�}|jd@r�|ss|jd7_|jdkrZ|jSd|_|jj�nz(|jdM_|j}t�|_Wd|jj�XxC|D]}|j	|�q�Wn%|r�|jdM_|jj�n|j
j�|_|jS(	s&Return current buffer as whole string.iiiiiNi����i����(RORNRMtacquireRRQRPRtreleaset_MemHandler__writeRRtgetvalue(RtlcktrecsR\((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRa�s,	
		
cCs0|j|�|j�|jdO_WdQXdS(s-Handle the specified record direct (not lazy)iN(R`RMRO(RR\((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRU�s

cCs3|j�$|jj|�|jdO_WdQXdS(s*Lazy handle the specified record on demandiN(RMRPR�RO(RR\((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRT�s
N(R!R"t__doc__RR RRWR`RaRURT(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRJ�s
	
	"	cCs�tj|_tj|_tjtjj	�|_
|j
gt_|jtjkrftj|j7_n|jtjdkr�tj
tjd�ntt|�j�dS(Ni(R:R>t
_old_levelthandlerst
_old_handlersRIRJRZRRRt_logR<R@R;R�tsetUp(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRi�scCs9|j�|jt_|jt_tt|�j�dS(sCall after every test case.N(	tpruneLogRgR:RfReR>R�RIttearDown(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRks
cOsx|jj�}|jdt�sOx|D]}||kr(tSq(WtrttSn%x|D]}||krVtSqVWtSdS(Ntall(RhRaRYRR(RR}Rbtloggedts_((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt
_is_loggeds

cs�jdd�}|rNtjj|�}tj���fd�|�}n�j���}�jdt�s�|s�j	j
�}�jd�|r�d|nd|f�qnb|s�j	j
�}xJ�D]?}||kr��jd||rd|nd|f�q�q�WndS(	skAssert 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
		twaitcs�j���S(N(Ro((RbR}R(s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt<lambda>2sRls/None among %r was found in the log%s: ===
%s===s, waited %sR#s(%r was not found in the log%s: ===
%s===N(RYRRZRRRqR
twait_forRoRRhRaR(RR}RbRptresRmRn((RbR}Rs8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertLogged#s $$
cOs�|jj�}t|�dkro|jdt�rox|D]}||kr;dSq;W|jd||f�n7x4|D],}||krv|jd||f�qvqvWdS(sAssert 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
		iRlNs6All of the %r were found present in the log: ===
%s===s"%r was found in the log: ===
%s===(RhRaR'RYRR(RR}RbRmRn((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytassertNotLoggedDs
%

cCs1|jjd�|r-tjdd|�ndS(NiRAis %s s=====s	===== %s s=====(RhRWR:RC(Rtlogphase((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRjYscCs
|jj�S(N(RhRa(R((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytgetLog^scCs~|tjks$tj�tjkrz|d|d�x0tj|�D]}|jd�}||�qFW|dd�ndS(s@Helper which outputs content of the file at HEAVYDEBUG loglevelss---- s ----s
t-iN(R:RCtgetEffectiveLevelR<R@t	fileinputtinputtrstrip(tfnRUtline((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pytdumpFileas$N(R!R"R<RSRJRiRkRoRtRuRRjRwtstaticmethodR:RCR(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyRI�sX				!		(Wt
__author__t
__copyright__t__license__RzR;R<R.R\R�RtRvR1R�RKRZt	cStringIORt	functoolsRRHRRRRtserver.ipdnsRRt
server.mytimeR	tserver.utilsR
tserverRRR!R:R�R�RYRRaR]R_R`RXtputenvR�R�R�tValuesRR7RQRRRyR|R9R1R[t_TextTestResultR�R�R�R�told_TZRzR{RRRtTestCaseRRtreprR2R3RR?R@RiRERGRkt
_org_tearDownRHRIt
pid_exists(((s8/usr/lib/python2.7/site-packages/fail2ban/tests/utils.pyt<module>s�"!		!$,	82		
				O			�
4	

	
	�

Zerion Mini Shell 1.0