o ;s*b@sdZdZdZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z dd l mZmZmZmZmZdd lmZdd lmZddl m Z d d ZGdddeZGddde ZGddde ZdS)zSteven Hiscocksz"Copyright (c) 2013 Steven HiscocksGPLN)LogCaptureTestCase)protocol)asyncoreRequestHandlerloop AsyncServerAsyncServerException)Utils)CSocketcGstd)Ntest unpickle error Exceptionargsr?/usr/lib/python3/dist-packages/fail2ban/tests/sockettestcase.py TestMsgError,src@s$eZdZedffddZddZdS)TestMsgrcCs ||_dSNunpickle)selfrrrr__init__/s zTestMsg.__init__cCs|jSrrrrrr __reduce__1szTestMsg.__reduce__N)__name__ __module__ __qualname__rrrrrrrr.s rcszeZdZfddZddZeddZddd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZZS)SocketcsVt|tt|t||_tdd\}}t |t |||_ d|_ dS)zCall before every test case.z fail2ban.sockz f2b-socketN) rsetUpsuperr!r servertempfilemkstemposcloseremove sock_name serverThread)rsock_fdr* __class__rrr"7s     z Socket.setUpcCs&|jr |j|t|dS)zCall after every test case.N)r+r$stop_stopServerThreadrtearDownrrrrr1Bs 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'pathexistsr*rr+rrrtestStopPerCloseUnexpected^s  z!Socket.testStopPerCloseUnexpectedc Cs4zt|jWSty}zWYd}~dSd}~wwr)r r*r)rerrr _serverSocketks  zSocket._serverSocketcCs|}t|jd}gd}||||||tggd|jdddd|||||||j t|jd}|||dg|j | | || |j | tj|jdS) NrAtestr2ERROR: test unpickle errorz!PROTO-error: load message failed:rTallSHUTDOWN)rAr r;rM assertEqualsendr assertLoggedr(r$stop_communicationr/r0rGrBr<r'rHrIr*)rr+client testMessagerrr testSocketqs"  zSocket.testSocketcsf|}t|jddddtjjggtj}zddt_| t dfddW|t_dS|t_w) NrrOrPr2cSs|Sr)r(rrrrrFsz0Socket.testSocketConnectBroken..zreset by peer|Broken pipecsjtjddS)Nr5)timeout)rVr=r>r?rrYrZrrrFs) rAr r;rMrCSPROTOENDrfound_terminatorassertRaisesRegexr)rr+ org_handlerrr]rtestSocketConnectBrokens  zSocket.testSocketConnectBrokencCs|}t|jd}gd}||||tj}zddt_|||dW|t_n|t_w|jdddd |j | | | dS) NrrNcSstSr)rrrrrrFsz.Socket.testStopByCommunicate..rQzUnexpected communication errorrTrR)rAr r;rMrUrVrr`rWr$r/r0rGrB)rr+rYrZrbrrrtestStopByCommunicates  zSocket.testStopByCommunicatecsttjddifdd}z|t_|}|tfddtjdWt_nt_w|j dd d d dS) Ncntrrcs,dd7<ddkrtd|S)Nrer2ztest errors in poll) RuntimeErrorrerrorg_pollrr_produce_errors z-Socket.testLoopErrors.._produce_errorcs ddkS)Nrerfrr)rirrrFs z'Socket.testLoopErrors..r5z1Server connection was closed: test errors in poll0Too many errors - stop logging connection errorsTrR) rpollrAr:r r;r=r>r?rW)rrkr+rrhrtestLoopErrorss$ zSocket.testLoopErrorscCsxt|jd|t|jj|jd|d}|j| | | | |j | t j|jdS)NwFT)openr*r( assertRaisesr r$r8rAr/r0rGrBr<r'rHrIrJrrrtestSocketForces  zSocket.testSocketForce)F)rrr r"r1 staticmethodr3rAr0rKrMr[rcrdrnrr __classcell__rrr-rr!5s      !r!c@seZdZddZddZdS) ClientMisccs^ddifdd}fdd}t||d|jdd d d d |d |jdddd d dS)Nrercs ddkS)Nre(rrphaserr_actives z,ClientMisc.testErrorsInLoop.._activecs dd7<tdd)Nrerz test *%d*rrrwrr_pollsz*ClientMisc.testErrorsInLoop.._poll)use_pollztest *1*z test *10*z test *20*TrRrlz test *21*z test *22*z test *23*)r rWassertNotLogged)rryrzrrwrtestErrorsInLoops    zClientMisc.testErrorsInLoopcCs:tj}ttjdt_zttW|t_dS|t_w)Nro)sysstdoutrpr'devnullrprintFormatted printWiki)r saved_stdoutrrrtestPrintFormattedAndWikis  z$ClientMisc.testPrintFormattedAndWikiN)rrr r}rrrrrrus ru) __author__ __copyright__ __license__r'r~r%r6timer=utilsrrserver.asyncserverrrr r r server.utilsr client.csocketr robjectrr!rurrrrs(     ,