+
    Dfj0                     |   R ^R& t ^ RIHt ^ RIHt  ! R R4      t ! R R4      t ! R R]4      t ! R	 R
]P                  4      t	 ! R R4      t
 ! R R4      t ! R R]
]P                  4      t ! R R]
]P                  4      t ! R R]]P                  4      t ! R R]]P                  4      t ! R R]P                  4      t ! R R]P                  4      t ! R R4      t ! R R]]P                  4      t ! R R ]]P                  4      t ! R! R"]P                  4      t ! R# R$]P                  4      tR%# )'z$Revision: 1.5 $)pcp)unittestc                   6   a  ] tR t^"t o RtR tR tR tRtV t	R# )DummyTransportz A dumb transport to wrap around.c                    . V n         R # N_writesselfs   &7/usr/lib/python3/dist-packages/twisted/test/test_pcp.py__init__DummyTransport.__init__%   s	        c                <    V P                   P                  V4       R # r   )r	   appendr   datas   &&r   writeDummyTransport.write(   s    D!r   c                8    R P                  V P                  4      # ) )joinr	   r
   s   &r   getvalueDummyTransport.getvalue+   s    wwt||$$r   r   N)
__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r   "   s     *"% %r   r   c                   D   a  ] tR t^/t o RtRtRtR tR tR t	R t
RtV tR# )DummyProducerFc                    Wn         R # r   )consumer)r   r'   s   &&r   r   DummyProducer.__init__4   s     r   c                "    R V n         RV n        R# )TFN)resumedpausedr
   s   &r   resumeProducingDummyProducer.resumeProducing7   s    r   c                    R V n         R# TN)r+   r
   s   &r   pauseProducingDummyProducer.pauseProducing;   s	    r   c                    R V n         R# r/   )stoppedr
   s   &r   stopProducingDummyProducer.stopProducing>   s	    r   )r'   r+   r*   r3   N)r   r   r   r   r*   r3   r+   r   r,   r0   r4   r    r!   r"   s   @r   r%   r%   /   s-     GGF! r   r%   c                   >   a  ] tR t^Bt o RtRtRtR tR tR t	Rt
V tR# )DummyConsumerNFTc                    W3V n         R # r   )producer)r   r9   	streamings   &&&r   registerProducerDummyConsumer.registerProducerG   s    !-r   c                    R V n         R# r/   )unregisteredr
   s   &r   unregisterProducer DummyConsumer.unregisterProducerJ   s
     r   c                    R V n         R# r/   )finishedr
   s   &r   finishDummyConsumer.finishM   s	    r   )rB   r9   r>   )r   r   r   r   r9   rB   r>   r;   r?   rC   r    r!   r"   s   @r   r7   r7   B   s(     HHL.! r   r7   c                   D   a  ] tR t^Qt o ]P
                  tR tR tRt	V t
R# )TransportInterfaceTestsc                d    \        4       V n        V P                  V P                  4      V n        R # r   )r7   
underlying
proxyClass	transportr
   s   &r   setUpTransportInterfaceTests.setUpT   s    '/9r   c                <    V P                   P                  R 4       R# z
some bytesN)rJ   r   r
   s   &r   	testWrite!TransportInterfaceTests.testWriteX   s    \*r   )rJ   rH   N)r   r   r   r   r   BasicProducerConsumerProxyrI   rK   rO   r    r!   r"   s   @r   rF   rF   Q   s     //J:+ +r   rF   c                   <   a  ] tR t^\t o RtR tR tR tR tRt	V t
