(self, *, is_ssl=False, close_after=0)
| 248 | # Note: sendfile via SSL transport is equal to sendfile fallback |
| 249 | |
| 250 | def prepare_sendfile(self, *, is_ssl=False, close_after=0): |
| 251 | port = socket_helper.find_unused_port() |
| 252 | srv_proto = MySendfileProto(loop=self.loop, |
| 253 | close_after=close_after) |
| 254 | if is_ssl: |
| 255 | if not ssl: |
| 256 | self.skipTest("No ssl module") |
| 257 | srv_ctx = test_utils.simple_server_sslcontext() |
| 258 | cli_ctx = test_utils.simple_client_sslcontext() |
| 259 | else: |
| 260 | srv_ctx = None |
| 261 | cli_ctx = None |
| 262 | srv_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 263 | srv_sock.bind((socket_helper.HOST, port)) |
| 264 | server = self.run_loop(self.loop.create_server( |
| 265 | lambda: srv_proto, sock=srv_sock, ssl=srv_ctx)) |
| 266 | self.reduce_receive_buffer_size(srv_sock) |
| 267 | |
| 268 | if is_ssl: |
| 269 | server_hostname = socket_helper.HOST |
| 270 | else: |
| 271 | server_hostname = None |
| 272 | cli_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 273 | cli_sock.connect((socket_helper.HOST, port)) |
| 274 | |
| 275 | cli_proto = MySendfileProto(loop=self.loop) |
| 276 | tr, pr = self.run_loop(self.loop.create_connection( |
| 277 | lambda: cli_proto, sock=cli_sock, |
| 278 | ssl=cli_ctx, server_hostname=server_hostname)) |
| 279 | self.reduce_send_buffer_size(cli_sock, transport=tr) |
| 280 | |
| 281 | def cleanup(): |
| 282 | srv_proto.transport.close() |
| 283 | cli_proto.transport.close() |
| 284 | self.run_loop(srv_proto.done) |
| 285 | self.run_loop(cli_proto.done) |
| 286 | |
| 287 | server.close() |
| 288 | self.run_loop(server.wait_closed()) |
| 289 | |
| 290 | self.addCleanup(cleanup) |
| 291 | return srv_proto, cli_proto |
| 292 | |
| 293 | @unittest.skipIf(sys.platform == 'win32', "UDP sockets are not supported") |
| 294 | def test_sendfile_not_supported(self): |
no test coverage detected