
    h0                     z   S SS r SSKJr  SSKJr   " S S5      r " S S	5      r " S
 S\5      r " S S\R                  5      r	 " S S5      r
 " S S5      r " S S\
\R                  5      r " S S\
\R                  5      r " S S\\R                  5      r " S S\\R                  5      r " S S\R                  5      r " S S\R                  5      r " S S5      r " S  S!\\R                  5      r " S" S#\\R                  5      r " S$ S%\R                  5      r " S& S'\R                  5      rg())z$Revision: 1.5 $       )pcp)unittestc                   *    \ rS rSrSrS rS rS rSrg)DummyTransport"   z A dumb transport to wrap around.c                     / U l         g N_writesselfs    \/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/test/test_pcp.py__init__DummyTransport.__init__%   s	        c                 :    U R                   R                  U5        g r   )r   appendr   datas     r   writeDummyTransport.write(   s    D!r   c                 8    SR                  U R                  5      $ )N )joinr   r   s    r   getvalueDummyTransport.getvalue+   s    wwt||$$r   r   N)	__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes__ r   r   r   r   "   s    *"%r   r   c                   8    \ rS rSrSrSrSrS rS rS r	S r
Srg)	DummyProducer/   Fc                     Xl         g r   )consumer)r   r*   s     r   r   DummyProducer.__init__4   s     r   c                      SU l         SU l        g )NTF)resumedpausedr   s    r   resumeProducingDummyProducer.resumeProducing7   s    r   c                     SU l         g NT)r.   r   s    r   pauseProducingDummyProducer.pauseProducing;   s	    r   c                     SU l         g r2   )stoppedr   s    r   stopProducingDummyProducer.stopProducing>   s	    r   )r*   r.   r-   r6   N)r   r    r!   r"   r-   r6   r.   r   r/   r3   r7   r$   r%   r   r   r'   r'   /   s%    GGF!r   r'   c                   2    \ rS rSrSrSrSrS rS rS r	Sr
g)	DummyConsumerB   NFTc                     X4U l         g r   )producer)r   r=   	streamings      r   registerProducerDummyConsumer.registerProducerG   s    !-r   c                     SU l         g r2   )unregisteredr   s    r   unregisterProducer DummyConsumer.unregisterProducerJ   s
     r   c                     SU l         g r2   )finishedr   s    r   finishDummyConsumer.finishM   s	    r   )rF   r=   rB   )r   r    r!   r"   r=   rF   rB   r?   rC   rG   r$   r%   r   r   r:   r:   B   s     HHL.!r   r:   c                   8    \ rS rSr\R
                  rS rS rSr	g)TransportInterfaceTestsQ   c                 b    [        5       U l        U R                  U R                  5      U l        g r   )r:   
underlying
proxyClass	transportr   s    r   setUpTransportInterfaceTests.setUpT   s    '/9r   c                 :    U R                   R                  S5        g Nz
some bytes)rO   r   r   s    r   	testWrite!TransportInterfaceTests.testWriteX   s    \*r   )rO   rM   N)
r   r    r!   r"   r   BasicProducerConsumerProxyrN   rP   rT   r$   r%   r   r   rJ   rJ   Q   s    //J:+r   rJ   c                   0    \ rS rSrSrS rS rS rS rSr	g)	ConsumerInterfaceTest\   zTest ProducerConsumerProxy as a Consumer.

Normally we have ProducingServer -> ConsumingTransport.

