(self, size)
| 198 | |
| 199 | @support.bigmemtest(size=25, memuse=90*2**20, dry_run=False) |
| 200 | def test_create_server_ssl_1(self, size): |
| 201 | CNT = 0 # number of clients that were successful |
| 202 | TOTAL_CNT = size # total number of clients that test will create |
| 203 | TIMEOUT = support.LONG_TIMEOUT # timeout for this test |
| 204 | |
| 205 | A_DATA = b'A' * 1024 * BUF_MULTIPLIER |
| 206 | B_DATA = b'B' * 1024 * BUF_MULTIPLIER |
| 207 | |
| 208 | sslctx = self._create_server_ssl_context( |
| 209 | test_utils.ONLYCERT, test_utils.ONLYKEY |
| 210 | ) |
| 211 | client_sslctx = self._create_client_ssl_context() |
| 212 | |
| 213 | clients = [] |
| 214 | |
| 215 | async def handle_client(reader, writer): |
| 216 | nonlocal CNT |
| 217 | |
| 218 | data = await reader.readexactly(len(A_DATA)) |
| 219 | self.assertEqual(data, A_DATA) |
| 220 | writer.write(b'OK') |
| 221 | |
| 222 | data = await reader.readexactly(len(B_DATA)) |
| 223 | self.assertEqual(data, B_DATA) |
| 224 | writer.writelines([b'SP', bytearray(b'A'), memoryview(b'M')]) |
| 225 | |
| 226 | await writer.drain() |
| 227 | writer.close() |
| 228 | |
| 229 | CNT += 1 |
| 230 | |
| 231 | async def test_client(addr): |
| 232 | fut = asyncio.Future() |
| 233 | |
| 234 | def prog(sock): |
| 235 | try: |
| 236 | sock.starttls(client_sslctx) |
| 237 | sock.connect(addr) |
| 238 | sock.send(A_DATA) |
| 239 | |
| 240 | data = sock.recv_all(2) |
| 241 | self.assertEqual(data, b'OK') |
| 242 | |
| 243 | sock.send(B_DATA) |
| 244 | data = sock.recv_all(4) |
| 245 | self.assertEqual(data, b'SPAM') |
| 246 | |
| 247 | sock.close() |
| 248 | |
| 249 | except Exception as ex: |
| 250 | self.loop.call_soon_threadsafe(fut.set_exception, ex) |
| 251 | else: |
| 252 | self.loop.call_soon_threadsafe(fut.set_result, None) |
| 253 | |
| 254 | client = self.tcp_client(prog) |
| 255 | client.start() |
| 256 | clients.append(client) |
| 257 |
nothing calls this directly
no test coverage detected