Merge pull request #2675 from stanley-cheung/php_call_peer_address

Exposed channel target and call peer in PHP
pull/2677/head
Michael Lumish 10 years ago
commit 6284cdb00d
  1. 14
      src/php/ext/grpc/call.c
  2. 14
      src/php/ext/grpc/channel.c
  3. 7
      src/php/lib/Grpc/AbstractCall.php
  4. 7
      src/php/lib/Grpc/BaseStub.php
  5. 7
      src/php/tests/generated_code/AbstractGeneratedCodeTest.php
  6. 9
      src/php/tests/interop/interop_client.php
  7. 4
      src/php/tests/unit_tests/CallTest.php
  8. 8
      src/php/tests/unit_tests/EndToEndTest.php

@ -472,6 +472,16 @@ cleanup:
RETURN_DESTROY_ZVAL(result);
}
/**
* Get the endpoint this call/stream is connected to
* @return string The URI of the endpoint
*/
PHP_METHOD(Call, getPeer) {
wrapped_grpc_call *call =
(wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
RETURN_STRING(grpc_call_get_peer(call->wrapped), 1);
}
/**
* Cancel the call. This will cause the call to end with STATUS_CANCELLED if it
* has not already ended with another status.
@ -485,7 +495,9 @@ PHP_METHOD(Call, cancel) {
static zend_function_entry call_methods[] = {
PHP_ME(Call, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
PHP_ME(Call, startBatch, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Call, cancel, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
PHP_ME(Call, getPeer, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Call, cancel, NULL, ZEND_ACC_PUBLIC)
PHP_FE_END};
void grpc_init_call(TSRMLS_D) {
zend_class_entry ce;

@ -194,6 +194,16 @@ PHP_METHOD(Channel, __construct) {
memcpy(channel->target, override, override_len);
}
/**
* Get the endpoint this call/stream is connected to
* @return string The URI of the endpoint
*/
PHP_METHOD(Channel, getTarget) {
wrapped_grpc_channel *channel =
(wrapped_grpc_channel *)zend_object_store_get_object(getThis() TSRMLS_CC);
RETURN_STRING(grpc_channel_get_target(channel->wrapped), 1);
}
/**
* Close the channel
*/
@ -208,7 +218,9 @@ PHP_METHOD(Channel, close) {
static zend_function_entry channel_methods[] = {
PHP_ME(Channel, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
PHP_ME(Channel, close, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
PHP_ME(Channel, getTarget, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Channel, close, NULL, ZEND_ACC_PUBLIC)
PHP_FE_END};
void grpc_init_channel(TSRMLS_D) {
zend_class_entry ce;

@ -67,6 +67,13 @@ abstract class AbstractCall {
return $this->metadata;
}
/**
* @return string The URI of the endpoint.
*/
public function getPeer() {
return $this->call->getPeer();
}
/**
* Cancels the call
*/

@ -67,6 +67,13 @@ class BaseStub {
$this->channel = new Channel($hostname, $opts);
}
/**
* @return string The URI of the endpoint.
*/
public function getTarget() {
return $this->channel->getTarget();
}
/**
* Close the communication channel associated with this stub
*/

@ -43,7 +43,9 @@ abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase {
$div_arg = new math\DivArgs();
$div_arg->setDividend(7);
$div_arg->setDivisor(4);
list($response, $status) = self::$client->Div($div_arg)->wait();
$call = self::$client->Div($div_arg);
$this->assertTrue(is_string($call->getPeer()));
list($response, $status) = $call->wait();
$this->assertSame(1, $response->getQuotient());
$this->assertSame(3, $response->getRemainder());
$this->assertSame(\Grpc\STATUS_OK, $status->code);
@ -53,6 +55,7 @@ abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase {
$fib_arg = new math\FibArgs();
$fib_arg->setLimit(7);
$call = self::$client->Fib($fib_arg);
$this->assertTrue(is_string($call->getPeer()));
$result_array = iterator_to_array($call->responses());
$extract_num = function($num){
return $num->getNum();
@ -72,6 +75,7 @@ abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase {
}
};
$call = self::$client->Sum($num_iter());
$this->assertTrue(is_string($call->getPeer()));
list($response, $status) = $call->wait();
$this->assertSame(21, $response->getNum());
$this->assertSame(\Grpc\STATUS_OK, $status->code);
@ -79,6 +83,7 @@ abstract class AbstractGeneratedCodeTest extends PHPUnit_Framework_TestCase {
public function testBidiStreaming() {
$call = self::$client->DivMany();
$this->assertTrue(is_string($call->getPeer()));
for ($i = 0; $i < 7; $i++) {
$div_arg = new math\DivArgs();
$div_arg->setDividend(2 * $i + 1);

@ -332,10 +332,11 @@ if (in_array($args['test_case'], array(
$opts['update_metadata'] = $auth->getUpdateMetadataFunc();
}
$stub = new grpc\testing\TestServiceClient(
new Grpc\BaseStub(
$server_address,
$opts));
$internal_stub = new Grpc\BaseStub($server_address, $opts);
hardAssert(is_string($internal_stub->getTarget()),
'Unexpected target URI value');
$stub = new grpc\testing\TestServiceClient($internal_stub);
echo "Connecting to $server_address\n";
echo "Running test case $args[test_case]\n";

@ -79,4 +79,8 @@ class CallTest extends PHPUnit_Framework_TestCase{
$result = $this->call->startBatch($batch);
$this->assertTrue($result->send_metadata);
}
public function testGetPeer() {
$this->assertTrue(is_string($this->call->getPeer()));
}
}

@ -34,8 +34,8 @@
class EndToEndTest extends PHPUnit_Framework_TestCase{
public function setUp() {
$this->server = new Grpc\Server([]);
$port = $this->server->addHttp2Port('0.0.0.0:0');
$this->channel = new Grpc\Channel('localhost:' . $port, []);
$this->port = $this->server->addHttp2Port('0.0.0.0:0');
$this->channel = new Grpc\Channel('localhost:' . $this->port, []);
$this->server->start();
}
@ -149,4 +149,8 @@ class EndToEndTest extends PHPUnit_Framework_TestCase{
unset($call);
unset($server_call);
}
public function testGetTarget() {
$this->assertTrue(is_string($this->channel->getTarget()));
}
}

Loading…
Cancel
Save