Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/twisted/test/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyc


=Nc@sHdZddlmZddlmZddlmZddlm	Z	m
Z
ddlmZddl
mZddlmZdd	lmZmZmZdd
lmZmZde	jfdYZd
efdYZdfdYZdeejfdYZdeejfdYZdeejfdYZdS(s.
Test case for L{twisted.protocols.loopback}.
i(t
implements(tunittest(tsuppress(tbasictloopback(tdefer(tProtocol(tDeferred(tIAddresst
IPushProducert
IPullProducer(treactort
interfacestSimpleProtocolcBs,eZdZdZdZdZRS(cCs%tj|_g|_g|_dS(N(RRtconntlinestconnLost(tself((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt__init__s	cCs|jjddS(N(RtcallbacktNone(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytconnectionMadescCs|jj|dS(N(Rtappend(Rtline((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytlineReceivedscCs|jj|dS(N(RR(Rtreason((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytconnectionLost s(t__name__t
__module__RRRR(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR
s			tDoomProtocolcBseZdZdZRS(icCsl|jd7_|jdkr5|jd|jntj|||jddkrh|jjndS(NiisHello %disHello 3(titsendLineR
RRt	transporttloseConnection(RR((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR&s(RRRR(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR$stLoopbackTestCaseMixincBseZdZdZRS(csottfd}jj|fd}tjj}|j||S(NcsjdjjdS(NsTHIS IS LINE ONE!(RR R!(tresult(ts(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt	sendALine6s
csLjjdgjtjdjtjddS(NsTHIS IS LINE ONE!i(tassertEqualRtlenR(tignored(RR$tc(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytcheck;s(R
RtaddCallbackRt
maybeDeferredtloopbackFunc(RR%R*td((R)RR$s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttestRegularFunction2s		
csottfd}jj|fd}tjj}|j||S(NcsjddS(Ns	DOOM LINE(R(R#(R$(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR%GscsqjjdddgjjddddgjtjdjtjddS(NsHello 1sHello 2sHello 3s	DOOM LINEi(R&RR'R(R((RR)R$(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR*Ks(RRR+RR,R-(RR%R*R.((R)RR$s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttestSneakyHiddenDoomCs		
(RRR/R0(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR"1s	tLoopbackAsyncTestCasecBseZeejZdZdZdZdZ	ddZ
dZdZdZ
d	Zd
dZdZd
ZdZdZdZdZdZdZRS(cCsbdtfdY}|}|}tj|||j|jd|j|jddS(s}
        Test that the client and server protocol both have makeConnection
        invoked on them by loopbackAsync.
        tTestProtocolcBseZdZdZRS(cSs
||_dS(N(R (RR ((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytmakeConnectionasN(RRRR R3(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR2_sN(RRt
loopbackAsynctfailIfEqualR R(RR2tservertclient((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_makeConnectionZs		csdtfdY}|rA|}t}|_t}n"t}|}t}|_tj||fd}|j|S(sJ
        Test one of the permutations of client/server host/peer.
        R2cBseZdZRS(cSs$tj|||jj|dS(N(RR3tonConnectionR(RR ((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR3ps(RRR3(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR2oscs,t|}jtj|dS(N(tgetattrt
failUnlessRt
providedBy(R thost(tgetR(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt	connecteds(RRR9RR4R+(RR>t
testServerR2R6R.R7R?((RR>s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt
_hostpeertestks			cCs|jdtS(s
        Test that the server gets a transport with a properly functioning
        implementation of L{ITransport.getHost}.
        tgetHost(RAtTrue(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_serverHostscCs|jdtS(sG
        Like C{test_serverHost} but for L{ITransport.getPeer}
        tgetPeer(RARC(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_serverPeersRBcCs|jdtS(s
        Test that the client gets a transport with a properly functioning
        implementation of L{ITransport.getHost}.
        RB(RAtFalse(RR>((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_clientHostscCs|jdtS(sH
        Like C{test_clientHost} but for L{ITransport.getPeer}.
        RE(RARG(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_clientPeerscsdtfdY}dtffdY}|r]|}|}t}|_n"|}t}|_|}tj|||S(sT
        Test one of the permutations of write/writeSequence client/server.
        tGreeteeProtocolcBseZdZdZRS(tcSs5|j|7_|jdkr1|jjdndS(Ntbytes(RLtreceivedRR(RRL((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytdataReceiveds(RRRLRN(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRJstGreeterProtocolcseZfdZRS(cst|jddS(NRL(R:R (R(twrite(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRs(RRR((RP(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyROs(RRRMRR4(RRPR@RJROR6R7R.((RPs>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt
_greetingtests				cCs|jdtS(s
        Test that on a connection where the client speaks first, the server
        receives the bytes sent by the client.
        RP(RQRG(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_clientGreetingscCs|jdtS(sz
        Like C{test_clientGreeting}, but use C{writeSequence} instead of
        C{write} to issue the greeting.
        t
writeSequence(RQRG(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_clientGreetingSequencesRPcCs|jdtS(s
        Test that on a connection where the server speaks first, the client
        receives the bytes sent by the server.
        RP(RQRC(RRP((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_serverGreetingscCs|jdtS(sz
        Like C{test_serverGreeting}, but use C{writeSequence} instead of
        C{write} to issue the greeting.
        RS(RQRC(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_serverGreetingSequencescstttdddtffdY}dtffdY}||t_tjjS(Nii
tProducingProtocolcseZfdZRS(cs,t|_|jj|jdS(N(tlisttproducertstartR (R(t	toProducet
producerClass(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRs(RRR((R[R\(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRWstReceivingProtocolcs#eZdZfdZRS(RKcsD|j|7_|jdjkr@|jjfndS(NRK(RLtjoinRMR(RRL(R[R7R6(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRNs(RRRLRN((R[R7R6(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR]s(tmaptstrtrangeRRRMRR4(RR\RWR]((R\R6R[R7s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt
_producertests"		csEdtfdY}j|}fd}|j||S(sO
        Test a push producer registered against a loopback transport.
        tPushProducercBs<eZeeeZdZdZdZdZ	RS(cSs
||_dS(N(R[(RR[((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRscSs
t|_dS(N(RCtresumed(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytresumeProducingscSs'||_|j|t|jdS(N(tconsumertregisterProducerRCt_produceAndSchedule(RRf((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRZs	cSsL|jr;|jj|jjdtjd|jn
|jjdS(Ni(R[RfRPtpopRt	callLaterRhtunregisterProducer(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRh
s	(
RRRR	RGRdRReRZRh(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRcs
			cs&|\}}j|jjddS(Ns0Streaming producer should not have been resumed.(tfailIfRYRd(t.0R7R6(R(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytfinisheds		(tobjectRbR+(RRcR.Rn((Rs>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_pushProducers

cCs#dtfdY}|j|S(sO
        Test a pull producer registered against a loopback transport.
        tPullProducercBs-eZeedZdZdZRS(cSs
||_dS(N(R[(RR[((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR!scSs ||_|jj|tdS(N(RfRgRG(RRf((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRZ$s	cSs9|jj|jjd|js5|jjndS(Ni(RfRPR[RiRk(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRe(s	(RRRR
RRZRe(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRqs
		(RoRb(RRq((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_pullProducerscssdtfdY}dtfdY}|}|tj|}fd}|j||S(s
        L{loopback.loopbackAsync} does not call a protocol's C{dataReceived}
        method while that protocol's transport's C{write} method is higher up
        on the stack.
        tServercBseZdZRS(cSs|jjddS(NRL(R RP(RRL((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRN6s(RRRN(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRs5stClientcBs)eZeZdZdZdZRS(cSstjd|jdS(Ni(RRjtgo(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR<scSs|jjdt|_dS(Ntfoo(R RPRCtready(R((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRu?scSs|j|_|jjdS(N(RwtwasReadyR R!(RRL((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRNCs(RRRGRwRRuRN(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRt9s		csjjdS(N(t
assertTrueRx(R((RR7(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt
cbFinishedKs(RRR4R+(RRsRtR6R.Rz((RR7s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_writeNotReentrant/s		
csgfd}tttj|}jgjjdjjdjjdjjdjjfd}|j||S(s
        The callable passed as the value for the C{pumpPolicy} parameter to
        L{loopbackAsync} is called with a L{_LoopbackQueue} of pending bytes
        and a protocol to which they should be delivered.
        cs=g}x|r%|j|jq	Wj||fdS(N(RR>(tqueuettargetRL(t	pumpCalls(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pytdummyPolicyXs	Rvtbartbaztquuxcs5jdddgfddgfgdS(NRRRvR(R&R(R((RR~R6R7(s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt
cbCompletejs(RRR4R&R RPR!R+(RRRnR((RR~R6R7s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_pumpPolicyQs		

cCsxg}t}|j|_tj}|jd|jd|jdtj|||j|ddgdS(s
        L{identityPumpPolicy} is a pump policy which calls the target's
        C{dataReceived} method one for each string in the queue passed to it.
        RvRN(	RRRNRt_LoopbackQueuetputRtidentityPumpPolicyR&(RRLR7R|((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_identityPumpPolicyus	


cCsug}t}|j|_tj}|jd|jd|jdtj|||j|dgdS(s
        L{collapsingPumpPolicy} is a pump policy which calls the target's
        C{dataReceived} only once with all of the strings in the queue passed
        to it joined together.
        RvRtfoobarN(	RRRNRRRRtcollapsingPumpPolicyR&(RRLR7R|((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyttest_collapsingPumpPolicys	


(RRtstaticmethodRR4R-R8RARDRFRHRIRQRRRTRURVRbRpRrR{RRR(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyR1Vs&											#		"	$	tLoopbackTCPTestCasecBseZeejZRS((RRRRtloopbackTCPR-(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRstLoopbackUNIXTestCasecBs8eZeejZejeddkr6dZ
nRS(s-Current reactor does not support UNIX socketsN(RRRRtloopbackUNIXR-RtIReactorUNIXRRtskip(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyRsN(t__doc__tzope.interfaceRt
twisted.trialRttwisted.trial.utilRtSUPPRESSttwisted.protocolsRRttwisted.internetRttwisted.internet.protocolRttwisted.internet.deferRttwisted.internet.interfacesRR	R
RRtLineReceiverR
RR"tTestCaseR1RR(((s>/usr/lib/python2.7/dist-packages/twisted/test/test_loopback.pyt<module>s 
%F