§
    Ètºfš  ã                   óÌ   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 	 ddlmZ n# e$ r dZY nw xY w G d	„ d
¦  «        Z ee d¦  «         G d„ de
¦  «        ¦   «         ZdS )z-
Tests for L{twisted.internet.epollreactor}.
é    )ÚskipIf©ÚConnectionDone)Ú_ContinuousPolling)ÚClock)ÚTestCase)ÚepollreactorNc                   ó0   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )Ú
DescriptorzF
    Records reads and writes, as if it were a C{FileDescriptor}.
    c                 ó   — g | _         d S ©N)Úevents©Úselfs    úf/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/test/test_epollreactor.pyÚ__init__zDescriptor.__init__   s   € ØˆŒˆˆó    c                 ó   — dS )Né   © r   s    r   ÚfilenozDescriptor.fileno   s   € Øˆqr   c                 ó:   — | j                              d¦  «         d S )NÚread©r   Úappendr   s    r   ÚdoReadzDescriptor.doRead    s   € ØŒ×Ò˜6Ñ"Ô"Ð"Ð"Ð"r   c                 ó:   — | j                              d¦  «         d S )NÚwriter   r   s    r   ÚdoWritezDescriptor.doWrite#   s   € ØŒ×Ò˜7Ñ#Ô#Ð#Ð#Ð#r   c                 ón   — |                      t          ¦  «         | j                             d¦  «         d S )NÚlost)Útrapr   r   r   )r   Úreasons     r   ÚconnectionLostzDescriptor.connectionLost&   s0   € Ø�Š•NÑ#Ô#Ð#ØŒ×Ò˜6Ñ"Ô"Ð"Ð"Ð"r   N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r$   r   r   r   r   r      si   € € € € € ðð ðð ð ðð ð ð#ð #ð #ð$ð $ð $ð#ð #ð #ð #ð #r   r   z(epoll not supported in this environment.c                   ó`   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚContinuousPollingTestsza
    L{_ContinuousPolling} can be used to read and write from C{FileDescriptor}
    objects.
    c                 ó  — t          t          ¦   «         ¦  «        }|                      |j        ¦  «         t	          ¦   «         }|                      |                     |¦  «        ¦  «         |                     |¦  «         |                      |j        ¦  «         |  	                    |j        j
        ¦  «         |                      |j        j        |j        ¦  «         |  	                    |                     |¦  «        ¦  «         dS )zi
        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_addReaderz%ContinuousPollingTests.test_addReader2   óØ   € õ
 $¥E¡G¤GÑ,Ô,ˆØ×Ò˜&œ,Ñ'Ô'Ð'Ý‘”ˆØ×Ò˜×)Ò)¨&Ñ1Ô1Ñ2Ô2Ð2Ø×Ò˜Ñ Ô Ð Ø×Ò˜Vœ\Ñ*Ô*Ð*Ø�Š˜œÔ,Ñ-Ô-Ð-Ø�Š�f”lÔ(¨&¬/Ñ:Ô:Ð:Ø�Š˜×(Ò(¨Ñ0Ô0Ñ1Ô1Ð1Ð1Ð1r   c                 ó  — t          t          ¦   «         ¦  «        }|                      |j        ¦  «         t	          ¦   «         }|                      |                     |¦  «        ¦  «         |                     |¦  «         |                      |j        ¦  «         |  	                    |j        j
        ¦  «         |                      |j        j        |j        ¦  «         |  	                    |                     |¦  «        ¦  «         dS )zi
        Adding a writer when there was previously no writer starts up a
        C{LoopingCall}.
        N)r   r   r,   r-   r.   r/   Ú	isWritingÚ	addWriterr2   r3   r4   r5   r6   r7   ©r   r9   Úwriters      r   Útest_addWriterz%ContinuousPollingTests.test_addWriterA   r<   r   c                 óŠ  — t          t          ¦   «         ¦  «        }t          ¦   «         }|                     |¦  «         |                     |¦  «         |                      |j        ¦  «         |                      |j         	                    ¦   «         g ¦  «         |  
                    |                     |¦  «        ¦  «         dS )z=
        Removing a reader stops the C{LoopingCall}.
        N)r   r   r.   r1   ÚremoveReaderr,   r-   ÚassertEqualr7   ÚgetDelayedCallsr/   r0   r8   s      r   Útest_removeReaderz(ContinuousPollingTests.test_removeReaderP   ó¨   € õ $¥E¡G¤GÑ,Ô,ˆÝ‘”ˆØ×Ò˜Ñ Ô Ð Ø×Ò˜FÑ#Ô#Ð#Ø×Ò˜&œ,Ñ'Ô'Ð'Ø×Ò˜œ×8Ò8Ñ:Ô:¸BÑ?Ô?Ð?Ø×Ò˜×)Ò)¨&Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r   c                 óŠ  — t          t          ¦   «         ¦  «        }t          ¦   «         }|                     |¦  «         |                     |¦  «         |                      |j        ¦  «         |                      |j         	                    ¦   «         g ¦  «         |  
                    |                     |¦  «        ¦  «         dS )z=
        Removing a writer stops the C{LoopingCall}.
        N)r   r   r.   r?   ÚremoveWriterr,   r-   rE   r7   rF   r/   r>   r@   s      r   Útest_removeWriterz(ContinuousPollingTests.test_removeWriter\   rH   r   c                 óÀ   — t          t          ¦   «         ¦  «        }|                     t          ¦   «         ¦  «         |                     t          ¦   «         ¦  «         dS )zM
        Removing unknown readers and writers silently does nothing.
        N)r   r   rJ   r.   rD   )r   r9   s     r   Útest_removeUnknownz)ContinuousPollingTests.test_removeUnknownh   sK   € õ $¥E¡G¤GÑ,Ô,ˆØ×Ò�F™HœHÑ%Ô%Ð%Ø×Ò�F™HœHÑ%Ô%Ð%Ð%Ð%r   c                 óô  — t          t          ¦   «         ¦  «        }t          ¦   «         }|                     |¦  «         |                      |j        ¦  «         |                     t          ¦   «         ¦  «         |                      |j        ¦  «         |                     t          ¦   «         ¦  «         |                      |j        ¦  «         |                     t          ¦   «         ¦  «         |                     |¦  «         |                      |j        ¦  «         |                      |j        j	        ¦  «         |  
                    t          |j                             ¦   «         ¦  «        d¦  «         dS )za
        Adding multiple readers and writers results in a single
        C{LoopingCall}.
        r   N)r   r   r.   r?   r2   r-   r1   rJ   r3   r4   rE   Úlenr7   rF   r@   s      r   Útest_multipleReadersAndWritersz5ContinuousPollingTests.test_multipleReadersAndWritersp   s/  € õ
 $¥E¡G¤GÑ,Ô,ˆÝ‘”ˆØ×Ò˜Ñ Ô Ð Ø×Ò˜Vœ\Ñ*Ô*Ð*Ø×Ò�™œÑ"Ô"Ð"Ø×Ò˜Vœ\Ñ*Ô*Ð*Ø×Ò�™œÑ"Ô"Ð"Ø×Ò˜Vœ\Ñ*Ô*Ð*Ø×Ò�™œÑ"Ô"Ð"Ø×Ò˜FÑ#Ô#Ð#Ø×Ò˜Vœ\Ñ*Ô*Ð*Ø�Š˜œÔ,Ñ-Ô-Ð-Ø×Ò�˜Vœ_×<Ò<Ñ>Ô>Ñ?Ô?ÀÑCÔCÐCÐCÐCr   c                 óæ  — t          ¦   «         }t          |¦  «        }t          ¦   «         }|                     |¦  «         |                      |j        g ¦  «         |                     d¦  «         |                      |j        dg¦  «         |                     d¦  «         |                      |j        ddg¦  «         |                     d¦  «         |                      |j        g d¢¦  «         dS )za
        Adding a reader causes its C{doRead} to be called every 1
        milliseconds.
        gñhãˆµøä>r   )r   r   r   N)r   r   r   r1   rE   r   Úadvance©r   Úreactorr9   Údescs       r   Útest_readerPollingz)ContinuousPollingTests.test_readerPollingƒ   sá   € õ
 ‘'”'ˆÝ# GÑ,Ô,ˆÝ‰|Œ|ˆØ×Ò˜ÑÔÐØ×Ò˜œ bÑ)Ô)Ð)Ø�Š˜Ñ Ô Ð Ø×Ò˜œ v hÑ/Ô/Ð/Ø�Š˜Ñ Ô Ð Ø×Ò˜œ v¨vÐ&6Ñ7Ô7Ð7Ø�Š˜Ñ Ô Ð Ø×Ò˜œÐ&>Ð&>Ð&>Ñ?Ô?Ð?Ð?Ð?r   c                 óæ  — t          ¦   «         }t          |¦  «        }t          ¦   «         }|                     |¦  «         |                      |j        g ¦  «         |                     d¦  «         |                      |j        dg¦  «         |                     d¦  «         |                      |j        ddg¦  «         |                     d¦  «         |                      |j        g d¢¦  «         dS )zb
        Adding a writer causes its C{doWrite} to be called every 1
        milliseconds.
        çü©ñÒMbP?r   )r   r   r   N)r   r   r   r?   rE   r   rR   rS   s       r   Útest_writerPollingz)ContinuousPollingTests.test_writerPolling”   sá   € õ
 ‘'”'ˆÝ# GÑ,Ô,ˆÝ‰|Œ|ˆØ×Ò˜ÑÔÐØ×Ò˜œ bÑ)Ô)Ð)Ø�Š˜ÑÔÐØ×Ò˜œ w iÑ0Ô0Ð0Ø�Š˜ÑÔÐØ×Ò˜œ w°Ð&8Ñ9Ô9Ð9Ø�Š˜ÑÔÐØ×Ò˜œÐ&AÐ&AÐ&AÑBÔBÐBÐBÐBr   c                 ó.  — t          ¦   «         }t          |¦  «        }t          ¦   «         }d„ |_        |                     |¦  «         |                      |j        g ¦  «         |                     d¦  «         |                      |j        dg¦  «         dS )zu
        If a C{doRead} returns a value indicating disconnection,
        C{connectionLost} is called on it.
        c                  ó   — t          ¦   «         S r   r   r   r   r   ú<lambda>zBContinuousPollingTests.test_connectionLostOnRead.<locals>.<lambda>­   s   € �nÑ.Ô.€ r   rX   r!   N)r   r   r   r   r1   rE   r   rR   rS   s       r   Útest_connectionLostOnReadz0ContinuousPollingTests.test_connectionLostOnRead¥   s‹   € õ
 ‘'”'ˆÝ# GÑ,Ô,ˆÝ‰|Œ|ˆØ.Ð.ˆŒØ×Ò˜ÑÔÐØ×Ò˜œ bÑ)Ô)Ð)Ø�Š˜ÑÔÐØ×Ò˜œ v hÑ/Ô/Ð/Ð/Ð/r   c                 ó.  — t          ¦   «         }t          |¦  «        }t          ¦   «         }d„ |_        |                     |¦  «         |                      |j        g ¦  «         |                     d¦  «         |                      |j        dg¦  «         dS )zv
        If a C{doWrite} returns a value indicating disconnection,
        C{connectionLost} is called on it.
        c                  ó   — t          ¦   «         S r   r   r   r   r   r\   zCContinuousPollingTests.test_connectionLostOnWrite.<locals>.<lambda>»   s   € �~Ñ/Ô/€ r   rX   r!   N)r   r   r   r   r?   rE   r   rR   rS   s       r   Útest_connectionLostOnWritez1ContinuousPollingTests.test_connectionLostOnWrite³   s‹   € õ
 ‘'”'ˆÝ# GÑ,Ô,ˆÝ‰|Œ|ˆØ/Ð/ˆŒØ×Ò˜ÑÔÐØ×Ò˜œ bÑ)Ô)Ð)Ø�Š˜ÑÔÐØ×Ò˜œ v hÑ/Ô/Ð/Ð/Ð/r   c                 ó’  — t          t          ¦   «         ¦  «        }t          ¦   «         }t          ¦   «         }t          ¦   «         }|                     |¦  «         |                     |¦  «         |                     |¦  «         |                     |¦  «         |                     ¦   «         }|                      |                     ¦   «         g ¦  «         |                      |                     ¦   «         g ¦  «         |                      t          |¦  «        d¦  «         |                      t          |¦  «        |||h¦  «         dS )zv
        L{_ContinuousPolling.removeAll} removes all descriptors and returns
        the readers and writers.
        é   N)r   r   r.   r1   r?   Ú	removeAllrE   Ú