R# )ConsumerInterfaceTestzTest 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                    \        4       V n        V P                  V P                  4      V n        \	        V P                  4      V n        R # r   )r7   rH   rI   r'   r%   r9   r
   s   &r   rK   ConsumerInterfaceTest.setUpe   s/    '/8%dmm4r   c                    V P                   P                  V P                  R 4       V P                  V P                  P                  4       R# r/   )r'   r;   r9   assertFalser*   r
   s   &r   testRegisterPush&ConsumerInterfaceTest.testRegisterPushj   s2    &&t}}d;../r   c                &   V P                   P                  V P                  R 4       V P                   P                  4        R V P                  n        V P                   P                  4        V P                  V P                  P                  4       R# FN)r'   r;   r9   r?   r*   r,   rW   r
   s   &r   testUnregister$ConsumerInterfaceTest.testUnregisterv   s`    &&t}}e<((*
 !&%%'../r   c                &   V P                   P                  V P                  R 4       V P                   P                  4        R V P                  n        V P                   P                  4        V P                  V P                  P                  4       R# r[   )r'   r;   r9   rC   r*   r,   rW   r
   s   &r   
testFinish ConsumerInterfaceTest.testFinish   s^    &&t}}e< %%%'../r   )r'   r9   rH   N)r   r   r   r   r   rK   rX   r\   r_   r    r!   r"   s   @r   rS   rS   \   s#     5
0	00 0r   rS   c                   N   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	tV tR
# )ProducerInterfaceTestzTest 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                d    \        4       V n        V P                  V P                  4      V n        R # r   )r7   r'   rI   r9   r
   s   &r   rK   ProducerInterfaceTest.setUp   s    %6r   c                t    V P                  V P                  P                  ^ ,          V P                  4       R# )    N)assertEqualr'   r9   r
   s   &r   testRegistersProducer+ProducerInterfaceTest.testRegistersProducer   s%    //2DMMBr   c                    V P                   P                  4        V P                   P                  R 4       V P                  V P                  P                  4       R4       R# )yakkity yakz*Paused producer should not have sent data.N)r9   r0   r   rW   r'   r   r
   s   &r   	testPauseProducerInterfaceTest.testPause   sE    $$&M*MM""$&R	
r   c                    V P                   P                  4        V P                   P                  4        V P                   P                  R 4       V P	                  V P
                  P                  4       R 4       R# )rk   N)r9   r0   r,   r   rg   r'   r   r
   s   &r   
testResume ProducerInterfaceTest.testResume   sQ    $$&%%'M*//1=Ar   c                    V P                   P                  4        V P                   P                  4        V P                  \	        V P
                  P                  4      ^ R4       R# )rf   z Resume triggered an empty write.N)r9   r0   r,   rg   lenr'   r	   r
   s   &r   testResumeNoEmptyWrite,ProducerInterfaceTest.testResumeNoEmptyWrite   sG    $$&%%'%%&+M	
r   c                    V P                   P                  4        V P                   P                  R 4       V P                   P                  4        V P	                  V P
                  P                  4       R 4       R# )zbuffer thisN)r9   r0   r   r,   rg   r'   r   r
   s   &r   testResumeBuffer&ProducerInterfaceTest.testResumeBuffer   sQ    $$&M*%%'//1=Ar   c                    V P                   P                  4        V P                   P                  R 4       V P                  V P                  P                  4       R4       R# )rk   z+Stopped producer should not have sent data.N)r9   r4   r   rW   r'   r   r
   s   &r   testStopProducerInterfaceTest.testStop   sE    ##%M*MM""$&S	
r   )r'   r9   N)r   r   r   r   r   rK   rh   rl   ro   rs   rv   ry   r    r!   r"   s   @r   rb   rb      s5     7C
B
B
 
r   rb   c                   .    ] tR t^t]P
                  tRtR# )PCP_ConsumerInterfaceTests Nr   r   r   r   r   rQ   rI   r    r}   r   r   r|   r|          //Jr   r|   c                   .    ] tR t^t]P
                  tRtR# )PCPII_ConsumerInterfaceTestsr}   Nr   r   r   r   r   ProducerConsumerProxyrI   r    r}   r   r   r   r          **Jr   r   c                   .    ] tR t^t]P
                  tRtR# )PCP_ProducerInterfaceTestsr}   Nr~   r}   r   r   r   r      r   r   r   c                   .    ] tR t^t]P
                  tRtR# )PCPII_ProducerInterfaceTestsr}   Nr   r}   r   r   r   r      r   r   r   c                   H   a  ] tR t^t o Rt]P                  tR tR t	Rt
V tR# )ProducerProxyTestszAProducer methods on me should be relayed to the Producer I proxy.c                    V P                  R 4      V n        \        V P                  4      V n        V P                  P	                  V P                  R4       R # )NT)rI   proxyr%   parentProducerr;   r
   s   &r   rK   ProducerProxyTests.setUp   s=    __T*
+DJJ7

##D$7$7>r   c                    V P                   P                  4        V P                  V P                  P                  4       R # r   )r   r4   
assertTruer   r3   r
   s   &r   ry   ProducerProxyTests.testStop   s*    

  "++334r   )r   r   N)r   r   r   r   r   r   rQ   rI   rK   ry   r    r!   r"   s   @r   r   r      s"     K//J?
5 5r   r   c                   T   a  ] tR t^t o Rt]P                  tR tR t	R t
R tRtV tR# )ConsumerProxyTestszAConsumer methods on me should be relayed to the Consumer I proxy.c                d    \        4       V n        V P                  V P                  4      V n        R # r   )r7   rH   rI   r'   r
   s   &r   rK   ConsumerProxyTests.setUp   s    '/8r   c                    V P                   P                  R 4       V P                  V P                  P	                  4       R 4       R# rN   )r'   r   rg   rH   r   r
   s   &r   rO   ConsumerProxyTests.testWrite   s1    L)113\Br   c                    V P                   P                  4        V P                  V P                  P                  4       R # r   )r'   rC   r   rH   rB   r
   s   &r   r_   ConsumerProxyTests.testFinish   s(    001r   c                    V P                   P                  4        V P                  V P                  P                  4       R # r   )r'   r?   r   rH   r>   r
   s   &r   r\   !ConsumerProxyTests.testUnregister   s(    ((*445r   )r'   rH   N)r   r   r   r   r   r   rQ   rI   rK   rO   r_   r\   r    r!   r"   s   @r   r   r      s-     K//J9C
26 6r   r   c                   >   a  ] tR t^t o R tR tR tR tR tRt	V t
R# )PullProducerTestc                    \        4       V n        V P                  V P                  4      V n        \	        V P                  4      V n        V P                  P                  V P
                  R 4       R# r/   )r7   rH   rI   r   r%   r   r;   r
   s   &r   rK   PullProducerTest.setUp   sJ    '/__T__5
+DJJ7

##D$7$7>r   c                    V P                   P                  R 4       V P                  V P                  P	                  4       R4       R# )helloz+Pulling Consumer got data before it pulled.N)r   r   rW   rH   r   r
   s   &r   testHoldWritesPullProducerTest.testHoldWrites   s5    

!OO$$&(U	
r   c                    V P                   P                  R 4       V P                   P                  4        V P                  V P                  P                  4       R 4       R# )r   N)r   r   r,   rg   rH   r   r
   s   &r   testPullPullProducerTest.testPull   sA    

!

""$113W=r   c                n   V P                   P                  R 4       V P                   P                  R4       V P                   P                  4        \        V P                  P
                  4      pV P                  V^RV3,          4       V P                  V P                  P                  4       R4       R# )zhello sunshinez(Pull resulted in %d writes instead of 1.zhello sunshineN)r   r   r,   rr   rH   r	   rg   r   )r   nwritess   & r   testMergeWrites PullProducerTest.testMergeWrites  s    

"

$

""$doo--.QE
R	
 	1135EFr   c                    V P                   P                  4        V P                   P                  R 4       V P                  V P                  P                  4       R 4       R# )r   N)r   r,   r   rg   rH   r   r
   s   &r   testLateWritePullProducerTest.testLateWrite  sA    

""$

 113V<r   r   r   rH   N)r   r   r   r   rK   r   r   r   r   r    r!   r"   s   @r   r   r      s$     ?
>
G= =r   r   c                   @    ] tR tRt ! R R]P
                  4      tRtR# )PCP_PullProducerTestsi  c                       ] tR tRtRtRtR# ) PCP_PullProducerTests.proxyClassi  Fr}   Nr   r   r   r   iAmStreamingr    r}   r   r   rI   r         r   rI   r}   Nr~   r}   r   r   r   r     s    S33  r   r   c                   @    ] tR tRt ! R R]P
                  4      tRtR# )PCPII_PullProducerTestsi  c                       ] tR tRtRtRtR# )"PCPII_PullProducerTests.proxyClassi  Fr}   Nr   r}   r   r   rI   r     r   r   rI   r}   Nr   r}   r   r   r   r     s    S..  r   r   c                   `   a  ] tR tRt o Rt]P                  tR tR t	R t
