Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: third_party/grpc/doc/interop-test-descriptions.md

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/grpc/doc/health-checking.md ('k') | third_party/grpc/doc/load-balancing.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/grpc/doc/interop-test-descriptions.md
diff --git a/third_party/grpc/doc/interop-test-descriptions.md b/third_party/grpc/doc/interop-test-descriptions.md
new file mode 100644
index 0000000000000000000000000000000000000000..3beb1d11f4a8f2a28164376dadc704ada27f3030
--- /dev/null
+++ b/third_party/grpc/doc/interop-test-descriptions.md
@@ -0,0 +1,1044 @@
+Interoperability Test Case Descriptions
+=======================================
+
+Client and server use
+[test.proto](../src/proto/grpc/testing/test.proto)
+and the [gRPC over HTTP/2 v2 protocol](./PROTOCOL-HTTP2.md).
+
+Client
+------
+
+Clients implement test cases that test certain functionally. Each client is
+provided the test case it is expected to run as a command-line parameter. Names
+should be lowercase and without spaces.
+
+Clients should accept these arguments:
+* --server_host=HOSTNAME
+ * The server host to connect to. For example, "localhost" or "127.0.0.1"
+* --server_host_override=HOSTNAME
+ * The server host to claim to be connecting to, for use in TLS and HTTP/2
+ :authority header. If unspecified, the value of --server_host will be
+ used
+* --server_port=PORT
+ * The server port to connect to. For example, "8080"
+* --test_case=TESTCASE
+ * The name of the test case to execute. For example, "empty_unary"
+* --use_tls=BOOLEAN
+ * Whether to use a plaintext or encrypted connection
+* --use_test_ca=BOOLEAN
+ * Whether to replace platform root CAs with
+ [ca.pem](https://github.com/grpc/grpc/blob/master/src/core/tsi/test_creds/ca.pem)
+ as the CA root
+* --default_service_account=ACCOUNT_EMAIL
+ * Email of the GCE default service account. Only applicable
+ for compute_engine_creds test.
+* --oauth_scope=SCOPE
+ * OAuth scope. For example, "https://www.googleapis.com/auth/xapi.zoo"
+* --service_account_key_file=PATH
+ * The path to the service account JSON key file generated from GCE developer
+ console.
+
+Clients must support TLS with ALPN. Clients must not disable certificate
+checking.
+
+### empty_unary
+
+This test verifies that implementations support zero-size messages. Ideally,
+client implementations would verify that the request and response were zero
+bytes serialized, but this is generally prohibitive to perform, so is not
+required.
+
+Server features:
+* [EmptyCall][]
+
+Procedure:
+ 1. Client calls EmptyCall with the default Empty message
+
+Client asserts:
+* call was successful
+* response is non-null
+
+*It may be possible to use UnaryCall instead of EmptyCall, but it is harder to
+ensure that the proto serialized to zero bytes.*
+
+### large_unary
+
+This test verifies unary calls succeed in sending messages, and touches on flow
+control (even if compression is enabled on the channel).
+
+Server features:
+* [UnaryCall][]
+* [Compressable Payload][]
+
+Procedure:
+ 1. Client calls UnaryCall with:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+
+Client asserts:
+* call was successful
+* response payload type is COMPRESSABLE
+* response payload body is 314159 bytes in size
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response message against a golden response
+
+### large_compressed_unary
+
+This test verifies compressed unary calls succeed in sending messages. It
+sends one unary request for every combination of compression algorithm and
+payload type.
+
+In all scenarios, whether compression was actually performed is determined by
+the compression bit in the response's message flags. The response's compression
+value indicates which algorithm was used if said compression bit is set.
+
+
+Server features:
+* [UnaryCall][]
+* [Compressable Payload][]
+* [Uncompressable Payload][]
+* [Random Payload][]
+
+Procedure:
+ 1. Client calls UnaryCall with:
+
+ ```
+ {
+ response_compression: <one of {NONE, GZIP, DEFLATE}>
+ response_type: COMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+ Client asserts:
+ * call was successful
+ * response payload type is COMPRESSABLE
+ * response compression is consistent with the requested one.
+ * if `response_compression == NONE`, the response MUST NOT have the
+ compressed message flag set.
+ * if `response_compression != NONE`, the response MUST have the compressed
+ message flag set.
+ * response payload body is 314159 bytes in size
+ * clients are free to assert that the response payload body contents are
+ zero and comparing the entire response message against a golden response
+
+
+ 2. Client calls UnaryCall with:
+ ```
+ {
+ response_compression: <one of {NONE, GZIP, DEFLATE}>
+ response_type: UNCOMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+ Client asserts:
+ * call was successful
+ * response payload type is UNCOMPRESSABLE
+ * response compression is consistent with the requested one.
+ * the response MUST NOT have the compressed message flag set.
+ * response payload body is 314159 bytes in size
+ * clients are free to assert that the response payload body contents are
+ identical to the golden uncompressable data at `test/cpp/interop/rnd.dat`.
+
+
+ 3. Client calls UnaryCall with:
+ ```
+ {
+ response_compression: <one of {NONE, GZIP, DEFLATE}>
+ response_type: RANDOM
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+ Client asserts:
+ * call was successful
+ * response payload type is either COMPRESSABLE or UNCOMPRESSABLE
+ * the behavior is consistent with the randomly chosen incoming payload type,
+ as described in their respective sections.
+
+### client_streaming
+
+This test verifies that client-only streaming succeeds.
+
+Server features:
+* [StreamingInputCall][]
+* [Compressable Payload][]
+
+Procedure:
+ 1. Client calls StreamingInputCall
+ 2. Client sends:
+
+ ```
+ {
+ payload:{
+ body: 27182 bytes of zeros
+ }
+ }
+ ```
+
+ 3. Client then sends:
+
+ ```
+ {
+ payload:{
+ body: 8 bytes of zeros
+ }
+ }
+ ```
+
+ 4. Client then sends:
+
+ ```
+ {
+ payload:{
+ body: 1828 bytes of zeros
+ }
+ }
+ ```
+
+ 5. Client then sends:
+
+ ```
+ {
+ payload:{
+ body: 45904 bytes of zeros
+ }
+ }
+ ```
+
+ 6. Client half-closes
+
+Client asserts:
+* call was successful
+* response aggregated_payload_size is 74922
+
+### server_streaming
+
+This test verifies that server-only streaming succeeds.
+
+Server features:
+* [StreamingOutputCall][]
+* [Compressable Payload][]
+
+Procedure:
+ 1. Client calls StreamingOutputCall with:
+
+ ```
+ {
+ response_type:COMPRESSABLE
+ response_parameters:{
+ size: 31415
+ }
+ response_parameters:{
+ size: 9
+ }
+ response_parameters:{
+ size: 2653
+ }
+ response_parameters:{
+ size: 58979
+ }
+ }
+ ```
+
+Client asserts:
+* call was successful
+* exactly four responses
+* response payloads are COMPRESSABLE
+* response payload bodies are sized (in order): 31415, 9, 2653, 58979
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response messages against golden responses
+
+### server_compressed_streaming
+
+This test verifies that server-only compressed streaming succeeds.
+
+Server features:
+* [StreamingOutputCall][]
+* [Compressable Payload][]
+* [Uncompressable Payload][]
+* [Random Payload][]
+
+
+Procedure:
+ 1. Client calls StreamingOutputCall with:
+
+ ```
+ {
+ response_compression: <one of {NONE, GZIP, DEFLATE}>
+ response_type:COMPRESSABLE
+ response_parameters:{
+ size: 31415
+ }
+ response_parameters:{
+ size: 9
+ }
+ response_parameters:{
+ size: 2653
+ }
+ response_parameters:{
+ size: 58979
+ }
+ }
+ ```
+
+ Client asserts:
+ * call was successful
+ * exactly four responses
+ * response payloads are COMPRESSABLE
+ * response compression is consistent with the requested one.
+ * if `response_compression == NONE`, the response MUST NOT have the
+ compressed message flag set.
+ * if `response_compression != NONE`, the response MUST have the compressed
+ message flag set.
+ * response payload bodies are sized (in order): 31415, 9, 2653, 58979
+ * clients are free to assert that the response payload body contents are
+ zero and comparing the entire response messages against golden responses
+
+
+ 2. Client calls StreamingOutputCall with:
+
+ ```
+ {
+ response_compression: <one of {NONE, GZIP, DEFLATE}>
+ response_type:UNCOMPRESSABLE
+ response_parameters:{
+ size: 31415
+ }
+ response_parameters:{
+ size: 9
+ }
+ response_parameters:{
+ size: 2653
+ }
+ response_parameters:{
+ size: 58979
+ }
+ }
+ ```
+
+ Client asserts:
+ * call was successful
+ * exactly four responses
+ * response payloads are UNCOMPRESSABLE
+ * response compressions are consistent with the requested one.
+ * the responses MUST NOT have the compressed message flag set.
+ * response payload bodies are sized (in order): 31415, 9, 2653, 58979
+ * clients are free to assert that the body of the responses are identical to
+ the golden uncompressable data at `test/cpp/interop/rnd.dat`.
+
+
+ 3. Client calls StreamingOutputCall with:
+
+ ```
+ {
+ response_compression: <one of {NONE, GZIP, DEFLATE}>
+ response_type:RANDOM
+ response_parameters:{
+ size: 31415
+ }
+ response_parameters:{
+ size: 9
+ }
+ response_parameters:{
+ size: 2653
+ }
+ response_parameters:{
+ size: 58979
+ }
+ }
+ ```
+
+ Client asserts:
+ * call was successful
+ * response payload type is either COMPRESSABLE or UNCOMPRESSABLE
+ * the behavior is consistent with the randomly chosen incoming payload type,
+ as described in their respective sections.
+
+### ping_pong
+
+This test verifies that full duplex bidi is supported.
+
+Server features:
+* [FullDuplexCall][]
+* [Compressable Payload][]
+
+Procedure:
+ 1. Client calls FullDuplexCall with:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_parameters:{
+ size: 31415
+ }
+ payload:{
+ body: 27182 bytes of zeros
+ }
+ }
+ ```
+
+ 2. After getting a reply, it sends:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_parameters:{
+ size: 9
+ }
+ payload:{
+ body: 8 bytes of zeros
+ }
+ }
+ ```
+
+ 3. After getting a reply, it sends:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_parameters:{
+ size: 2653
+ }
+ payload:{
+ body: 1828 bytes of zeros
+ }
+ }
+ ```
+
+ 4. After getting a reply, it sends:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_parameters:{
+ size: 58979
+ }
+ payload:{
+ body: 45904 bytes of zeros
+ }
+ }
+ ```
+
+ 5. After getting a reply, client half-closes
+
+Client asserts:
+* call was successful
+* exactly four responses
+* response payloads are COMPRESSABLE
+* response payload bodies are sized (in order): 31415, 9, 2653, 58979
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response messages against golden responses
+
+### empty_stream
+
+This test verifies that streams support having zero-messages in both
+directions.
+
+Server features:
+* [FullDuplexCall][]
+
+Procedure:
+ 1. Client calls FullDuplexCall and then half-closes
+
+Client asserts:
+* call was successful
+* exactly zero responses
+
+### compute_engine_creds
+
+This test is only for cloud-to-prod path.
+
+This test verifies unary calls succeed in sending messages while using Service
+Credentials from GCE metadata server. The client instance needs to be created
+with desired oauth scope.
+
+The test uses `--default_service_account` with GCE service account email and
+`--oauth_scope` with the OAuth scope to use. For testing against
+grpc-test.sandbox.googleapis.com, "https://www.googleapis.com/auth/xapi.zoo" should
+be passed in as `--oauth_scope`.
+
+Server features:
+* [UnaryCall][]
+* [Compressable Payload][]
+* [Echo Authenticated Username][]
+* [Echo OAuth Scope][]
+
+Procedure:
+ 1. Client configures channel to use GCECredentials
+ 2. Client calls UnaryCall on the channel with:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ fill_username: true
+ fill_oauth_scope: true
+ }
+ ```
+
+Client asserts:
+* call was successful
+* received SimpleResponse.username equals the value of `--default_service_account` flag
+* received SimpleResponse.oauth_scope is in `--oauth_scope`
+* response payload body is 314159 bytes in size
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response message against a golden response
+
+### jwt_token_creds
+
+This test is only for cloud-to-prod path.
+
+This test verifies unary calls succeed in sending messages while using JWT
+token (created by the project's key file)
+
+Test caller should set flag `--service_account_key_file` with the
+path to json key file downloaded from
+https://console.developers.google.com. Alternately, if using a
+usable auth implementation, she may specify the file location in the environment
+variable GOOGLE_APPLICATION_CREDENTIALS.
+
+Server features:
+* [UnaryCall][]
+* [Compressable Payload][]
+* [Echo Authenticated Username][]
+* [Echo OAuth Scope][]
+
+Procedure:
+ 1. Client configures the channel to use JWTTokenCredentials
+ 2. Client calls UnaryCall with:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ fill_username: true
+ }
+ ```
+
+Client asserts:
+* call was successful
+* received SimpleResponse.username is not empty and is in the json key file used
+by the auth library. The client can optionally check the username matches the
+email address in the key file or equals the value of `--default_service_account` flag.
+* response payload body is 314159 bytes in size
+* clients are free to assert that the response payload body contents are zero
+ and comparing the entire response message against a golden response
+
+### oauth2_auth_token
+
+This test is only for cloud-to-prod path and some implementations may run
+in GCE only.
+
+This test verifies unary calls succeed in sending messages using an OAuth2 token
+that is obtained out of band. For the purpose of the test, the OAuth2 token is
+actually obtained from a service account credentials or GCE credentials via the
+language-specific authorization library.
+
+The difference between this test and the other auth tests is that it
+first uses the authorization library to obtain an authorization token.
+
+The test
+- uses the flag `--service_account_key_file` with the path to a json key file
+downloaded from https://console.developers.google.com. Alternately, if using a
+usable auth implementation, it may specify the file location in the environment
+variable GOOGLE_APPLICATION_CREDENTIALS, *OR* if GCE credentials is used to
+fetch the token, `--default_service_account` can be used to pass in GCE service
+account email.
+- uses the flag `--oauth_scope` for the oauth scope. For testing against
+grpc-test.sandbox.googleapis.com, "https://www.googleapis.com/auth/xapi.zoo" should
+be passed as the `--oauth_scope`.
+
+Server features:
+* [UnaryCall][]
+* [Compressable Payload][]
+* [Echo Authenticated Username][]
+* [Echo OAuth Scope][]
+
+Procedure:
+ 1. Client uses the auth library to obtain an authorization token
+ 2. Client configures the channel to use AccessTokenCredentials with the access token obtained in step 1
+ 3. Client calls UnaryCall with the following message
+
+ ```
+ {
+ fill_username: true
+ fill_oauth_scope: true
+ }
+ ```
+
+Client asserts:
+* call was successful
+* received SimpleResponse.username is valid. Depending on whether a service
+account key file or GCE credentials was used, client should check against the
+json key file or GCE default service account email.
+* received SimpleResponse.oauth_scope is in `--oauth_scope`
+
+### per_rpc_creds
+
+Similar to the other auth tests, this test is only for cloud-to-prod path.
+
+This test verifies unary calls succeed in sending messages using a JWT or a service account
+credentials set on the RPC.
+
+The test
+- uses the flag `--service_account_key_file` with the path to a json key file
+downloaded from https://console.developers.google.com. Alternately, if using a
+usable auth implementation, it may specify the file location in the environment
+variable GOOGLE_APPLICATION_CREDENTIALS
+- optionally uses the flag `--oauth_scope` for the oauth scope if implementator
+wishes to use service account credential instead of JWT credential. For testing
+against grpc-test.sandbox.googleapis.com, oauth scope
+"https://www.googleapis.com/auth/xapi.zoo" should be used.
+
+Server features:
+* [UnaryCall][]
+* [Compressable Payload][]
+* [Echo Authenticated Username][]
+* [Echo OAuth Scope][]
+
+Procedure:
+ 1. Client configures the channel with just SSL credentials
+ 2. Client calls UnaryCall, setting per-call credentials to
+ JWTTokenCredentials. The request is the following message
+
+ ```
+ {
+ fill_username: true
+ }
+ ```
+
+Client asserts:
+* call was successful
+* received SimpleResponse.username is not empty and is in the json key file used
+by the auth library. The client can optionally check the username matches the
+email address in the key file.
+
+
+### custom_metadata
+
+This test verifies that custom metadata in either binary or ascii format can be
+sent as initial-metadata by the client and as both initial- and trailing-metadata
+by the server.
+
+Server features:
+* [UnaryCall][]
+* [FullDuplexCall][]
+* [Compressable Payload][]
+* [Echo Metadata][]
+
+Procedure:
+ 1. The client attaches custom metadata with the following keys and values:
+
+ ```
+ key: "x-grpc-test-echo-initial", value: "test_initial_metadata_value"
+ key: "x-grpc-test-echo-trailing-bin", value: 0xababab
+ ```
+
+ to a UnaryCall with request:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+
+ 2. The client attaches custom metadata with the following keys and values:
+
+ ```
+ key: "x-grpc-test-echo-initial", value: "test_initial_metadata_value"
+ key: "x-grpc-test-echo-trailing-bin", value: 0xababab
+ ```
+
+ to a FullDuplexCall with request:
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_size: 314159
+ payload:{
+ body: 271828 bytes of zeros
+ }
+ }
+ ```
+
+ and then half-closes
+
+Client asserts:
+* call was successful
+* metadata with key `"x-grpc-test-echo-initial"` and value
+ `"test_initial_metadata_value"`is received in the initial metadata for calls
+ in Procedure steps 1 and 2.
+* metadata with key `"x-grpc-test-echo-trailing-bin"` and value `0xababab` is
+ received in the trailing metadata for calls in Procedure steps 1 and 2.
+
+
+
+### status_code_and_message
+
+This test verifies unary calls succeed in sending messages, and propagate back
+status code and message sent along with the messages.
+
+Server features:
+* [UnaryCall][]
+* [FullDuplexCall][]
+* [Echo Status][]
+
+Procedure:
+ 1. Client calls UnaryCall with:
+
+ ```
+ {
+ response_status:{
+ code: 2
+ message: "test status message"
+ }
+ }
+ ```
+
+ 2. Client calls FullDuplexCall with:
+
+ ```
+ {
+ response_status:{
+ code: 2
+ message: "test status message"
+ }
+ }
+ ```
+
+ and then half-closes
+
+
+Client asserts:
+* received status code is the same as the sent code for both Procedure steps 1
+ and 2
+* received status message is the same as the sent message for both Procedure
+ steps 1 and 2
+
+### unimplemented_method
+
+Status: Ready for implementation. Blocking beta.
+
+This test verifies calling unimplemented RPC method returns the UNIMPLEMENTED status code.
+
+Server features:
+N/A
+
+Procedure:
+* Client calls `grpc.testing.UnimplementedService/UnimplementedCall` with an
+ empty request (defined as `grpc.testing.Empty`):
+
+ ```
+ {
+ }
+ ```
+
+Client asserts:
+* received status code is 12 (UNIMPLEMENTED)
+* received status message is empty or null/unset
+
+### cancel_after_begin
+
+This test verifies that a request can be cancelled after metadata has been sent
+but before payloads are sent.
+
+Server features:
+* [StreamingInputCall][]
+
+Procedure:
+ 1. Client starts StreamingInputCall
+ 2. Client immediately cancels request
+
+Client asserts:
+* Call completed with status CANCELLED
+
+### cancel_after_first_response
+
+This test verifies that a request can be cancelled after receiving a message
+from the server.
+
+Server features:
+* [FullDuplexCall][]
+* [Compressable Payload][]
+
+Procedure:
+ 1. Client starts FullDuplexCall with
+
+ ```
+ {
+ response_type: COMPRESSABLE
+ response_parameters:{
+ size: 31415
+ }
+ payload:{
+ body: 27182 bytes of zeros
+ }
+ }
+ ```
+
+ 2. After receiving a response, client cancels request
+
+Client asserts:
+* Call completed with status CANCELLED
+
+### timeout_on_sleeping_server
+
+This test verifies that an RPC request whose lifetime exceeds its configured
+timeout value will end with the DeadlineExceeded status.
+
+Server features:
+* [FullDuplexCall][]
+
+Procedure:
+ 1. Client calls FullDuplexCall with the following request and sets its timeout
+ to 1ms
+
+ ```
+ {
+ payload:{
+ body: 27182 bytes of zeros
+ }
+ }
+ ```
+
+ 2. Client waits
+
+Client asserts:
+* Call completed with status DEADLINE_EXCEEDED.
+
+### concurrent_large_unary
+
+Status: TODO
+
+Client performs 1000 large_unary tests in parallel on the same channel.
+
+### Flow control. Pushback at client for large messages (TODO: fix name)
+
+Status: TODO
+
+This test verifies that a client sending faster than a server can drain sees
+pushback (i.e., attempts to send succeed only after appropriate delays).
+
+### TODO Tests
+
+#### High priority:
+
+Propagation of status code and message (yangg)
+
+Multiple thousand simultaneous calls on same Channel (ctiller)
+
+Metadata: client headers, server headers + trailers, binary+ascii
+
+#### Normal priority:
+
+Cancel before start (ctiller)
+
+Cancel after sent first message (ctiller)
+
+Cancel after received headers (ctiller)
+
+Timeout but completed before expire (zhaoq)
+
+Multiple thousand simultaneous calls timeout on same Channel (ctiller)
+
+#### Lower priority:
+
+Flow control. Pushback at client for large messages (abhishek)
+
+Flow control. Pushback at server for large messages (abhishek)
+
+Going over max concurrent streams doesn't fail (client controls itself)
+(abhishek)
+
+RPC method not implemented (yangg)
+
+Multiple thousand simultaneous calls on different Channels (ctiller)
+
+Failed TLS hostname verification (ejona?)
+
+Large amount of headers to cause CONTINUATIONs; 63K of 'X's, all in one header.
+
+#### To priorize:
+
+Start streaming RPC but don't send any requests, server responds
+
+### Postponed Tests
+
+Resilience to buggy servers: These tests would verify that a client application
+isn't affected negatively by the responses put on the wire by a buggy server
+(e.g. the client library won't make the application crash).
+
+Reconnect after transport failure
+
+Reconnect backoff
+
+Fuzz testing
+
+
+Server
+------
+
+Servers implement various named features for clients to test with. Server
+features are orthogonal. If a server implements a feature, it is always
+available for clients. Names are simple descriptions for developer
+communication and tracking.
+
+Servers should accept these arguments:
+
+* --port=PORT
+
+ * The port to listen on. For example, "8080"
+
+* --use_tls=BOOLEAN
+
+ * Whether to use a plaintext or encrypted connection
+
+Servers must support TLS with ALPN. They should use
+[server1.pem](https://github.com/grpc/grpc/blob/master/src/core/tsi/test_creds/server1.pem)
+for their certificate.
+
+### EmptyCall
+[EmptyCall]: #emptycall
+
+Server implements EmptyCall which immediately returns the empty message.
+
+### UnaryCall
+[UnaryCall]: #unarycall
+
+Server implements UnaryCall which immediately returns a SimpleResponse with a
+payload body of size SimpleRequest.response_size bytes and type as appropriate
+for the SimpleRequest.response_type. If the server does not support the
+response_type, then it should fail the RPC with INVALID_ARGUMENT.
+
+### StreamingInputCall
+[StreamingInputCall]: #streaminginputcall
+
+Server implements StreamingInputCall which upon half close immediately returns
+a StreamingInputCallResponse where aggregated_payload_size is the sum of all
+request payload bodies received.
+
+### StreamingOutputCall
+[StreamingOutputCall]: #streamingoutputcall
+
+Server implements StreamingOutputCall by replying, in order, with one
+StreamingOutputCallResponses for each ResponseParameters in
+StreamingOutputCallRequest. Each StreamingOutputCallResponses should have a
+payload body of size ResponseParameters.size bytes, as specified by its
+respective ResponseParameters. After sending all responses, it closes with OK.
+
+### FullDuplexCall
+[FullDuplexCall]: #fullduplexcall
+
+Server implements FullDuplexCall by replying, in order, with one
+StreamingOutputCallResponses for each ResponseParameters in each
+StreamingOutputCallRequest. Each StreamingOutputCallResponses should have a
+payload body of size ResponseParameters.size bytes, as specified by its
+respective ResponseParameters. After receiving half close and sending all
+responses, it closes with OK.
+
+### Compressable Payload
+[Compressable Payload]: #compressable-payload
+
+When the client requests COMPRESSABLE payload, the response includes a payload
+of the size requested containing all zeros and the payload type is
+COMPRESSABLE.
+
+### Uncompressable Payload
+[Uncompressable Payload]: #uncompressable-payload
+
+When the client requests UNCOMPRESSABLE payload, the response includes a payload
+of the size requested containing uncompressable data and the payload type is
+UNCOMPRESSABLE. A 512 kB dump from /dev/urandom is the current golden data,
+stored at `test/cpp/interop/rnd.dat`
+
+### Random Payload
+[Random Payload]: #random-payload
+
+When the client requests RANDOM payload, the response includes either a randomly
+chosen COMPRESSABLE or UNCOMPRESSABLE payload. The data and the payload type
+will be consistent with this choice.
+
+### Echo Status
+[Echo Status]: #echo-status
+When the client sends a response_status in the request payload, the server closes
+the stream with the status code and messsage contained within said response_status.
+The server will not process any further messages on the stream sent by the client.
+This can be used by clients to verify correct handling of different status codes and
+associated status messages end-to-end.
+
+### Echo Metadata
+[Echo Metadata]: #echo-metadata
+When the client sends metadata with the key `"x-grpc-test-echo-initial"` with its
+request, the server sends back exactly this key and the corresponding value back to
+the client as part of initial metadata. When the client sends metadata with the key
+`"x-grpc-test-echo-trailing-bin"` with its request, the server sends back exactly this
+key and the corresponding value back to the client as trailing metadata.
+
+### Observe ResponseParameters.interval_us
+[Observe ResponseParameters.interval_us]: #observe-responseparametersinterval_us
+
+In StreamingOutputCall and FullDuplexCall, server delays sending a
+StreamingOutputCallResponse by the ResponseParameters's interval_us for that
+particular response, relative to the last response sent. That is, interval_us
+acts like a sleep *before* sending the response and accumulates from one
+response to the next.
+
+Interaction with flow control is unspecified.
+
+### Echo Auth Information
+
+Status: Pending
+
+#### Echo Authenticated Username
+[Echo Authenticated Username]: #echo-authenticated-username
+
+If a SimpleRequest has fill_username=true and that request was successfully
+authenticated, then the SimpleResponse should have username filled with the
+canonical form of the authenticated source. The canonical form is dependent on
+the authentication method, but is likely to be a base 10 integer identifier or
+an email address.
+
+#### Echo OAuth scope
+[Echo OAuth Scope]: #echo-oauth-scope
+
+If a SimpleRequest has fill_oauth_scope=true and that request was successfully
+authenticated via OAuth, then the SimpleResponse should have oauth_scope filled
+with the scope of the method being invoked.
+
+Although a general server-side feature, most test servers won't implement this
+feature. The TLS server grpc-test.sandbox.googleapis.com:443 supports this feature.
+It requires at least the OAuth scope
+`https://www.googleapis.com/auth/xapi.zoo` for authentication to succeed.
+
+Discussion:
+
+Ideally, this would be communicated via metadata and not in the
+request/response, but we want to use this test in code paths that don't yet
+fully communicate metadata.
+
« no previous file with comments | « third_party/grpc/doc/health-checking.md ('k') | third_party/grpc/doc/load-balancing.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698