bpo-33694: Remove test_asyncio ProactorDatagramTransportTests (GH-16288) · python/cpython@bc2256e (original) (raw)
`@@ -472,259 +472,6 @@ def test_dont_pause_writing(self):
`
472
472
`self.assertFalse(self.protocol.pause_writing.called)
`
473
473
``
474
474
``
475
``
`-
@unittest.skip('FIXME: bpo-33694: these tests are too close '
`
476
``
`-
'to the implementation and should be refactored or removed')
`
477
``
`-
class ProactorSocketTransportBufferedProtoTests(test_utils.TestCase):
`
478
``
-
479
``
`-
def setUp(self):
`
480
``
`-
super().setUp()
`
481
``
`-
self.loop = self.new_test_loop()
`
482
``
`-
self.addCleanup(self.loop.close)
`
483
``
`-
self.proactor = mock.Mock()
`
484
``
`-
self.loop._proactor = self.proactor
`
485
``
-
486
``
`-
self.protocol = test_utils.make_test_protocol(asyncio.BufferedProtocol)
`
487
``
`-
self.buf = bytearray(1)
`
488
``
`-
self.protocol.get_buffer.side_effect = lambda hint: self.buf
`
489
``
-
490
``
`-
self.sock = mock.Mock(socket.socket)
`
491
``
-
492
``
`-
def socket_transport(self, waiter=None):
`
493
``
`-
transport = _ProactorSocketTransport(self.loop, self.sock,
`
494
``
`-
self.protocol, waiter=waiter)
`
495
``
`-
self.addCleanup(close_transport, transport)
`
496
``
`-
return transport
`
497
``
-
498
``
`-
def test_ctor(self):
`
499
``
`-
fut = self.loop.create_future()
`
500
``
`-
tr = self.socket_transport(waiter=fut)
`
501
``
`-
test_utils.run_briefly(self.loop)
`
502
``
`-
self.assertIsNone(fut.result())
`
503
``
`-
self.protocol.connection_made(tr)
`
504
``
`-
self.proactor.recv_into.assert_called_with(self.sock, self.buf)
`
505
``
-
506
``
`-
def test_loop_reading(self):
`
507
``
`-
tr = self.socket_transport()
`
508
``
`-
tr._loop_reading()
`
509
``
`-
self.loop._proactor.recv_into.assert_called_with(self.sock, self.buf)
`
510
``
`-
self.assertTrue(self.protocol.get_buffer.called)
`
511
``
`-
self.assertFalse(self.protocol.buffer_updated.called)
`
512
``
`-
self.assertFalse(self.protocol.eof_received.called)
`
513
``
-
514
``
`-
def test_get_buffer_error(self):
`
515
``
`-
transport = self.socket_transport()
`
516
``
`-
transport._fatal_error = mock.Mock()
`
517
``
-
518
``
`-
self.loop.call_exception_handler = mock.Mock()
`
519
``
`-
self.protocol.get_buffer.side_effect = LookupError()
`
520
``
-
521
``
`-
transport._loop_reading()
`
522
``
-
523
``
`-
self.assertTrue(transport._fatal_error.called)
`
524
``
`-
self.assertTrue(self.protocol.get_buffer.called)
`
525
``
`-
self.assertFalse(self.protocol.buffer_updated.called)
`
526
``
-
527
``
`-
def test_get_buffer_zerosized(self):
`
528
``
`-
transport = self.socket_transport()
`
529
``
`-
transport._fatal_error = mock.Mock()
`
530
``
-
531
``
`-
self.loop.call_exception_handler = mock.Mock()
`
532
``
`-
self.protocol.get_buffer.side_effect = lambda hint: bytearray(0)
`
533
``
-
534
``
`-
transport._loop_reading()
`
535
``
-
536
``
`-
self.assertTrue(transport._fatal_error.called)
`
537
``
`-
self.assertTrue(self.protocol.get_buffer.called)
`
538
``
`-
self.assertFalse(self.protocol.buffer_updated.called)
`
539
``
-
540
``
`-
def test_proto_type_switch(self):
`
541
``
`-
self.protocol = test_utils.make_test_protocol(asyncio.Protocol)
`
542
``
`-
tr = self.socket_transport()
`
543
``
-
544
``
`-
res = self.loop.create_future()
`
545
``
`-
res.set_result(b'data')
`
546
``
-
547
``
`-
tr = self.socket_transport()
`
548
``
`-
tr._read_fut = res
`
549
``
`-
tr._loop_reading(res)
`
550
``
`-
self.loop._proactor.recv.assert_called_with(self.sock, 32768)
`
551
``
`-
self.protocol.data_received.assert_called_with(b'data')
`
552
``
-
553
``
`-
switch protocol to a BufferedProtocol
`
554
``
-
555
``
`-
buf_proto = test_utils.make_test_protocol(asyncio.BufferedProtocol)
`
556
``
`-
buf = bytearray(4)
`
557
``
`-
buf_proto.get_buffer.side_effect = lambda hint: buf
`
558
``
-
559
``
`-
tr.set_protocol(buf_proto)
`
560
``
`-
test_utils.run_briefly(self.loop)
`
561
``
`-
res = self.loop.create_future()
`
562
``
`-
res.set_result(4)
`
563
``
-
564
``
`-
tr._read_fut = res
`
565
``
`-
tr._loop_reading(res)
`
566
``
`-
self.loop._proactor.recv_into.assert_called_with(self.sock, buf)
`
567
``
`-
buf_proto.buffer_updated.assert_called_with(4)
`
568
``
-
569
``
`-
@unittest.skip('FIXME: bpo-33694: this test is too close to the '
`
570
``
`-
'implementation and should be refactored or removed')
`
571
``
`-
def test_proto_buf_switch(self):
`
572
``
`-
tr = self.socket_transport()
`
573
``
`-
test_utils.run_briefly(self.loop)
`
574
``
`-
self.protocol.get_buffer.assert_called_with(-1)
`
575
``
-
576
``
`-
switch protocol to another BufferedProtocol
`
577
``
-
578
``
`-
buf_proto = test_utils.make_test_protocol(asyncio.BufferedProtocol)
`
579
``
`-
buf = bytearray(4)
`
580
``
`-
buf_proto.get_buffer.side_effect = lambda hint: buf
`
581
``
`-
tr._read_fut.done.side_effect = lambda: False
`
582
``
`-
tr.set_protocol(buf_proto)
`
583
``
`-
self.assertFalse(buf_proto.get_buffer.called)
`
584
``
`-
test_utils.run_briefly(self.loop)
`
585
``
`-
buf_proto.get_buffer.assert_called_with(-1)
`
586
``
-
587
``
`-
def test_buffer_updated_error(self):
`
588
``
`-
transport = self.socket_transport()
`
589
``
`-
transport._fatal_error = mock.Mock()
`
590
``
-
591
``
`-
self.loop.call_exception_handler = mock.Mock()
`
592
``
`-
self.protocol.buffer_updated.side_effect = LookupError()
`
593
``
-
594
``
`-
res = self.loop.create_future()
`
595
``
`-
res.set_result(10)
`
596
``
`-
transport._read_fut = res
`
597
``
`-
transport._loop_reading(res)
`
598
``
-
599
``
`-
self.assertTrue(transport._fatal_error.called)
`
600
``
`-
self.assertFalse(self.protocol.get_buffer.called)
`
601
``
`-
self.assertTrue(self.protocol.buffer_updated.called)
`
602
``
-
603
``
`-
def test_loop_eof_received_error(self):
`
604
``
`-
res = self.loop.create_future()
`
605
``
`-
res.set_result(0)
`
606
``
-
607
``
`-
self.protocol.eof_received.side_effect = LookupError()
`
608
``
-
609
``
`-
tr = self.socket_transport()
`
610
``
`-
tr._fatal_error = mock.Mock()
`
611
``
-
612
``
`-
tr.close = mock.Mock()
`
613
``
`-
tr._read_fut = res
`
614
``
`-
tr._loop_reading(res)
`
615
``
`-
self.assertFalse(self.loop._proactor.recv_into.called)
`
616
``
`-
self.assertTrue(self.protocol.eof_received.called)
`
617
``
`-
self.assertTrue(tr._fatal_error.called)
`
618
``
-
619
``
`-
def test_loop_reading_data(self):
`
620
``
`-
res = self.loop.create_future()
`
621
``
`-
res.set_result(4)
`
622
``
-
623
``
`-
tr = self.socket_transport()
`
624
``
`-
tr._read_fut = res
`
625
``
`-
tr._loop_reading(res)
`
626
``
`-
self.loop._proactor.recv_into.assert_called_with(self.sock, self.buf)
`
627
``
`-
self.protocol.buffer_updated.assert_called_with(4)
`
628
``
-
629
``
`-
def test_loop_reading_no_data(self):
`
630
``
`-
res = self.loop.create_future()
`
631
``
`-
res.set_result(0)
`
632
``
-
633
``
`-
tr = self.socket_transport()
`
634
``
`-
self.assertRaises(AssertionError, tr._loop_reading, res)
`
635
``
-
636
``
`-
tr.close = mock.Mock()
`
637
``
`-
tr._read_fut = res
`
638
``
`-
tr._loop_reading(res)
`
639
``
`-
self.assertFalse(self.loop._proactor.recv_into.called)
`
640
``
`-
self.assertTrue(self.protocol.eof_received.called)
`
641
``
`-
self.assertTrue(tr.close.called)
`
642
``
-
643
``
`-
def test_loop_reading_aborted(self):
`
644
``
`-
err = self.loop._proactor.recv_into.side_effect = \
`
645
``
`-
ConnectionAbortedError()
`
646
``
-
647
``
`-
tr = self.socket_transport()
`
648
``
`-
tr._fatal_error = mock.Mock()
`
649
``
`-
tr._loop_reading()
`
650
``
`-
tr._fatal_error.assert_called_with(
`
651
``
`-
err, 'Fatal read error on pipe transport')
`
652
``
-
653
``
`-
def test_loop_reading_aborted_closing(self):
`
654
``
`-
self.loop._proactor.recv.side_effect = ConnectionAbortedError()
`
655
``
-
656
``
`-
tr = self.socket_transport()
`
657
``
`-
tr._closing = True
`
658
``
`-
tr._fatal_error = mock.Mock()
`
659
``
`-
tr._loop_reading()
`
660
``
`-
self.assertFalse(tr._fatal_error.called)
`
661
``
-
662
``
`-
def test_loop_reading_aborted_is_fatal(self):
`
663
``
`-
self.loop._proactor.recv_into.side_effect = ConnectionAbortedError()
`
664
``
`-
tr = self.socket_transport()
`
665
``
`-
tr._closing = False
`
666
``
`-
tr._fatal_error = mock.Mock()
`
667
``
`-
tr._loop_reading()
`
668
``
`-
self.assertTrue(tr._fatal_error.called)
`
669
``
-
670
``
`-
def test_loop_reading_conn_reset_lost(self):
`
671
``
`-
err = self.loop._proactor.recv_into.side_effect = ConnectionResetError()
`
672
``
-
673
``
`-
tr = self.socket_transport()
`
674
``
`-
tr._closing = False
`
675
``
`-
tr._fatal_error = mock.Mock()
`
676
``
`-
tr._force_close = mock.Mock()
`
677
``
`-
tr._loop_reading()
`
678
``
`-
self.assertFalse(tr._fatal_error.called)
`
679
``
`-
tr._force_close.assert_called_with(err)
`
680
``
-
681
``
`-
def test_loop_reading_exception(self):
`
682
``
`-
err = self.loop._proactor.recv_into.side_effect = OSError()
`
683
``
-
684
``
`-
tr = self.socket_transport()
`
685
``
`-
tr._fatal_error = mock.Mock()
`
686
``
`-
tr._loop_reading()
`
687
``
`-
tr._fatal_error.assert_called_with(
`
688
``
`-
err, 'Fatal read error on pipe transport')
`
689
``
-
690
``
`-
def test_pause_resume_reading(self):
`
691
``
`-
tr = self.socket_transport()
`
692
``
`-
futures = []
`
693
``
`-
for msg in [10, 20, 30, 40, 0]:
`
694
``
`-
f = self.loop.create_future()
`
695
``
`-
f.set_result(msg)
`
696
``
`-
futures.append(f)
`
697
``
-
698
``
`-
self.loop._proactor.recv_into.side_effect = futures
`
699
``
`-
self.loop._run_once()
`
700
``
`-
self.assertFalse(tr._paused)
`
701
``
`-
self.assertTrue(tr.is_reading())
`
702
``
`-
self.loop._run_once()
`
703
``
`-
self.protocol.buffer_updated.assert_called_with(10)
`
704
``
`-
self.loop._run_once()
`
705
``
`-
self.protocol.buffer_updated.assert_called_with(20)
`
706
``
-
707
``
`-
tr.pause_reading()
`
708
``
`-
tr.pause_reading()
`
709
``
`-
self.assertTrue(tr._paused)
`
710
``
`-
self.assertFalse(tr.is_reading())
`
711
``
`-
for i in range(10):
`
712
``
`-
self.loop._run_once()
`
713
``
`-
self.protocol.buffer_updated.assert_called_with(20)
`
714
``
-
715
``
`-
tr.resume_reading()
`
716
``
`-
tr.resume_reading()
`
717
``
`-
self.assertFalse(tr._paused)
`
718
``
`-
self.assertTrue(tr.is_reading())
`
719
``
`-
self.loop._run_once()
`
720
``
`-
self.protocol.buffer_updated.assert_called_with(30)
`
721
``
`-
self.loop._run_once()
`
722
``
`-
self.protocol.buffer_updated.assert_called_with(40)
`
723
``
`-
tr.close()
`
724
``
-
725
``
`-
self.assertFalse(tr.is_reading())
`
726
``
-
727
``
-
728
475
`class ProactorDatagramTransportTests(test_utils.TestCase):
`
729
476
``
730
477
`def setUp(self):
`