[Twisted-Python] NetstringReceiver

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Fri Mar 26 08:08:02 EDT 2010


On 10:25 am, albert.brandl at weiermayer.com wrote:
>On Thu, Mar 25, 2010 at 09:22:03AM +1100, Andrew Bennetts wrote:
>>
>>No; I think once loseConnection has been called dataReceived won't be
>>called again, so there's no point checking for brokenPeer in
>>dataReceived.
>
>There is a unittest that assumes that dataReceives still works after
>sending in garbage:
>
>   def test_illegal(self):
>        """
>        Assert that illegal strings cause the transport to be closed.
>        """
>        for s in self.illegalStrings:
>            r = self.getProtocol()
>            for c in s:
>                r.dataReceived(c)
>            self.assertTrue(r.transport.disconnecting)
>
>self.illegalStrings is defined as
>
>    illegalStrings = [
>        '9999999999999999999999', 'abc', '4:abcde',
>        '51:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab,',]
>
>In this implementation, the dataReceived method has to be functional
>even after the NetstringReceiver has detected that the received
>data are garbage.

I'm not sure about this.  Each iteration around this loop creates a new 
instance of NetstringReceiver; after the illegal string is delivered, 
the instance isn't used again.

So, are you sure this is testing what you think it's testing?

Jean-Paul



More information about the Twisted-Python mailing list