diff --git a/src/php/tests/interop/interop_client.php b/src/php/tests/interop/interop_client.php index d1f994a84b6..afae738c7e0 100755 --- a/src/php/tests/interop/interop_client.php +++ b/src/php/tests/interop/interop_client.php @@ -149,6 +149,25 @@ function pingPong($stub) { 'Call did not complete successfully'); } +function cancelAfterFirstResponse($stub) { + $call = $stub->StreamingInputCall(); + $request = new grpc\testing\StreamingOutputCallRequest(); + $request->setResponseType(grpc\testing\PayloadType::COMPRESSABLE); + $response_parameters = new grpc\testing\ResponseParameters(); + $response_parameters->setSize(31415); + $request->addResponseParameters($response_parameters); + $payload = new grpc\testing\Payload(); + $payload->setBody(str_repeat("\0", 27182)); + $request->setPayload($payload); + + $call->write($request); + $response = $call->read(); + + $call->cancel(); + hardAssert($call->getStatus()->code === Grpc\STATUS_CANCELLED, + 'Call status was not CANCELLED'); +} + $args = getopt('', array('server_host:', 'server_port:', 'test_case:')); if (!array_key_exists('server_host', $args) || !array_key_exists('server_port', $args) || @@ -187,4 +206,6 @@ switch($args['test_case']) { case 'ping_pong': pingPong($stub); break; + case 'cancel_after_first_response': + cancelAfterFirstResponse($stub); } \ No newline at end of file