(self)
| 20 | raise NotImplementedError |
| 21 | |
| 22 | def test_start_server_1(self): |
| 23 | HELLO_MSG = b'1' * 1024 * 5 + b'\n' |
| 24 | |
| 25 | def client(sock, addr): |
| 26 | for i in range(10): |
| 27 | time.sleep(0.2) |
| 28 | if srv.is_serving(): |
| 29 | break |
| 30 | else: |
| 31 | raise RuntimeError |
| 32 | |
| 33 | sock.settimeout(2) |
| 34 | sock.connect(addr) |
| 35 | sock.send(HELLO_MSG) |
| 36 | sock.recv_all(1) |
| 37 | sock.close() |
| 38 | |
| 39 | async def serve(reader, writer): |
| 40 | await reader.readline() |
| 41 | main_task.cancel() |
| 42 | writer.write(b'1') |
| 43 | writer.close() |
| 44 | await writer.wait_closed() |
| 45 | |
| 46 | async def main(srv): |
| 47 | async with srv: |
| 48 | await srv.serve_forever() |
| 49 | |
| 50 | srv = self.loop.run_until_complete(asyncio.start_server( |
| 51 | serve, socket_helper.HOSTv4, 0, start_serving=False)) |
| 52 | |
| 53 | self.assertFalse(srv.is_serving()) |
| 54 | |
| 55 | main_task = self.loop.create_task(main(srv)) |
| 56 | |
| 57 | addr = srv.sockets[0].getsockname() |
| 58 | with self.assertRaises(asyncio.CancelledError): |
| 59 | with self.tcp_client(lambda sock: client(sock, addr)): |
| 60 | self.loop.run_until_complete(main_task) |
| 61 | |
| 62 | self.assertEqual(srv.sockets, ()) |
| 63 | |
| 64 | self.assertIsNone(srv._sockets) |
| 65 | self.assertIsNone(srv._waiters) |
| 66 | self.assertFalse(srv.is_serving()) |
| 67 | |
| 68 | with self.assertRaisesRegex(RuntimeError, r'is closed'): |
| 69 | self.loop.run_until_complete(srv.serve_forever()) |
| 70 | |
| 71 | |
| 72 | class SelectorStartServerTests(BaseStartServer, unittest.TestCase): |
nothing calls this directly
no test coverage detected