| 428 | self.do_runf('sockets/test_tcp_refused.c', 'REFUSED PASS', cflags=['-sNODERAWSOCKETS']) |
| 429 | |
| 430 | def test_noderawsockets_backpressure(self): |
| 431 | # A sink server that accepts but never reads, so the client's writes fill |
| 432 | # the buffers and send() reports EAGAIN rather than buffering unboundedly. |
| 433 | done = threading.Event() |
| 434 | |
| 435 | class SinkHandler(socketserver.BaseRequestHandler): |
| 436 | def handle(self): |
| 437 | done.wait(30) # hold the connection open without ever reading |
| 438 | |
| 439 | server = socketserver.TCPServer(('127.0.0.1', 0), SinkHandler) |
| 440 | port = server.server_address[1] |
| 441 | thread = threading.Thread(target=server.serve_forever, daemon=True) |
| 442 | thread.start() |
| 443 | try: |
| 444 | self.do_runf('sockets/test_tcp_backpressure.c', 'BACKPRESSURE PASS', |
| 445 | cflags=['-sNODERAWSOCKETS'], args=[str(port)]) |
| 446 | finally: |
| 447 | done.set() |
| 448 | server.shutdown() |
| 449 | server.server_close() |
| 450 | thread.join() |
| 451 | |
| 452 | @also_with_proxy_to_pthread |
| 453 | def test_noderawsockets_server(self): |