The server cleanup method is untested.
The join() function that exposes it is only called by the internals of threading.py, and we don't hold a reference to the server thread to explicitly join() it, and I'm not sure we should add a reference just for this purpose.
Moreover, the threading.py only calls join(None), the code path in question isn't even exercised by the internals of threading.py. Its just there to make sure we properly follow the join(timeout) semantics.
The requirement that any created managed call must have operations
performed on it is obstructing proper handling of the case of
applications providing invalid invocation metadata. In such cases the
RPC is "over before it starts" when the very first call to
start_client_batch returns an error.
Add use_tls, use_test_ca, and server_host_override flags to Python
stress client. These are needed to run the stress client against a local
server that is using tls.
To support magical internal build processes, the pb2 files need to be
split into pure-proto and gRPC parts. This performs that split and
further fixes bad module names in the test harness that interfered with
the intended test implementation.
An unfortunate side effect, due to limitations of protoc and holdover
behavior we must support in major version 1.x, is that trash files are
generated in split generation. This shouldn't be a problem in normal
protoc plugin use.
Add the code for three new interop tests: unimplemented_method,
unimplemented_service, and custom_metadata.
Fix and refactor the code for status_code_and_message.