14 """Tests of grpc._channel.Channel connectivity."""
28 return grpc.ChannelConnectivity.READY
in connectivities
32 return connectivities[-1]
is not grpc.ChannelConnectivity.READY
54 if predicate(connectivities):
66 channel.subscribe(callback.update, try_to_connect=
False)
67 first_connectivities = callback.block_until_connectivities_satisfy(bool)
68 channel.subscribe(callback.update, try_to_connect=
True)
69 second_connectivities = callback.block_until_connectivities_satisfy(
70 lambda connectivities: 2 <=
len(connectivities))
72 time.sleep(test_constants.SHORT_TIMEOUT)
73 third_connectivities = callback.connectivities()
74 channel.unsubscribe(callback.update)
75 fourth_connectivities = callback.connectivities()
76 channel.unsubscribe(callback.update)
77 fifth_connectivities = callback.connectivities()
81 self.assertSequenceEqual((grpc.ChannelConnectivity.IDLE,),
83 self.assertNotIn(grpc.ChannelConnectivity.READY, second_connectivities)
84 self.assertNotIn(grpc.ChannelConnectivity.READY, third_connectivities)
85 self.assertNotIn(grpc.ChannelConnectivity.READY, fourth_connectivities)
86 self.assertNotIn(grpc.ChannelConnectivity.READY, fifth_connectivities)
92 options=((
'grpc.so_reuseport', 0),))
93 port = server.add_insecure_port(
'[::]:0')
99 channel.subscribe(first_callback.update, try_to_connect=
False)
100 first_connectivities = first_callback.block_until_connectivities_satisfy(
104 time.sleep(test_constants.SHORT_TIMEOUT)
105 second_connectivities = first_callback.connectivities()
106 channel.subscribe(second_callback.update, try_to_connect=
True)
107 third_connectivities = first_callback.block_until_connectivities_satisfy(
108 lambda connectivities: 2 <=
len(connectivities))
109 fourth_connectivities = second_callback.block_until_connectivities_satisfy(
112 first_callback.block_until_connectivities_satisfy(
113 _ready_in_connectivities)
114 second_callback.block_until_connectivities_satisfy(
115 _ready_in_connectivities)
119 self.assertSequenceEqual((grpc.ChannelConnectivity.IDLE,),
120 first_connectivities)
121 self.assertSequenceEqual((grpc.ChannelConnectivity.IDLE,),
122 second_connectivities)
123 self.assertNotIn(grpc.ChannelConnectivity.TRANSIENT_FAILURE,
124 third_connectivities)
125 self.assertNotIn(grpc.ChannelConnectivity.SHUTDOWN,
126 third_connectivities)
127 self.assertNotIn(grpc.ChannelConnectivity.TRANSIENT_FAILURE,
128 fourth_connectivities)
129 self.assertNotIn(grpc.ChannelConnectivity.SHUTDOWN,
130 fourth_connectivities)
131 self.assertFalse(recording_thread_pool.was_used())
137 options=((
'grpc.so_reuseport', 0),))
138 port = server.add_insecure_port(
'[::]:0')
143 channel.subscribe(callback.update, try_to_connect=
True)
144 callback.block_until_connectivities_satisfy(_ready_in_connectivities)
147 callback.block_until_connectivities_satisfy(
148 _last_connectivity_is_not_ready)
149 channel.unsubscribe(callback.update)
151 self.assertFalse(recording_thread_pool.was_used())
154 if __name__ ==
'__main__':
155 logging.basicConfig()
156 unittest.main(verbosity=2)