(self)
| 4361 | |
| 4362 | @unittest.expectedFailure # TODO: RUSTPYTHON |
| 4363 | def test_session(self): |
| 4364 | client_context, server_context, hostname = testing_context() |
| 4365 | # TODO: sessions aren't compatible with TLSv1.3 yet |
| 4366 | client_context.maximum_version = ssl.TLSVersion.TLSv1_2 |
| 4367 | |
| 4368 | # first connection without session |
| 4369 | stats = server_params_test(client_context, server_context, |
| 4370 | sni_name=hostname) |
| 4371 | session = stats['session'] |
| 4372 | self.assertTrue(session.id) |
| 4373 | self.assertGreater(session.time, 0) |
| 4374 | self.assertGreater(session.timeout, 0) |
| 4375 | self.assertTrue(session.has_ticket) |
| 4376 | self.assertGreater(session.ticket_lifetime_hint, 0) |
| 4377 | self.assertFalse(stats['session_reused']) |
| 4378 | sess_stat = server_context.session_stats() |
| 4379 | self.assertEqual(sess_stat['accept'], 1) |
| 4380 | self.assertEqual(sess_stat['hits'], 0) |
| 4381 | |
| 4382 | # reuse session |
| 4383 | stats = server_params_test(client_context, server_context, |
| 4384 | session=session, sni_name=hostname) |
| 4385 | sess_stat = server_context.session_stats() |
| 4386 | self.assertEqual(sess_stat['accept'], 2) |
| 4387 | self.assertEqual(sess_stat['hits'], 1) |
| 4388 | self.assertTrue(stats['session_reused']) |
| 4389 | session2 = stats['session'] |
| 4390 | self.assertEqual(session2.id, session.id) |
| 4391 | self.assertEqual(session2, session) |
| 4392 | self.assertIsNot(session2, session) |
| 4393 | self.assertGreaterEqual(session2.time, session.time) |
| 4394 | self.assertGreaterEqual(session2.timeout, session.timeout) |
| 4395 | |
| 4396 | # another one without session |
| 4397 | stats = server_params_test(client_context, server_context, |
| 4398 | sni_name=hostname) |
| 4399 | self.assertFalse(stats['session_reused']) |
| 4400 | session3 = stats['session'] |
| 4401 | self.assertNotEqual(session3.id, session.id) |
| 4402 | self.assertNotEqual(session3, session) |
| 4403 | sess_stat = server_context.session_stats() |
| 4404 | self.assertEqual(sess_stat['accept'], 3) |
| 4405 | self.assertEqual(sess_stat['hits'], 1) |
| 4406 | |
| 4407 | # reuse session again |
| 4408 | stats = server_params_test(client_context, server_context, |
| 4409 | session=session, sni_name=hostname) |
| 4410 | self.assertTrue(stats['session_reused']) |
| 4411 | session4 = stats['session'] |
| 4412 | self.assertEqual(session4.id, session.id) |
| 4413 | self.assertEqual(session4, session) |
| 4414 | self.assertGreaterEqual(session4.time, session.time) |
| 4415 | self.assertGreaterEqual(session4.timeout, session.timeout) |
| 4416 | sess_stat = server_context.session_stats() |
| 4417 | self.assertEqual(sess_stat['accept'], 4) |
| 4418 | self.assertEqual(sess_stat['hits'], 2) |
| 4419 | |
| 4420 | @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: False != True |
nothing calls this directly
no test coverage detected