R tR tR tR	tV tR
# )BufferedConsumerTestsi$  z=As a consumer, ask the producer to pause after too much data.c                   \        4       V n        V P                  V P                  4      V n        ^dV P                  n        \        V P                  4      V n        V P                  P                  V P                  R4       R# )d   TNr7   rH   rI   r   
bufferSizer%   r   r;   r
   s   &r   rK   BufferedConsumerTests.setUp)  sV    '/__T__5
 #

+DJJ7

##D$7$7>r   c                    V P                   P                  V P                  R 4       V P                  V P                  P                  4       R# r[   )r   r;   r   r   r*   r
   s   &r   testRegisterPull&BufferedConsumerTests.testRegisterPull1  s4    

##D$7$7?++334r   c                    V P                   P                  4        V P                  V P                  P                  4       R # r   )r   r0   rW   r   r+   r
   s   &r   testPauseIntercept(BufferedConsumerTests.testPauseIntercept6  s,    

!!#,,334r   c                    V P                   P                  4        V P                   P                  4        V P                  V P                  P
                  4       R # r   )r   r0   r,   rW   r   r*   r
   s   &r   testResumeIntercept)BufferedConsumerTests.testResumeIntercept:  s>    

!!#

""$ 	,,445r   c                   V P                   P                  4        V P                  V P                  P                  R4       V P                   P                  R4       V P                  V P                  P                  R4       V P                   P                  R4       V P                  V P                  P                  4       R# )zMake sure I say "when." zdon't pause yetN3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r   r0   rW   r   r+   r   r   r
   s   &r   testTriggerPause&BufferedConsumerTests.testTriggerPauseB  s     	

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

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

