aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/interop-test-descriptions.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/interop-test-descriptions.md')
-rw-r--r--doc/interop-test-descriptions.md204
1 files changed, 203 insertions, 1 deletions
diff --git a/doc/interop-test-descriptions.md b/doc/interop-test-descriptions.md
index 84ceaa3081..98cd5ab4fc 100644
--- a/doc/interop-test-descriptions.md
+++ b/doc/interop-test-descriptions.md
@@ -4,7 +4,7 @@ Interoperability Test Case Descriptions
Client and server use
[test.proto](https://github.com/grpc/grpc/blob/master/test/proto/test.proto)
and the [gRPC over HTTP/2 v2
-protocol](https://github.com/grpc/grpc-common/blob/master/PROTOCOL-HTTP2.md).
+protocol](doc/PROTOCOL-HTTP2.md).
Client
------
@@ -91,6 +91,87 @@ Client asserts:
* 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.
@@ -184,6 +265,112 @@ Client asserts:
* 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.
@@ -825,6 +1012,21 @@ 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