getReadersÚ
getWritersrO   Úset)r   r9   r:   rA   ÚbothÚremoveds         r   Útest_removeAllz%ContinuousPollingTests.test_removeAllÁ   s  € õ
 $¥E¡G¤GÑ,Ô,ˆÝ‘”ˆÝ‘”ˆÝ‰xŒxˆØ×Ò˜Ñ Ô Ð Ø×Ò˜ÑÔÐØ×Ò˜Ñ Ô Ð Ø×Ò˜ÑÔÐØ×"Ò"Ñ$Ô$ˆØ×Ò˜×*Ò*Ñ,Ô,¨bÑ1Ô1Ð1Ø×Ò˜×*Ò*Ñ,Ô,¨bÑ1Ô1Ð1Ø×Ò�˜W™œ qÑ)Ô)Ð)Ø×Ò�˜W™œ¨°¸Ð'=Ñ>Ô>Ð>Ð>Ð>r   c                 óÒ   — t          t          ¦   «         ¦  «        }t          ¦   «         }|                     |¦  «         |                      ||                     ¦   «         ¦  «         dS )zb
        L{_ContinuousPolling.getReaders} returns a list of the read
        descriptors.
        N)r   r   r.   r1   ÚassertInrd   r8   s      r   Útest_getReadersz&ContinuousPollingTests.test_getReadersÔ   óX   € õ
 $¥E¡G¤GÑ,Ô,ˆÝ‘”ˆØ×Ò˜Ñ Ô Ð Ø�Š�f˜f×/Ò/Ñ1Ô1Ñ2Ô2Ð2Ð2Ð2r   c                 óÒ   — t          t          ¦   «         ¦  «        }t          ¦   «         }|                     |¦  «         |                      ||                     ¦   «         ¦  «         dS )zc
        L{_ContinuousPolling.getWriters} returns a list of the write
        descriptors.
        N)r   r   r.   r?   rk   re   r@   s      r   Útest_getWritersz&ContinuousPollingTests.test_getWritersÞ   rm   r   N)r%   r&   r'   r(   r;   rB   rG   rK   rM   rP   rV   rY   r]   r`   ri   rl   ro   r   r   r   r*   r*   +   sê   € € € € € ðð ð
2ð 2ð 2ð2ð 2ð 2ð
3ð 
3ð 
3ð
3ð 
3ð 
3ð&ð &ð &ðDð Dð Dð&@ð @ð @ð"Cð Cð Cð"0ð 0ð 0ð0ð 0ð 0ð?ð ?ð ?ð&3ð 3ð 3ð3ð 3ð 3ð 3ð 3r   r*   )r(   Úunittestr   Útwisted.internet.errorr   Útwisted.internet.posixbaser   Útwisted.internet.taskr   Útwisted.trial.unittestr   Útwisted.internetr	   ÚImportErrorr   r*   r   r   r   ú<module>rw      s-  ððð ð Ð Ð Ð Ð Ð à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø +Ð +Ð +Ð +Ð +Ð +ðØ-Ð-Ð-Ð-Ð-Ð-Ð-øØð ð ð Ø€L€L€Lðøøøð#ð #ð #ð #ð #ñ #ô #ð #ð, €ˆLÐÐDÑEÔEðz3ð z3ð z3ð z3ð z3˜Xñ z3ô z3ñ FÔEðz3ð z3ð z3s   ¢) ©3²3