Implement wait-for-ready behavior in Python stress and qps client

The clients now block until the channel is in the READY state. This
fixes some test flakiness issues we have had.
pull/9286/head
ncteisen 8 years ago
parent a3960b98d6
commit d70c8bb871
  1. 8
      src/python/grpcio_tests/tests/qps/benchmark_client.py
  2. 9
      src/python/grpcio_tests/tests/stress/client.py

@ -68,12 +68,8 @@ class BenchmarkClient:
else:
channel = grpc.insecure_channel(server)
connected_event = threading.Event()
def wait_for_ready(connectivity):
if connectivity == grpc.ChannelConnectivity.READY:
connected_event.set()
channel.subscribe(wait_for_ready, try_to_connect=True)
connected_event.wait()
# waits for the channel to be ready before we start sending messages
grpc.channel_ready_future(channel).result()
if config.payload_config.WhichOneof('payload') == 'simple_params':
self._generic = False

@ -110,10 +110,13 @@ def _get_channel(target, args):
channel_credentials = grpc.ssl_channel_credentials(
root_certificates=root_certificates)
options = (('grpc.ssl_target_name_override', args.server_host_override,),)
return grpc.secure_channel(
target, channel_credentials, options=options)
channel = grpc.secure_channel(target, channel_credentials, options=options)
else:
return grpc.insecure_channel(target)
channel = grpc.insecure_channel(target)
# waits for the channel to be ready before we start sending messages
grpc.channel_ready_future(channel).result()
return channel
def run_test(args):
test_cases = _parse_weighted_test_cases(args.test_cases)

Loading…
Cancel
Save