14 """Tests behavior of the connectivity state."""
38 async
def tearDown(self):
41 @unittest.skipIf(
'aarch64' in platform.machine(),
42 'The transient failure propagation is slower on aarch64')
43 async
def test_unavailable_backend(self):
44 async
with aio.insecure_channel(UNREACHABLE_TARGET)
as channel:
45 self.assertEqual(grpc.ChannelConnectivity.IDLE,
46 channel.get_state(
False))
47 self.assertEqual(grpc.ChannelConnectivity.IDLE,
48 channel.get_state(
True))
51 await asyncio.wait_for(
52 _common.block_until_certain_state(
53 channel, grpc.ChannelConnectivity.TRANSIENT_FAILURE),
54 test_constants.SHORT_TIMEOUT)
56 async
def test_normal_backend(self):
57 async
with aio.insecure_channel(self._server_address)
as channel:
58 current_state = channel.get_state(
True)
59 self.assertEqual(grpc.ChannelConnectivity.IDLE, current_state)
62 await asyncio.wait_for(
63 _common.block_until_certain_state(
64 channel, grpc.ChannelConnectivity.READY),
65 test_constants.SHORT_TIMEOUT)
68 async
with aio.insecure_channel(self._server_address)
as channel:
69 self.assertEqual(grpc.ChannelConnectivity.IDLE,
70 channel.get_state(
False))
73 with self.assertRaises(asyncio.TimeoutError):
74 await asyncio.wait_for(
75 _common.block_until_certain_state(
76 channel, grpc.ChannelConnectivity.READY),
77 test_constants.SHORT_TIMEOUT)
79 async
def test_shutdown(self):
80 channel = aio.insecure_channel(self._server_address)
82 self.assertEqual(grpc.ChannelConnectivity.IDLE,
83 channel.get_state(
False))
86 wait_started = asyncio.Event()
88 async
def a_pending_wait():
90 await channel.wait_for_state_change(grpc.ChannelConnectivity.IDLE)
92 pending_task = self.
loop.create_task(a_pending_wait())
93 await wait_started.wait()
97 self.assertEqual(grpc.ChannelConnectivity.SHUTDOWN,
98 channel.get_state(
True))
100 self.assertEqual(grpc.ChannelConnectivity.SHUTDOWN,
101 channel.get_state(
False))
108 with self.assertRaises(aio.UsageError):
109 await channel.wait_for_state_change(
110 grpc.ChannelConnectivity.SHUTDOWN)
113 if __name__ ==
'__main__':
114 logging.basicConfig(level=logging.DEBUG)
115 unittest.main(verbosity=2)