From ca7e96360a1de70cc364c6eb5b0c0b21d75ca4df Mon Sep 17 00:00:00 2001 From: as Date: Mon, 14 May 2018 09:37:03 +0200 Subject: [PATCH 673/673] updated test to check iocp reactor race condition --- src/twisted/test/test_tcp.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/twisted/test/test_tcp.py b/src/twisted/test/test_tcp.py index b8791bb9c..8fa11f72c 100644 --- a/src/twisted/test/test_tcp.py +++ b/src/twisted/test/test_tcp.py @@ -1362,9 +1362,16 @@ class LargeBufferWriterProtocol(protocol.Protocol): def connectionMade(self): # write 60MB - self.transport.write(b'X'*self.factory.len) - self.factory.done = 1 - self.transport.loseConnection() + self.transport.write(b'X'*(self.factory.len-1)) + + def finish(): + self.transport.write(b'X') + self.factory.done = 1 + self.transport.loseConnection() + + reactor.callLater(0.001, finish) + + class LargeBufferReaderProtocol(protocol.Protocol): def dataReceived(self, data): @@ -1422,9 +1429,12 @@ class LargeBufferTests(unittest.TestCase): d = defer.gatherResults([wrappedF.deferred, wrappedClientF.deferred]) def check(ignored): self.assertTrue(f.done, "writer didn't finish, it probably died") - self.assertTrue(clientF.len == self.datalen, + self.assertTrue(clientF.len >= self.datalen, "client didn't receive all the data it expected " "(%d != %d)" % (clientF.len, self.datalen)) + self.assertTrue(clientF.len <= self.datalen, + "client did receive more data than it expected " + "(%d != %d)" % (clientF.len, self.datalen)) self.assertTrue(clientF.done, "client didn't see connection dropped") return d.addCallback(check) -- 2.16.3.windows.1