def test_pausing(self): """ Test pause inside data receiving. It uses fake clock to see if pausing/resuming work. """ for packet_size in range(1, 10): t = proto_helpers.StringIOWithoutClosing() clock = task.Clock() a = LineTester(clock) a.makeConnection(protocol.FileWrapper(t)) for i in range(len(self.pauseBuf) // packet_size + 1): s = self.pauseBuf[i * packet_size:(i + 1) * packet_size] a.dataReceived(s) self.assertEqual(self.pauseOutput1, a.received) clock.advance(0) self.assertEqual(self.pauseOutput2, a.received)
def runRequest(self, httpRequest, requestClass, success=1): httpRequest = httpRequest.replace("\n", "\r\n") b = StringIOWithoutClosing() a = http.HTTPChannel() a.requestFactory = requestClass a.makeConnection(protocol.FileWrapper(b)) # one byte at a time, to stress it. for byte in httpRequest: if a.transport.closed: break a.dataReceived(byte) a.connectionLost(IOError("all done")) if success: self.assertEquals(self.didRequest, 1) del self.didRequest else: self.assert_(not hasattr(self, "didRequest"))
def test_simple_packet(self): """ Test buffering for different packet size, checking received matches expected data. """ for tf in test_factory.test_factories.itervalues(): test_pdu = tf() pdu_data = test_pdu.pack() for packet_size in range(1, len(pdu_data)): transport = proto_helpers.StringIOWithoutClosing() uls = DICOMUpperLayerServiceTester() uls.makeConnection(protocol.FileWrapper(transport)) for i in range(len(pdu_data) // packet_size + 1): s = pdu_data[i * packet_size:(i + 1) * packet_size] uls.dataReceived(s) self.assertEqual(len(uls.received), 1) self.assertEqual(uls.received[0].pack(), test_pdu.pack())
def runTest(self): sends=["FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004test"),\ flap(2,"toc_signon localhost 9999 test 0x00 english penguin\000"),\ flap(2,"toc_init_done\000"),\ flap(2,"toc_add_deny\000"),\ flap(2,"toc_send_im test 1\000"),\ flap(2,"toc_add_deny test\000"),\ flap(2,"toc_send_im test 2\000"),\ flap(2,"toc_add_permit\000"),\ flap(2,"toc_send_im test 3\000"),\ flap(2,"toc_add_permit test\000"),\ flap(2,"toc_send_im test 4\000")] expect=[[1,"\000\000\000\001"],\ [2,"SIGN_ON:TOC1.0\000"],\ [2,"NICK:test\000"],\ [2,"CONFIG:\000"],\ [2,"IM_IN:test:F:1\000"],\ [2,"ERROR:901:test\000"],\ [2,"ERROR:901:test\000"],\ [2,"IM_IN:test:F:4\000"]] d = DummyTOC() d.factory = toc.TOCFactory() s = StringIOWithoutClosing() d.makeConnection(protocol.FileWrapper(s)) for i in sends: d.dataReceived(i) d.connectionLost(failure.Failure(main.CONNECTION_DONE)) v = s.getvalue() flaps = [] f, v = readFlap(v) while f: flaps.append(f) f, v = readFlap(v) if flaps != expect: for i in range(len(flaps)): if flaps[i] != expect[i]: raise AssertionError( "PrivacyTest Before Failed!\nactual:%s\nshould be:%s" % (flaps[i], expect[i])) raise AssertionError( "PrivacyTest Before Failed with incorrect length!\nactual:%s\nshould be:%s" % (flaps, expect))
def testGPSMessages(self): dummy = NMEATester() dummy.makeConnection(protocol.FileWrapper(StringIOWithNoClose())) for line in self.messages: dummy.resultHarvester.performTest(dummy.lineReceived, line) def munge(myTuple): if type(myTuple) != type(()): return newTuple = [] for v in myTuple: if type(v) == type(1.1): v = float(int(v * 10000.0)) * 0.0001 newTuple.append(v) return tuple(newTuple) for (message, expectedResult, actualResult) in zip(self.messages, self.results, dummy.resultHarvester.results): expectedResult = munge(expectedResult) actualResult = munge(actualResult) if isinstance(expectedResult, Exception): if isinstance(actualResult, Exception): self.assertEqual( expectedResult.__class__, actualResult.__class__, "\nInput:\n%s\nExpected:\n%s.%s\nResults:\n%s.%s\n" % (message, expectedResult.__class__.__module__, expectedResult.__class__.__name__, actualResult.__class__.__module__, actualResult.__class__.__name__)) else: self.assertEqual( 1, 0, "\nInput:\n%s\nExpected:\n%s.%s\nResults:\n%r\n" % (message, expectedResult.__class__.__module__, expectedResult.__class__.__name__, actualResult)) else: self.assertEqual( expectedResult, actualResult, "\nInput:\n%s\nExpected: %r\nResults: %r\n" % (message, expectedResult, actualResult))
def testBuffer(self): b = StringIOWithoutClosing() a = http.HTTPChannel() a.requestFactory = DummyHTTPHandler a.makeConnection(protocol.FileWrapper(b)) # one byte at a time, to stress it. for byte in self.requests: a.dataReceived(byte) a.connectionLost(IOError("all one")) value = b.getvalue() if value != self.expected_response: for i in range(len(value)): if len(self.expected_response) <= i: print `value[i-5:i+10]`, `self.expected_response[i-5:i+10]` elif value[i] != self.expected_response[i]: print `value[i-5:i+10]`, `self.expected_response[i-5:i+10]` break print '---VALUE---' print repr(value) print '---EXPECTED---' print repr(self.expected_response) raise AssertionError
def setUp(self): self.file = StringIOWithoutClosing() self.transport = protocol.FileWrapper(self.file) self.factory = server.ServerFactory() self.protocol = self.factory.buildProtocol(None) self.protocol.factory = self.factory self.protocol.transport = self.transport self.protocol.connectionMade() self.protocol.versionSuccess() self.protocol.handshakeSuccess('') self.messages = [] def send_message(*args): self.messages.append(args) self.patch(self.protocol.nc, 'sendMessage', send_message) self.control = self.protocol.controlStream
def testBuffer(self): output = StringIOWithoutClosing() a = self.serverClass() class fooFactory: domain = 'foo.com' a.factory = fooFactory() a.makeConnection(protocol.FileWrapper(output)) for (send, expect, msg, msgexpect) in self.data: if send: a.dataReceived(send) data = output.getvalue() output.truncate(0) if not re.match(expect, data): raise AssertionError, (send, expect, data) if data[:3] == '354': for line in msg.splitlines(): if line and line[0] == '.': line = '.' + line a.dataReceived(line + '\r\n') a.dataReceived('.\r\n') # Special case for DATA. Now we want a 250, and then # we compare the messages data = output.getvalue() output.truncate() resp, msgdata = msgexpect if not re.match(resp, data): raise AssertionError, (resp, data) for recip in msgdata[2]: expected = list(msgdata[:]) expected[2] = [recip] self.assertEquals( a.message[(recip,)], tuple(expected) ) a.setTimeout(None)
def runTest(self): packets=["FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004test"),\ flap(2,"toc_signon null 9999 test 0x100000 english \"penguin 0.1\"\000"),\ flap(2,"toc_init_done\000"),\ flap(2,"toc_send_im test hi\000")] shouldbe=[[1,"\000\000\000\001"],\ [2,"SIGN_ON:TOC1.0\000"],\ [2,"NICK:test\000"],\ [2,"CONFIG:\000"],\ [2,"IM_IN:test:F:hi\000"]] data = "" for i in packets: data = data + i s = StringIOWithoutClosing() d = DummyTOC() fac = toc.TOCFactory() d.factory = fac d.makeConnection(protocol.FileWrapper(s)) d.dataReceived(data) d.connectionLost(failure.Failure(main.CONNECTION_DONE)) value = s.getvalue() flaps = [] f, value = readFlap(value) while f: flaps.append(f) f, value = readFlap(value) if flaps != shouldbe: for i in range(len(flaps)): if flaps[i] != shouldbe[i]: raise AssertionError( "MultiPacketTest Failed!\nactual:%s\nshould be:%s" % (flaps[i], shouldbe[i])) raise AssertionError( "MultiPacketTest Failed with incorrect length!, printing both lists\nactual:%s\nshould be:%s" % (flaps, shouldbe))
def setUp(self, encClass): self.io = BytesIO() self.enc = encClass() self.enc.makeConnection(protocol.FileWrapper(self.io)) self.enc._selectDialect("none") self.enc.expressionReceived = self.putResult
def runTest(self): USERS=2 data=range(USERS) data[0]=("FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004test"),\ flap(2,"toc_signon localhost 9999 test 0x100000 english \"penguin 0.1\"\000"),\ flap(2,"toc_add_buddy test\000"),\ flap(2,"toc_init_done\000"),\ flap(2,"toc_send_im test \"hi\"\000"),\ flap(2,"toc_send_im test2 \"hello\"\000"),\ flap(2,"toc_set_away \"not here\"\000"),\ flap(2,"toc_set_idle 602\000"),\ flap(2,"toc_set_idle 0\000"),\ flap(2,"toc_set_away\000"),\ flap(2,"toc_evil test norm\000"),\ flap(2,"toc_chat_join 4 \"Test Chat\"\000"),\ flap(2,"toc_chat_send 0 \"hello\"\000"),\ #flap(2,"toc_chat_leave 0\000")) #,\ flap(2,"toc_chat_invite 0 \"come\" ooga\000"),\ #flap(2,"toc_chat_accept 0\000"),\ flap(5,"\000"),\ flap(2,"toc_chat_whisper 0 ooga \"boo ga\"\000"),\ flap(2,"toc_chat_leave 0"),\ flap(5,"\000")) data[1]=("FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004ooga"),\ flap(2,"toc_signon localhost 9999 ooga 0x100000 english \"penguin 0.1\"\000"),\ flap(2,"toc_add_buddy test\000"),\ flap(2,"toc_init_done\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ #flap(5,"\000"),\ #flap(5,"\000"),\ #flap(5,"\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ flap(5,"\000"),\ #flap(5,"\000"),\ flap(2,"toc_chat_accept 0\000"),\ flap(2,"toc_chat_send 0 \"hi test\"\000"),\ flap(5,"\000"),\ flap(2,"toc_chat_leave 0\000")) strings=range(USERS) for i in strings: strings[i]=StringIOWithoutClosing() fac=toc.TOCFactory() dummy=range(USERS) for i in dummy: dummy[i]=DummyTOC() dummy[i].factory=fac dummy[i].makeConnection(protocol.FileWrapper(strings[i])) while reduce(lambda x,y:x+y,map(lambda x:x==(),data))!=USERS: for i in range(USERS): d=data[i] if len(d)>0: k,data[i]=d[0],d[1:] for j in k: dummy[i].dataReceived(j) # test by doing a character at a time else: dummy[i].connectionLost(failure.Failure(main.CONNECTION_DONE)) values=range(USERS) for i in values: values[i]=strings[i].getvalue() flaps=map(lambda x:[],range(USERS)) for value in values: i=values.index(value) f,value=readFlap(value) while f: flaps[i].append(f) f,value=readFlap(value) ts=range(USERS) for t in ts: ts[t]=dummy[t].signontime shouldequal=range(USERS) shouldequal[0]=[ \ [1,"\000\000\000\001"],\ [2,"SIGN_ON:TOC1.0\000"],\ [2,"NICK:test\000"],\ [2,"CONFIG:\00"],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: O\000"%ts[0]],\ [2,"IM_IN:test:F:hi\000"],\ [2,"ERROR:901:test2\000"],\ #[2,"UPDATE_BUDDY:test:T:0:%s:0: O\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: OU\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:10: OU\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: OU\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: O\000"%ts[0]],\ [2,"EVILED:10:test\000"],\ [2,"UPDATE_BUDDY:test:T:10:%s:0: O\000"%ts[0]],\ [2,"CHAT_JOIN:0:Test Chat\000"],\ [2,"CHAT_UPDATE_BUDDY:0:T:test\000"],\ [2,"CHAT_IN:0:test:F:hello\000"],\ [2,"CHAT_UPDATE_BUDDY:0:T:ooga\000"],\ [2,"CHAT_IN:0:ooga:F:hi test\000"],\ [2,"CHAT_LEFT:0\000"]] shouldequal[1]=[ \ [1,"\000\000\000\001"],\ [2,"SIGN_ON:TOC1.0\000"],\ [2,"NICK:ooga\000"],\ [2,"CONFIG:\000"],\ #[2,"UPDATE_BUDDY:test:T:0:%s:0: O\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: OU\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:10: OU\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: OU\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:0:%s:0: O\000"%ts[0]],\ [2,"UPDATE_BUDDY:test:T:10:%s:0: O\000"%ts[0]],\ [2,"CHAT_INVITE:Test Chat:0:test:come\000"],\ [2,"CHAT_JOIN:0:Test Chat\000"],\ [2,"CHAT_UPDATE_BUDDY:0:T:test:ooga\000"],\ [2,"CHAT_IN:0:ooga:F:hi test\000"],\ [2,"CHAT_IN:0:test:T:boo ga\000"],\ [2,"CHAT_UPDATE_BUDDY:0:F:test\000"],\ [2,"CHAT_LEFT:0\000"]] if flaps!=shouldequal: for i in range(len(shouldequal)): for j in range(len(shouldequal[i])): if shouldequal[i][j]!=flaps[i][j]: raise AssertionError("GeneralTest Failed!\nUser %s Line %s\nactual:%s\nshould be:%s"%(i,j,flaps[i][j],shouldequal[i][j])) raise AssertionError("GeneralTest Failed with incorrect lengths!")
def runTest(self): password1=toc.roast("test pass") password2=toc.roast("pass test") beforesend=[\ "FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004test"),\ flap(2,"toc_signon localhost 9999 test %s english \"penguin 0.1\"\000"%password1),\ flap(2,"toc_init_done\000"),\ flap(2,"toc_set_config \"{m 4}\"\000"),\ flap(2,"toc_format_nickname BOOGA\000"),\ flap(2,"toc_format_nickname \"T E S T\"\000"),\ flap(2,"toc_change_passwd \"testpass\" \"pass test\"\000"),\ flap(2,"toc_change_passwd \"test pass\" \"pass test\"\000")] beforeexpect=[\ [1,"\000\000\000\001"],\ [2,"SIGN_ON:TOC1.0\000"],\ [2,"NICK:test\000"],\ [2,"CONFIG:\000"],\ [2,"ERROR:911\000"],\ [2,"ADMIN_NICK_STATUS:0\000"],\ [2,"ERROR:911\000"],\ [2,"ADMIN_PASSWD_STATUS:0\000"]] badpasssend=[\ "FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004test"),\ flap(2,"toc_signon localhost 9999 test 0x1000 english \"penguin 0.1\"\000"),\ flap(2,"toc_init_done")] badpassexpect=[\ [1,"\000\00\000\001"],\ [2,"ERROR:980\000"]] goodpasssend=[\ "FLAPON\r\n\r\n",\ flap(1,"\000\000\000\001\000\001\000\004test"),\ flap(2,"toc_signon localhost 9999 test %s english \"penguin 0.1\"\000"%password2),\ flap(2,"toc_init_done")] goodpassexpect=[\ [1,"\000\000\000\001"],\ [2,"SIGN_ON:TOC1.0\000"],\ [2,"NICK:T E S T\000"],\ [2,"CONFIG:{m 4}\000"]] fac=toc.TOCFactory() d=DummyTOC() d.factory=fac s=StringIOWithoutClosing() d.makeConnection(protocol.FileWrapper(s)) for i in beforesend: d.dataReceived(i) d.connectionLost(failure.Failure(main.CONNECTION_DONE)) v=s.getvalue() flaps=[] f,v=readFlap(v) while f: flaps.append(f) f,v=readFlap(v) if flaps!=beforeexpect: for i in range(len(flaps)): if flaps[i]!=beforeexpect[i]: raise AssertionError("SavedValuesTest Before Failed!\nactual:%s\nshould be:%s"%(flaps[i],beforeexpect[i])) raise AssertionError("SavedValuesTest Before Failed with incorrect length!\nactual:%s\nshould be:%s"%(flaps,beforeexpect)) d=DummyTOC() d.factory=fac s=StringIOWithoutClosing() d.makeConnection(protocol.FileWrapper(s)) for i in badpasssend: d.dataReceived(i) d.connectionLost(failure.Failure(main.CONNECTION_DONE)) v=s.getvalue() flaps=[] f,v=readFlap(v) while f: flaps.append(f) f,v=readFlap(v) if flaps!=badpassexpect: for i in range(len(flaps)): if flaps[i]!=badpassexpect[i]: raise AssertionError("SavedValuesTest BadPass Failed!\nactual:%s\nshould be:%s"%(flaps[i],badpassexpect[i])) raise AssertionError("SavedValuesTest BadPass Failed with incorrect length!\nactual:%s\nshould be:%s"%(flaps,badpassexpect)) d=DummyTOC() d.factory=fac s=StringIOWithoutClosing() d.makeConnection(protocol.FileWrapper(s)) for i in goodpasssend: d.dataReceived(i) d.connectionLost(failure.Failure(main.CONNECTION_DONE)) v=s.getvalue() flaps=[] f,v=readFlap(v) while f: flaps.append(f) f,v=readFlap(v) if flaps!=goodpassexpect: for i in range(len(flaps)): if flaps[i]!=goodpassexpect[i]: raise AssertionError("SavedValuesTest GoodPass Failed!\nactual:%s\nshould be:%s"%(flaps[i],goodpassexpect[i])) raise AssertionError("SavedValuesTest GoodPass Failed with incorrect length!\nactual:%s\nshould be:%s"%(flaps,beforeexpect))
def setUp(self): self.t = test_protocols.StringIOWithoutClosing() self.p = finger.Finger() self.p.makeConnection(protocol.FileWrapper(self.t))
def setUp(self): self.file = StringIOWithoutClosing() self.transport = protocol.FileWrapper(self.file) self.client = IRCClientWithoutLogin() self.client.makeConnection(self.transport)
def setUp(self): self.f = StringIOWithoutClosing() self.t = protocol.FileWrapper(self.f) self.p = irc.IRC() self.p.makeConnection(self.t)
def testLineReceiverAsProducer(self): a = LineTester() t = StringIOWithoutClosing() a.makeConnection(protocol.FileWrapper(t)) a.dataReceived('produce\nhello world\nunproduce\ngoodbye\n') self.assertEquals(a.received, ['produce', 'hello world', 'unproduce', 'goodbye'])
def setUp(self): self.factory = smtp.SMTPFactory() self.factory.domains = {} self.factory.domains['baz.com'] = DummyDomain(['foo']) self.output = StringIOWithoutClosing() self.transport = protocol.FileWrapper(self.output)
def testLineTooLong(self): t = StringIOWithoutClosing() a = LineOnlyTester() a.makeConnection(protocol.FileWrapper(t)) res = a.dataReceived('x'*200) self.failIfEqual(res, None)
def getProtocol(self): t = StringIOWithoutClosing() a = self.protocol() a.makeConnection(protocol.FileWrapper(t)) return a
def testQOTD(self): t = StringIOWithoutClosing() a = wire.QOTD() a.makeConnection(protocol.FileWrapper(t)) self.failUnlessEqual(t.getvalue(), "An apple a day keeps the doctor away.\r\n")
def testWho(self): t = StringIOWithoutClosing() a = wire.Who() a.makeConnection(protocol.FileWrapper(t)) self.failUnlessEqual(t.getvalue(), "root\r\n")