o ;s*bˆã@sÐdZdZdZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z dd l mZmZmZmZmZdd lmZdd lmZddl m Z d d „ZGdd„deƒZGdd„de ƒZGdd„de ƒZdS)zSteven Hiscocksz"Copyright (c) 2013 Steven HiscocksÚGPLéNé)ÚLogCaptureTestCaseé)Úprotocol)ÚasyncoreÚRequestHandlerÚloopÚ AsyncServerÚAsyncServerException)ÚUtils)ÚCSocketcGstdƒ‚)Nútest unpickle error©Ú Exception©Úargs©rú?/usr/lib/python3/dist-packages/fail2ban/tests/sockettestcase.pyÚ TestMsgError,src@s$eZdZedffdd„Zdd„ZdS)ÚTestMsgrcCs ||_dS©N©Úunpickle)ÚselfrrrrÚ__init__/s zTestMsg.__init__cCs|jSrr©rrrrÚ __reduce__1szTestMsg.__reduce__N)Ú__name__Ú __module__Ú __qualname__rrrrrrrr.s rcszeZdZ‡fdd„Zdd„Zedd„ƒZddd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Z‡ZS)ÚSocketcsVt |¡tt|ƒ ¡t|ƒ|_t dd¡\}}t  |¡t  |¡||_ d|_ dS)zCall before every test case.z fail2ban.sockz f2b-socketN) rÚsetUpÚsuperr!r ÚserverÚtempfileÚmkstempÚosÚcloseÚremoveÚ sock_nameÚ serverThread)rÚsock_fdr*©Ú __class__rrr"7s     z Socket.setUpcCs&|jr |j ¡| ¡t |¡dS)zCall after every test case.N)r+r$ÚstopÚ_stopServerThreadrÚtearDownrrrrr1Bs zSocket.tearDowncCs|S)zZs z*Socket._stopServerThread..r5)r+r r;r=r>r?rrrErr0Ws  ÿ zSocket._stopServerThreadcCsZ| ¡}|j ¡| ¡| | ¡¡|j ¡| |j ¡¡| tj   |j ¡¡dSr) rAr$r(r0Ú assertFalserBr/r<r'ÚpathÚexistsr*©rr+rrrÚtestStopPerCloseUnexpected^s  z!Socket.testStopPerCloseUnexpectedc Cs4zt|jƒWSty}zWYd}~dSd}~wwr)r r*r)rÚerrrÚ _serverSocketks  €ÿzSocket._serverSocketcCsî| ¡}t |jd¡}gd¢}| | |¡|¡| | tƒgg¡d¡|jdddd| | |¡|¡| ¡| ¡|j   ¡t |jd¡}| | |¡dg¡|j   ¡|  ¡|  | ¡¡|  |j  ¡¡|  tj |j¡¡dS) Nr©ÚAÚtestr2úERROR: test unpickle errorz!PROTO-error: load message failed:rT©ÚallÚSHUTDOWN)rAr r;rMÚ assertEqualÚsendrÚ assertLoggedr(r$Ústop_communicationr/r0rGrBr<r'rHrIr*)rr+ÚclientÚ testMessagerrrÚ testSocketqs"  zSocket.testSocketcsf| ¡}t |jd¡‰dddtjjgg‰tj}zdd„t_|  t d‡‡fdd„¡W|t_dS|t_w) NrrOrPr2cSs| ¡Sr)r(rrrrrF›sz0Socket.testSocketConnectBroken..zreset by peer|Broken pipecsˆjˆtj d¡dS)Nr5)Útimeout)rVr=r>r?r©rYrZrrrFs) rAr r;rMrÚCSPROTOÚENDrÚfound_terminatorÚassertRaisesRegexr)rr+Ú org_handlerrr]rÚtestSocketConnectBroken’s  ÿzSocket.testSocketConnectBrokencCsš| ¡}t |jd¡}gd¢}| | |¡|¡tj}zdd„t_| | |¡d¡W|t_n|t_w|jdddd |j   ¡|  ¡|  |  ¡¡dS) NrrNcSstƒSr)rrrrrrF«sz.Socket.testStopByCommunicate..rQzUnexpected communication errorrTrR)rAr r;rMrUrVrr`rWr$r/r0rGrB)rr+rYrZrbrrrÚtestStopByCommunicate¡s  zSocket.testStopByCommunicatecsttj‰ddi‰‡‡fdd„}z|t_| ¡}| t ‡fdd„tj d¡¡¡Wˆt_nˆt_w|j dd d d dS) NÚcntrrcs,ˆdd7<ˆddkrtdƒ‚ˆ|ŽS)Nreré2ztest errors in poll)Ú RuntimeErrorr©ÚerrÚorg_pollrrÚ_produce_error½s z-Socket.testLoopErrors.._produce_errorcs ˆddkS)Nrerfrr)rirrrFÇs z'Socket.testLoopErrors..r5z1Server connection was closed: test errors in pollú0Too many errors - stop logging connection errorsTrR) rÚpollrAr:r r;r=r>r?rW)rrkr+rrhrÚtestLoopErrors¹s$ ÿzSocket.testLoopErrorscCsxt|jdƒ ¡| t|jj|jd¡| d¡}|j ¡|  ¡|  |  ¡¡|  |j  ¡¡|  t j |j¡¡dS)NÚwFT)Úopenr*r(Ú assertRaisesr r$r8rAr/r0rGrBr<r'rHrIrJrrrÚtestSocketForceÏsÿ  zSocket.testSocketForce)F)rrr r"r1Ú staticmethodr3rAr0rKrMr[rcrdrnrrÚ __classcell__rrr-rr!5s      !r!c@seZdZdd„Zdd„ZdS)Ú ClientMisccs^ddi‰‡fdd„}‡fdd„}t||d|jdd d d d | d ¡|jdddd d dS)Nrercs ˆddkS)Nreé(rr©ÚphaserrÚ_activeäs z,ClientMisc.testErrorsInLoop.._activecs ˆdd7<tdˆdƒ‚)Nrerz test *%d*rrrwrrÚ_pollæsz*ClientMisc.testErrorsInLoop.._poll)Úuse_pollztest *1*z test *10*z test *20*TrRrlz test *21*z test *22*z test *23*)r rWÚassertNotLogged)rryrzrrwrÚtestErrorsInLoopâs    zClientMisc.testErrorsInLoopcCs:tj}ttjdƒt_zt ¡t ¡W|t_dS|t_w)Nro)ÚsysÚstdoutrpr'ÚdevnullrÚprintFormattedÚ printWiki)rÚ saved_stdoutrrrÚtestPrintFormattedAndWikiïs  z$ClientMisc.testPrintFormattedAndWikiN)rrr r}r„rrrrruàs ru)Ú __author__Ú __copyright__Ú __license__r'r~r%r6Útimer=ÚutilsrÚrÚserver.asyncserverrrr r r Ú server.utilsr Úclient.csocketr rÚobjectrr!rurrrrÚs(     ,