def test_data_handler_error(self): transport1, transport2 = dummy_ice_transport_pair() certificate1 = RTCCertificate.generateCertificate() session1 = RTCDtlsTransport(transport1, [certificate1]) receiver1 = DummyDataReceiver() session1._register_data_receiver(receiver1) certificate2 = RTCCertificate.generateCertificate() session2 = RTCDtlsTransport(transport2, [certificate2]) session2._register_data_receiver(BrokenDataReceiver()) run( asyncio.gather( session1.start(session2.getLocalParameters()), session2.start(session1.getLocalParameters()), ) ) # send encypted data run(session1._send_data(b"ping")) run(asyncio.sleep(0.1)) # shutdown run(session1.stop()) run(session2.stop())
def test_data(self): transport1, transport2 = dummy_ice_transport_pair() certificate1 = RTCCertificate.generateCertificate() session1 = RTCDtlsTransport(transport1, [certificate1]) receiver1 = DummyDataReceiver() session1._register_data_receiver(receiver1) certificate2 = RTCCertificate.generateCertificate() session2 = RTCDtlsTransport(transport2, [certificate2]) receiver2 = DummyDataReceiver() session2._register_data_receiver(receiver2) run( asyncio.gather( session1.start(session2.getLocalParameters()), session2.start(session1.getLocalParameters()), ) ) # send encypted data run(session1._send_data(b"ping")) run(asyncio.sleep(0.1)) self.assertEqual(receiver2.data, [b"ping"]) run(session2._send_data(b"pong")) run(asyncio.sleep(0.1)) self.assertEqual(receiver1.data, [b"pong"]) # shutdown run(session1.stop()) run(asyncio.sleep(0.1)) self.assertEqual(session1.state, "closed") self.assertEqual(session2.state, "closed") # try closing again run(session1.stop()) run(session2.stop()) # try sending after close with self.assertRaises(ConnectionError): run(session1._send_data(b"foo"))
def test_data(self): transport1, transport2 = dummy_ice_transport_pair() certificate1 = RTCCertificate.generateCertificate() session1 = RTCDtlsTransport(transport1, [certificate1]) certificate2 = RTCCertificate.generateCertificate() session2 = RTCDtlsTransport(transport2, [certificate2]) run(asyncio.gather( session1.start(session2.getLocalParameters()), session2.start(session1.getLocalParameters()))) # send encypted data run(session1._send_data(b'ping')) data = run(session2.data.recv()) self.assertEqual(data, b'ping') run(session2._send_data(b'pong')) data = run(session1.data.recv()) self.assertEqual(data, b'pong') # shutdown run(session1.stop()) run(asyncio.sleep(0.5)) self.assertEqual(session1.state, 'closed') self.assertEqual(session2.state, 'closed') # try closing again run(session1.stop()) run(session2.stop()) # try receving after close with self.assertRaises(ConnectionError): run(session1.data.recv()) # try sending after close with self.assertRaises(ConnectionError): run(session1._send_data(b'foo'))