+
    üÐjš  ã                   ó¾   € R t ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RI	H
t
  ^ RIHt  ! R R	4      t]! ]'       * R
4       ! R R]
4      4       tR#   ] d    Rt L3i ; i)z-
Tests for L{twisted.internet.epollreactor}.
)ÚskipIf©ÚConnectionDone)Ú_ContinuousPolling)ÚClock)ÚTestCase)ÚepollreactorNc                   óB   a € ] tR t^t o RtR tR tR tR tR t	Rt
V tR# )	Ú
Descriptorz>
Records reads and writes, as if it were a C{FileDescriptor}.
c                ó   € . V n         R # ©N©Úevents©Úselfs   &ÚI/usr/lib/python3/dist-packages/twisted/internet/test/test_epollreactor.pyÚ__init__ÚDescriptor.__init__   s	   € ØˆŽó    c                ó   € ^# )é   © r   s   &r   ÚfilenoÚDescriptor.fileno   s   € Ùr   c                ó<   € V P                   P                  R 4       R# )ÚreadN©r   Úappendr   s   &r   ÚdoReadÚDescriptor.doRead    s   € Ø�‰×Ñ˜6Ö"r   c                ó<   € V P                   P                  R 4       R# )ÚwriteNr   r   s   &r   ÚdoWriteÚDescriptor.doWrite#   s   € Ø�‰×Ñ˜7Ö#r   c                óf   € VP                  \        4       V P                  P                  R 4       R# )ÚlostN)Útrapr   r   r   )r   Úreasons   &&r   ÚconnectionLostÚDescriptor.connectionLost&   s    € Ø�‰”NÔ#Ø�‰×Ñ˜6Ö"r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   r"   r(   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r
   r
      s(   ø‡ € ñòòò#ò$÷#ð #r   r
   z(epoll not supported in this environment.c                   ór   a € ] tR t^+t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tR tRtV tR# )ÚContinuousPollingTestszU
L{_ContinuousPolling} can be used to read and write from C{FileDescriptor}
objects.
c                óø  € \        \        4       4      pV P                  VP                  4       \	        4       pV P                  VP                  V4      4       VP                  V4       V P                  VP                  4       V P                  VP                  P                  4       V P                  VP                  P                  VP                  4       V P                  VP                  V4      4       R# )zQ
Adding a reader when there was previously no reader starts up a
C{LoopingCall}.
N)r   r   ÚassertIsNoneÚ_loopÚobjectÚassertFalseÚ	isReadingÚ	addReaderÚassertIsNotNoneÚ
assertTrueÚrunningÚassertIsÚclockÚ_reactor©r   ÚpollerÚreaders   &  r   Útest_addReaderÚ%ContinuousPollingTests.test_addReader2   ó«   € ô
 $¤E£GÓ,ˆØ×Ñ˜&Ÿ,™,Ô'Ü“ˆØ×Ñ˜×)Ñ)¨&Ó1Ô2Ø×Ñ˜Ô Ø×Ñ˜VŸ\™\Ô*Ø�‰˜Ÿ™×,Ñ,Ô-Ø�‰�f—l‘l×(Ñ(¨&¯/©/Ô:Ø�‰˜×(Ñ(¨Ó0Ö1r   c                óø  € \        \        4       4      pV P                  VP                  4       \	        4       pV P                  VP                  V4      4       VP                  V4       V P                  VP                  4       V P                  VP                  P                  4       V P                  VP                  P                  VP                  4       V P                  VP                  V4      4       R# )zQ
