From bb5e0183753c6d16707e1844bbe365d5ee15657c Mon Sep 17 00:00:00 2001 From: David Garcia Quintas Date: Tue, 25 Aug 2015 12:46:02 -0700 Subject: Added compression specs --- doc/interop-test-descriptions.md | 202 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) (limited to 'doc/interop-test-descriptions.md') diff --git a/doc/interop-test-descriptions.md b/doc/interop-test-descriptions.md index 84ceaa3081..75110e8977 100644 --- a/doc/interop-test-descriptions.md +++ b/doc/interop-test-descriptions.md @@ -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: + 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: + 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: + 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: + 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: + 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: + 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 -- cgit v1.2.3