Skip to content

Commit

Permalink
php: implement custom_metadata interop test
Browse files Browse the repository at this point in the history
  • Loading branch information
stanley-cheung committed Jun 17, 2016
1 parent fd79790 commit e2e0873
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions src/php/tests/interop/interop_client.php
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,64 @@ function timeoutOnSleepingServer($stub)
'Call status was not DEADLINE_EXCEEDED');
}

function customMetadata($stub)
{
$ECHO_INITIAL_KEY = 'x-grpc-test-echo-initial';
$ECHO_INITIAL_VALUE = 'test_initial_metadata_value';
$ECHO_TRAILING_KEY = 'x-grpc-test-echo-trailing-bin';
$ECHO_TRAILING_VALUE = 'ababab';
$request_len = 271828;
$response_len = 314159;

$request = new grpc\testing\SimpleRequest();
$request->setResponseType(grpc\testing\PayloadType::COMPRESSABLE);
$request->setResponseSize($response_len);
$payload = new grpc\testing\Payload();
$payload->setType(grpc\testing\PayloadType::COMPRESSABLE);
$payload->setBody(str_repeat("\0", $request_len));
$request->setPayload($payload);

$metadata = [
$ECHO_INITIAL_KEY => [$ECHO_INITIAL_VALUE],
$ECHO_TRAILING_KEY => [$ECHO_TRAILING_VALUE],
];
$call = $stub->UnaryCall($request, $metadata);

$initial_metadata = $call->getMetadata();
hardAssert(array_key_exists($ECHO_INITIAL_KEY, $initial_metadata),
'Initial metadata does not contain expected key');
hardAssert($initial_metadata[$ECHO_INITIAL_KEY][0] ==
$ECHO_INITIAL_VALUE,
'Incorrect initial metadata value');

list($result, $status) = $call->wait();
hardAssert($status->code === Grpc\STATUS_OK,
'Call did not complete successfully');

$trailing_metadata = $call->getTrailingMetadata();
hardAssert(array_key_exists($ECHO_TRAILING_KEY, $trailing_metadata),
'Trailing metadata does not contain expected key');
hardAssert($trailing_metadata[$ECHO_TRAILING_KEY][0] ==
$ECHO_TRAILING_VALUE, 'Incorrect trailing metadata value');

$streaming_call = $stub->FullDuplexCall($metadata);

$streaming_request = new grpc\testing\StreamingOutputCallRequest();
$streaming_request->setPayload($payload);
$streaming_call->write($streaming_request);
$streaming_call->writesDone();

hardAssert($streaming_call->getStatus()->code === Grpc\STATUS_OK,
'Call did not complete successfully');

$streaming_trailing_metadata = $streaming_call->getTrailingMetadata();
hardAssert(array_key_exists($ECHO_TRAILING_KEY,
$streaming_trailing_metadata),
'Trailing metadata does not contain expected key');
hardAssert($streaming_trailing_metadata[$ECHO_TRAILING_KEY][0] ==
$ECHO_TRAILING_VALUE, 'Incorrect trailing metadata value');
}

function _makeStub($args)
{
if (!array_key_exists('server_host', $args)) {
Expand Down Expand Up @@ -514,6 +572,9 @@ function interop_main($args, $stub = false)
case 'timeout_on_sleeping_server':
timeoutOnSleepingServer($stub);
break;
case 'custom_metadata':
customMetadata($stub);
break;
case 'service_account_creds':
serviceAccountCreds($stub, $args);
break;
Expand Down

0 comments on commit e2e0873

Please sign in to comment.