(self, server_ssl=None, client_ssl=None)
| 561 | client_context.verify_mode = ssl.CERT_NONE |
| 562 | |
| 563 | def test_connect_accepted_socket(self, server_ssl=None, client_ssl=None): |
| 564 | loop = self.loop |
| 565 | |
| 566 | class MyProto(MyBaseProto): |
| 567 | |
| 568 | def connection_lost(self, exc): |
| 569 | super().connection_lost(exc) |
| 570 | loop.call_soon(loop.stop) |
| 571 | |
| 572 | def data_received(self, data): |
| 573 | super().data_received(data) |
| 574 | self.transport.write(expected_response) |
| 575 | |
| 576 | lsock = socket.socket(socket.AF_INET) |
| 577 | lsock.bind(('127.0.0.1', 0)) |
| 578 | lsock.listen(1) |
| 579 | addr = lsock.getsockname() |
| 580 | |
| 581 | message = b'test data' |
| 582 | response = None |
| 583 | expected_response = b'roger' |
| 584 | |
| 585 | def client(): |
| 586 | nonlocal response |
| 587 | try: |
| 588 | csock = socket.socket(socket.AF_INET) |
| 589 | if client_ssl is not None: |
| 590 | csock = client_ssl.wrap_socket(csock) |
| 591 | csock.connect(addr) |
| 592 | csock.sendall(message) |
| 593 | response = csock.recv(99) |
| 594 | csock.close() |
| 595 | except Exception as exc: |
| 596 | print( |
| 597 | "Failure in client thread in test_connect_accepted_socket", |
| 598 | exc) |
| 599 | |
| 600 | thread = threading.Thread(target=client, daemon=True) |
| 601 | thread.start() |
| 602 | |
| 603 | conn, _ = lsock.accept() |
| 604 | proto = MyProto(loop=loop) |
| 605 | proto.loop = loop |
| 606 | |
| 607 | extras = {} |
| 608 | if server_ssl: |
| 609 | extras = dict(ssl_handshake_timeout=HANDSHAKE_TIMEOUT) |
| 610 | |
| 611 | f = loop.create_task( |
| 612 | loop.connect_accepted_socket( |
| 613 | (lambda: proto), conn, ssl=server_ssl, |
| 614 | **extras)) |
| 615 | loop.run_forever() |
| 616 | conn.close() |
| 617 | lsock.close() |
| 618 | |
| 619 | thread.join(1) |
| 620 | self.assertFalse(thread.is_alive()) |
nothing calls this directly
no test coverage detected