Adding a writer when there was previously no writer starts up a
C{LoopingCall}.
N)r   r   r6   r7   r8   r9   Ú	isWritingÚ	addWriterr<   r=   r>   r?   r@   rA   ©r   rC   Úwriters   &  r   Útest_addWriterÚ%ContinuousPollingTests.test_addWriterA   rG   r   c                óN  € \        \        4       4      p\        4       pVP                  V4       VP	                  V4       V P                  VP                  4       V P                  VP                  P                  4       . 4       V P                  VP                  V4      4       R# )z-
Removing a reader stops the C{LoopingCall}.
N)r   r   r8   r;   ÚremoveReaderr6   r7   ÚassertEqualrA   ÚgetDelayedCallsr9   r:   rB   s   &  r   Útest_removeReaderÚ(ContinuousPollingTests.test_removeReaderP   ó{   € ô $¤E£GÓ,ˆÜ“ˆØ×Ñ˜Ô Ø×Ñ˜FÔ#Ø×Ñ˜&Ÿ,™,Ô'Ø×Ñ˜Ÿ™×8Ñ8Ó:¸BÔ?Ø×Ñ˜×)Ñ)¨&Ó1Ö2r   c                óN  € \        \        4       4      p\        4       pVP                  V4       VP	                  V4       V P                  VP                  4       V P                  VP                  P                  4       . 4       V P                  VP                  V4      4       R# )z-
Removing a writer stops the C{LoopingCall}.
N)r   r   r8   rJ   ÚremoveWriterr6   r7   rQ   rA   rR   r9   rI   rK   s   &  r   Útest_removeWriterÚ(ContinuousPollingTests.test_removeWriter\   rU   r   c                ó�   € \        \        4       4      pVP                  \        4       4       VP	                  \        4       4       R# )z=
Removing unknown readers and writers silently does nothing.
N)r   r   rW   r8   rP   )r   rC   s   & r   Útest_removeUnknownÚ)ContinuousPollingTests.test_removeUnknownh   s0   € ô $¤E£GÓ,ˆØ×ÑœF›HÔ%Ø×ÑœF›HÖ%r   c                ó¢  € \        \        4       4      p\        4       pVP                  V4       V P	                  VP
                  4       VP                  \        4       4       V P	                  VP
                  4       VP                  \        4       4       V P	                  VP
                  4       VP                  \        4       4       VP                  V4       V P	                  VP
                  4       V P                  VP
                  P                  4       V P                  \        VP                  P                  4       4      ^4       R# )zI
Adding multiple readers and writers results in a single
C{LoopingCall}.
N)r   r   r8   rJ   r<   r7   r;   rW   r=   r>   rQ   ÚlenrA   rR   rK   s   &  r   Útest_multipleReadersAndWritersÚ5ContinuousPollingTests.test_multipleReadersAndWritersp   sã   € ô
 $¤E£GÓ,ˆÜ“ˆØ×Ñ˜Ô Ø×Ñ˜VŸ\™\Ô*Ø×Ñœ›Ô"Ø×Ñ˜VŸ\™\Ô*Ø×Ñœ›Ô"Ø×Ñ˜VŸ\™\Ô*Ø×Ñœ›Ô"Ø×Ñ˜FÔ#Ø×Ñ˜VŸ\™\Ô*Ø�‰˜Ÿ™×,Ñ,Ô-Ø×Ñœ˜VŸ_™_×<Ñ<Ó>Ó?ÀÖCr   c                ó¶  € \        4       p\        V4      p\        4       pVP                  V4       V P	                  VP
                  . 4       VP                  R4       V P	                  VP
                  R.4       VP                  R4       V P	                  VP
                  RR.4       VP                  R4       V P	                  VP
                  . RO4       R# )zI
Adding a reader causes its C{doRead} to be called every 1
milliseconds.
gñhãˆµøä>r   N)r   r   r   )r   r   r
   r;   rQ   r   Úadvance©r   ÚreactorrC   Údescs   &   r   Útest_readerPollingÚ)ContinuousPollingTests.test_readerPollingƒ   s¦   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜Ô Ø×Ñ˜Ÿ™ v hÔ/Ø�‰˜Ô Ø×Ñ˜Ÿ™ v¨vÐ&6Ô7Ø�‰˜Ô Ø×Ñ˜Ÿ™Ò&>Ö?r   c                ó¶  € \        4       p\        V4      p\        4       pVP                  V4       V P	                  VP
                  . 4       VP                  R4       V P	                  VP
                  R.4       VP                  R4       V P	                  VP
                  RR.4       VP                  R4       V P	                  VP
                  . RO4       R# )zJ
Adding a writer causes its C{doWrite} to be called every 1
milliseconds.
çü©ñÒMbP?r!   N)r!   r!   r!   )r   r   r
   rJ   rQ   r   rb   rc   s   &   r   Útest_writerPollingÚ)ContinuousPollingTests.test_writerPolling”   s¦   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜ÔØ×Ñ˜Ÿ™ w iÔ0Ø�‰˜ÔØ×Ñ˜Ÿ™ w°Ð&8Ô9Ø�‰˜ÔØ×Ñ˜Ÿ™Ò&AÖBr   c                ó
  € \        4       p\        V4      p\        4       pR Vn        VP	                  V4       V P                  VP                  . 4       VP                  R4       V P                  VP                  R.4       R# )z]