If I am to go between (Server -> Shaper -> Transport), I have to
play the role of Consumer convincingly for the ProducingServer.
c                     [        5       U l        U R                  U R                  5      U l        [	        U R                  5      U l        g r   )r:   rM   rN   r*   r'   r=   r   s    r   rP   ConsumerInterfaceTest.setUpe   s/    '/8%dmm4r   c                     U R                   R                  U R                  S5        U R                  U R                  R                  5        g r2   )r*   r?   r=   assertFalser-   r   s    r   testRegisterPush&ConsumerInterfaceTest.testRegisterPushj   s2    &&t}}d;../r   c                 $   U R                   R                  U R                  S5        U R                   R                  5         SU R                  l        U R                   R                  5         U R                  U R                  R                  5        g NF)r*   r?   r=   rC   r-   r/   r]   r   s    r   testUnregister$ConsumerInterfaceTest.testUnregisterv   s`    &&t}}e<((*
 !&%%'../r   c                 $   U R                   R                  U R                  S5        U R                   R                  5         SU R                  l        U R                   R                  5         U R                  U R                  R                  5        g ra   )r*   r?   r=   rG   r-   r/   r]   r   s    r   
testFinish ConsumerInterfaceTest.testFinish   s^    &&t}}e< %%%'../r   )r*   r=   rM   N)
r   r    r!   r"   r#   rP   r^   rb   re   r$   r%   r   r   rX   rX   \   s    5
0	00r   rX   c                   B    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
rg)ProducerInterfaceTest   zTest ProducerConsumerProxy as a Producer.

Normally we have ProducingServer -> ConsumingTransport.

If I am to go between (Server -> Shaper -> Transport), I have to
play the role of Producer convincingly for the ConsumingTransport.
c                 b    [        5       U l        U R                  U R                  5      U l        g r   )r:   r*   rN   r=   r   s    r   rP   ProducerInterfaceTest.setUp   s    %6r   c                 j    U R                  U R                  R                  S   U R                  5        g )Nr   )assertEqualr*   r=   r   s    r   testRegistersProducer+ProducerInterfaceTest.testRegistersProducer   s%    //2DMMBr   c                     U R                   R                  5         U R                   R                  S5        U R                  U R                  R                  5       S5        g )Nyakkity yakz*Paused producer should not have sent data.)r=   r3   r   r]   r*   r   r   s    r   	testPauseProducerInterfaceTest.testPause   sE    $$&M*MM""$&R	
r   c                     U R                   R                  5         U R                   R                  5         U R                   R                  S5        U R	                  U R
                  R                  5       S5        g )Nrq   )r=   r3   r/   r   rm   r*   r   r   s    r   
testResume ProducerInterfaceTest.testResume   sQ    $$&%%'M*//1=Ar   c                     U R                   R                  5         U R                   R                  5         U R                  [	        U R
                  R                  5      SS5        g )Nr   z Resume triggered an empty write.)r=   r3   r/   rm   lenr*   r   r   s    r   testResumeNoEmptyWrite,ProducerInterfaceTest.testResumeNoEmptyWrite   sG    $$&%%'%%&+M	
r   c                     U R                   R                  5         U R                   R                  S5        U R                   R                  5         U R	                  U R
                  R                  5       S5        g )Nzbuffer this)r=   r3   r   r/   rm   r*   r   r   s    r   testResumeBuffer&ProducerInterfaceTest.testResumeBuffer   sQ    $$&M*%%'//1=Ar   c                     U R                   R                  5         U R                   R                  S5        U R                  U R                  R                  5       S5        g )Nrq   z+Stopped producer should not have sent data.)r=   r7   r   r]   r*   r   r   s    r   testStopProducerInterfaceTest.testStop   sE    ##%M*MM""$&S	
r   )r*   r=   N)r   r    r!   r"   r#   rP   rn   rr   ru   ry   r|   r   r$   r%   r   r   rh   rh      s-    7C
B
B
r   rh   c                   ,    \ rS rSr\R
                  rSrg)PCP_ConsumerInterfaceTests   r%   Nr   r    r!   r"   r   rV   rN   r$   r%   r   r   r   r          //Jr   r   c                   ,    \ rS rSr\R
                  rSrg)PCPII_ConsumerInterfaceTests   r%   Nr   r    r!   r"   r   ProducerConsumerProxyrN   r$   r%   r   r   r   r          **Jr   r   c                   ,    \ rS rSr\R
                  rSrg)PCP_ProducerInterfaceTests   r%   Nr   r%   r   r   r   r      r   r   r   c                   ,    \ rS rSr\R
                  rSrg)PCPII_ProducerInterfaceTests   r%   Nr   r%   r   r   r   r      r   r   r   c                   <    \ rS rSrSr\R                  rS rS r	Sr
g)ProducerProxyTests   zAProducer methods on me should be relayed to the Producer I proxy.c                     U R                  S 5      U l        [        U R                  5      U l        U R                  R	                  U R                  S5        g r2   )rN   proxyr'   parentProducerr?   r   s    r   rP   ProducerProxyTests.setUp   s=    __T*
+DJJ7

##D$7$7>r   c                     U R                   R                  5         U R                  U R                  R                  5        g r   )r   r7   
assertTruer   r6   r   s    r   r   ProducerProxyTests.testStop   s*    

  "++334r   )r   r   N)r   r    r!   r"   r#   r   rV   rN   rP   r   r$   r%   r   r   r   r      s    K//J?
5r   r   c                   H    \ rS rSrSr\R                  rS rS r	S r
S rSrg)	ConsumerProxyTests   zAConsumer methods on me should be relayed to the Consumer I proxy.c                 b    [        5       U l        U R                  U R                  5      U l        g r   )r:   rM   rN   r*   r   s    r   rP   ConsumerProxyTests.setUp   s    '/8r   c                     U R                   R                  S5        U R                  U R                  R	                  5       S5        g rS   )r*   r   rm   rM   r   r   s    r   rT   ConsumerProxyTests.testWrite   s1    L)113\Br   c                     U R                   R                  5         U R                  U R                  R                  5        g r   )r*   rG   r   rM   rF   r   s    r   re   ConsumerProxyTests.testFinish   s(    001r   c                     U R                   R                  5         U R                  U R                  R                  5        g r   )r*   rC   r   rM   rB   r   s    r   rb   !ConsumerProxyTests.testUnregister   s(    ((*445r   )r*   rM   N)r   r    r!   r"   r#   r   rV   rN   rP   rT   re   rb   r$   r%   r   r   r   r      s%    K//J9C
26r   r   c                   2    \ rS rSrS rS rS rS rS rSr	g)	PullProducerTest   c                     [        5       U l        U R                  U R                  5      U l        [	        U R                  5      U l        U R                  R                  U R
                  S5        g r2   )r:   rM   rN   r   r'   r   r?   r   s    r   rP   PullProducerTest.setUp   sJ    '/__T__5
+DJJ7

##D$7$7>r   c                     U R                   R                  S5        U R                  U R                  R	                  5       S5        g )Nhelloz+Pulling Consumer got data before it pulled.)r   r   r]   rM   r   r   s    r   testHoldWritesPullProducerTest.testHoldWrites   s5    

!OO$$&(U	
r   c                     U R                   R                  S5        U R                   R                  5         U R                  U R                  R                  5       S5        g )Nr   )r   r   r/   rm   rM   r   r   s    r   testPullPullProducerTest.testPull   sA    

!

""$113W=r   c                 d   U R                   R                  S5        U R                   R                  S5        U R                   R                  5         [        U R                  R
                  5      nU R                  USSU4-  5        U R                  U R                  R                  5       S5        g )Nzhello sunshine   z(Pull resulted in %d writes instead of 1.zhello sunshine)r   r   r/   rx   rM   r   rm   r   )r   nwritess     r   testMergeWrites PullProducerTest.testMergeWrites  s    

"

$

""$doo--.QE
R	
 	1135EFr   c                     U R                   R                  5         U R                   R                  S5        U R                  U R                  R                  5       S5        g )Nr   )r   r/   r   rm   rM   r   r   s    r   testLateWritePullProducerTest.testLateWrite  sA    

""$

 113V<r   r   r   rM   N)
r   r    r!   r"   rP   r   r   r   r   r$   r%   r   r   r   r      s    ?
>
G=r   r   c                   >    \ rS rSr " S S\R
                  5      rSrg)PCP_PullProducerTestsi  c                       \ rS rSrSrSrg) PCP_PullProducerTests.proxyClassi  Fr%   Nr   r    r!   r"   iAmStreamingr$   r%   r   r   rN   r         r   rN   r%   Nr   r%   r   r   r   r     s    S33 r   r   c                   >    \ rS rSr " S S\R
                  5      rSrg)PCPII_PullProducerTestsi  c                       \ rS rSrSrSrg)"PCPII_PullProducerTests.proxyClassi  Fr%   Nr   r%   r   r   rN   r     r   r   rN   r%   Nr   r%   r   r   r   r     s    S.. r   r   c                   T    \ rS rSrSr\R                  rS rS r	S r
S rS rS rS	rg
)BufferedConsumerTestsi$  z=As a consumer, ask the producer to pause after too much data.c                    [        5       U l        U R                  U R                  5      U l        SU R                  l        [        U R                  5      U l        U R                  R                  U R                  S5        g )Nd   Tr:   rM   rN   r   
bufferSizer'   r   r?   r   s    r   rP   BufferedConsumerTests.setUp)  sV    '/__T__5
 #

+DJJ7

##D$7$7>r   c                     U R                   R                  U R                  S5        U R                  U R                  R                  5        g ra   )r   r?   r   r   r-   r   s    r   testRegisterPull&BufferedConsumerTests.testRegisterPull1  s4    

##D$7$7?++334r   c                     U R                   R                  5         U R                  U R                  R                  5        g r   )r   r3   r]   r   r.   r   s    r   testPauseIntercept(BufferedConsumerTests.testPauseIntercept6  s,    

!!#,,334r   c                     U R                   R                  5         U R                   R                  5         U R                  U R                  R
                  5        g r   )r   r3   r/   r]   r   r-   r   s    r   testResumeIntercept)BufferedConsumerTests.testResumeIntercept:  s>    

!!#

""$ 	,,445r   c                    U R                   R                  5         U R                  U R                  R                  S5        U R                   R                  S5        U R                  U R                  R                  S5        U R                   R                  S5        U R                  U R                  R                  5        g)zMake sure I say "when." zdon't pause yet3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxN)r   r3   r]   r   r.   r   r   r   s    r   testTriggerPause&BufferedConsumerTests.testTriggerPauseB  s     	

!!#,,335FG

",,335FG

"++223r   c                    U R                   R                  5         U R                   R                  S5        U R                  U R                  R
                  S5        U R                   R                  5         U R                  U R                  R
                  S5        U R                  U R                   R                  5        g)z3Make sure I resumeProducing when my buffer empties.fxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzshould be pausedzProducer should have resumed.N)	r   r3   r   r   r   r.   r/   r]   producerPausedr   s    r   testTriggerResume'BufferedConsumerTests.testTriggerResumeM  s    

!!#

#++224FG

""$ 	,,335TU223r   r   N)r   r    r!   r"   r#   r   r   rN   rP   r   r   r   r   r   r$   r%   r   r   r   r   $  s.    G**J?5
56	4	4r   r   c                   P    \ rS rSr " S S\R
                  5      rS rS rS r	Sr
g)	BufferedPullTestsiY  c                       \ rS rSrSrS rSrg)BufferedPullTests.proxyClassiZ  Fc                 p    [         R                  R                  XS S 5        [        [	        U5      S5      $ )Nr   )r   r   _writeSomeDataminrx   r   s     r   r   +BufferedPullTests.proxyClass._writeSomeData]  s-    %%44T:Fs4y#&&r   r%   N)r   r    r!   r"   r   r   r$   r%   r   r   rN   r   Z  s    	'r   rN   c                    [        5       U l        U R                  U R                  5      U l        SU R                  l        [        U R                  5      U l        U R                  R                  U R                  S5        g )Nr   Fr   r   s    r   rP   BufferedPullTests.setUpa  sV    '/__T__5
 #

+DJJ7

##D$7$7?r   c                     SU R                   l        U R                  R                  5         U R	                  U R                   R                  5        g ra   )r   r-   r   r/   r   r   s    r   testResumePull BufferedPullTests.testResumePulli  s:     ',#

""$++334r   c                    U R                   R                  5         U R                   R                  S5        U R                  U R                  R                  5       S5        U R                  U R                   R                  S/5        g )Nidatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumddatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatum)r   r/   r   rm   rM   r   _bufferr   s    r   testLateWriteBuffering(BufferedPullTests.testLateWriteBufferingp  s]    

""$

&113\B++gY7r   r   N)r   r    r!   r"   r   r   rN   rP   r   r   r$   r%   r   r   r   r   Y  s$    'S.. '@58r   r   N)__version__twisted.protocolsr   twisted.trialr   r   r'   r:   TestCaserJ   rX   rh   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   <module>r      s3   !B' ! "2
% 
% &N +h// ++0 +0\/
 /
d0!68I8I 0+#8(:K:K +0!68I8I 0+#8(:K:K +5** 56** 6."= "=J,h.?.? 
.0A0A 24H-- 24j8)) 8r   