"++223r   c                   V P                   P                  4        V P                   P                  R4       V P                  V P                  P
                  R4       V P                   P                  4        V P                  V P                  P
                  R4       V P                  V P                   P                  4       R# )z3Make sure I resumeProducing when my buffer empties.zshould be pausedzProducer should have resumed.Nfxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)	r   r0   r   r   r   r+   r,   rW   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   rI   rK   r   r   r   r   r   r    r!   r"   s   @r   r   r   $  s6     G**J?5
56	4	4 	4r   r   c                   \   a  ] tR tRt o  ! R R]P
                  4      tR tR tR t	Rt
V tR# )	BufferedPullTestsiY  c                   *   a  ] tR tRt o RtR tRtV tR# )BufferedPullTests.proxyClassiZ  Fc                x    \         P                  P                  WR ,          4       \        \	        V4      ^d4      # ):Nr   N)r   r   _writeSomeDataminrr   r   s   &&r   r   +BufferedPullTests.proxyClass._writeSomeData]  s+    %%44T:Fs4y#&&r   r}   N)r   r   r   r   r   r   r    r!   r"   s   @r   rI   r   Z  s     	' 	'r   rI   c                   \        4       V n        V P                  V P                  4      V n        ^dV P                  n        \        V P                  4      V n        V P                  P                  V P                  R4       R# )r   FNr   r
   s   &r   rK   BufferedPullTests.setUpa  sV    '/__T__5
 #

+DJJ7

##D$7$7?r   c                    R V P                   n        V P                  P                  4        V P	                  V P                   P                  4       R# r[   )r   r*   r   r,   r   r
   s   &r   testResumePull BufferedPullTests.testResumePulli  s:     ',#

""$++334r   c                   V P                   P                  4        V P                   P                  R4       V P                  V P                  P                  4       R4       V P                  V P                   P                  R .4       R# )datumNidatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumddatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatumdatum)r   r,   r   rg   rH   r   _bufferr
   s   &r   testLateWriteBuffering(BufferedPullTests.testLateWriteBufferingp  s]    

""$

&113\B++gY7r   r   N)r   r   r   r   r   r   rI   rK   r   r   r    r!   r"   s   @r   r   r   Y  s,     'S.. '@58 8r   r   N)__version__twisted.protocolsr   twisted.trialr   r   r%   r7   TestCaserF   rS   rb   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   