If a C{doRead} returns a value indicating disconnection,
C{connectionLost} is called on it.
c                  ó   € \        4       # r   r   r   r   r   Ú<lambda>ÚBContinuousPollingTests.test_connectionLostOnRead.<locals>.<lambda>­   s   € œnÔ.r   ri   r%   N)r   r   r
   r   r;   rQ   r   rb   rc   s   &   r   Útest_connectionLostOnReadÚ0ContinuousPollingTests.test_connectionLostOnRead¥   sg   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆÙ.ˆŒØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜ÔØ×Ñ˜Ÿ™ v hÖ/r   c                ó
  € \        4       p\        V4      p\        4       pR Vn        VP	                  V4       V P                  VP                  . 4       VP                  R4       V P                  VP                  R.4       R# )z^
If a C{doWrite} returns a value indicating disconnection,
C{connectionLost} is called on it.
c                  ó   € \        4       # r   r   r   r   r   rn   ÚCContinuousPollingTests.test_connectionLostOnWrite.<locals>.<lambda>»   s   € œ~Ô/r   ri   r%   N)r   r   r
   r"   rJ   rQ   r   rb   rc   s   &   r   Útest_connectionLostOnWriteÚ1ContinuousPollingTests.test_connectionLostOnWrite³   sg   € ô
 “'ˆÜ# GÓ,ˆÜ‹|ˆÙ/ˆŒØ×Ñ˜ÔØ×Ñ˜Ÿ™ bÔ)Ø�‰˜ÔØ×Ñ˜Ÿ™ v hÖ/r   c                ó   € \        \        4       4      p\        4       p\        4       p\        4       pVP                  V4       VP                  V4       VP	                  V4       VP	                  V4       VP                  4       pV P                  VP                  4       . 4       V P                  VP                  4       . 4       V P                  \        V4      ^4       V P                  \        V4      W#V04       R# )z^
L{_ContinuousPolling.removeAll} removes all descriptors and returns
the readers and writers.
N)r   r   r8   r;   rJ   Ú	removeAllrQ   Ú
getReadersÚ
getWritersr^   Úset)r   rC   rD   rL   ÚbothÚremoveds   &     r   Útest_removeAllÚ%ContinuousPollingTests.test_removeAllÁ   sÊ   € ô
 $¤E£GÓ,ˆÜ“ˆÜ“ˆÜ‹xˆØ×Ñ˜Ô Ø×Ñ˜ÔØ×Ñ˜Ô Ø×Ñ˜ÔØ×"Ñ"Ó$ˆØ×Ñ˜×*Ñ*Ó,¨bÔ1Ø×Ñ˜×*Ñ*Ó,¨bÔ1Ø×Ñœ˜W› qÔ)Ø×Ñœ˜W›¨¸Ð'=Ö>r   c                ó    € \        \        4       4      p\        4       pVP                  V4       V P	                  W!P                  4       4       R# )zJ
L{_ContinuousPolling.getReaders} returns a list of the read
descriptors.
N)r   r   r8   r;   ÚassertInry   rB   s   &  r   Útest_getReadersÚ&ContinuousPollingTests.test_getReadersÔ   ó:   € ô
 $¤E£GÓ,ˆÜ“ˆØ×Ñ˜Ô Ø�‰�f×/Ñ/Ó1Ö2r   c                ó    € \        \        4       4      p\        4       pVP                  V4       V P	                  W!P                  4       4       R# )zK
L{_ContinuousPolling.getWriters} returns a list of the write
descriptors.
N)r   r   r8   rJ   r�   rz   rK   s   &  r   Útest_getWritersÚ&ContinuousPollingTests.test_getWritersÞ   r„   r   r   N)r*   r+   r,   r-   r.   rE   rM   rS   rX   r[   r_   rf   rj   rp   ru   r~   r‚   r†   r/   r0   r1   s   @r   r4   r4   +   sS   ø‡ € ñò
2ò2ò
3ò
3ò&òDò&@ò"Cò"0ò0ò?ò&3÷3ð 3r   r4   )r.   Úunittestr   Útwisted.internet.errorr   Útwisted.internet.posixbaser   Útwisted.internet.taskr   Útwisted.trial.unittestr   Útwisted.internetr   ÚImportErrorr
   r4   r   r   r   Ú<module>r�      sm   ðñõ å 1Ý 9Ý 'Ý +ðÝ-÷
#ñ #ñ, ˆLÔÐDÓEôz3˜Xó z3ó Fòz3øð7 ô Ø‚Lðús   ¢A Á	AÁA