diff options
author | 2018-05-08 10:24:30 -0700 | |
---|---|---|
committer | 2018-05-08 10:24:30 -0700 | |
commit | 6d5c2c250d4f96af7cc413ce245dc131a9cf4cf9 (patch) | |
tree | 29c94b81a45c1182d41f6dce8dc8e2391614b933 /src/php | |
parent | dc01cb64c25abc14f6d0ab24db1afd019a37d7ee (diff) | |
parent | 978b9b179e631348cf8b62bf64af7fc65e322fc4 (diff) |
Merge branch 'master' into fix-time
Diffstat (limited to 'src/php')
55 files changed, 3236 insertions, 411 deletions
diff --git a/src/php/composer.json b/src/php/composer.json index 57d911db79..03dffb40ab 100644 --- a/src/php/composer.json +++ b/src/php/composer.json @@ -2,7 +2,7 @@ "name": "grpc/grpc-dev", "description": "gRPC library for PHP - for Developement use only", "license": "Apache-2.0", - "version": "1.12.0", + "version": "1.13.0", "require": { "php": ">=5.5.0", "google/protobuf": "^v3.3.0" diff --git a/src/php/ext/grpc/channel.c b/src/php/ext/grpc/channel.c index f3a03ace09..35adf6b342 100644 --- a/src/php/ext/grpc/channel.c +++ b/src/php/ext/grpc/channel.c @@ -193,7 +193,6 @@ void create_and_add_channel_to_persistent_list( create_channel(channel, target, args, creds); le->channel = channel->wrapper; - le->ref_count = 1; new_rsrc.ptr = le; gpr_mu_lock(&global_persistent_list_mu); PHP_GRPC_PERSISTENT_LIST_UPDATE(&grpc_persistent_list, key, key_len, @@ -342,7 +341,6 @@ PHP_METHOD(Channel, __construct) { free(channel->wrapper->target); free(channel->wrapper->args_hashstr); free(channel->wrapper); - le->ref_count += 1; channel->wrapper = le->channel; channel->wrapper->ref_count += 1; } @@ -534,53 +532,6 @@ static void php_grpc_channel_plink_dtor(php_grpc_zend_resource *rsrc } } -/** - * Clean all channels in the persistent. - * @return void - */ -PHP_METHOD(Channel, cleanPersistentList) { - zend_hash_clean(&grpc_persistent_list); -} - -/** - * Return an array of persistent list. - * @return array - */ -PHP_METHOD(Channel, getPersistentList) { - array_init(return_value); - zval *data; - PHP_GRPC_HASH_FOREACH_VAL_START(&grpc_persistent_list, data) - php_grpc_zend_resource *rsrc = - (php_grpc_zend_resource*) PHP_GRPC_HASH_VALPTR_TO_VAL(data) - if (rsrc == NULL) { - break; - } - channel_persistent_le_t* le = rsrc->ptr; - zval* ret_arr; - PHP_GRPC_MAKE_STD_ZVAL(ret_arr); - array_init(ret_arr); - // Info about the target - PHP_GRPC_ADD_STRING_TO_ARRAY(ret_arr, "target", - sizeof("target"), le->channel->target, true); - // Info about key - PHP_GRPC_ADD_STRING_TO_ARRAY(ret_arr, "key", - sizeof("key"), le->channel->key, true); - // Info about persistent channel ref_count - PHP_GRPC_ADD_LONG_TO_ARRAY(ret_arr, "ref_count", - sizeof("ref_count"), le->ref_count); - // Info about connectivity status - int state = - grpc_channel_check_connectivity_state(le->channel->wrapped, (int)0); - // It should be set to 'true' in PHP 5.6.33 - PHP_GRPC_ADD_LONG_TO_ARRAY(ret_arr, "connectivity_status", - sizeof("connectivity_status"), state); - // Info about the channel is closed or not - PHP_GRPC_ADD_BOOL_TO_ARRAY(ret_arr, "is_valid", - sizeof("is_valid"), le->channel->is_valid); - add_assoc_zval(return_value, le->channel->target, ret_arr); - PHP_GRPC_HASH_FOREACH_END() -} - ZEND_BEGIN_ARG_INFO_EX(arginfo_construct, 0, 0, 2) ZEND_ARG_INFO(0, target) ZEND_ARG_INFO(0, args) @@ -601,12 +552,6 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_close, 0, 0, 0) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_cleanPersistentList, 0, 0, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_getPersistentList, 0, 0, 0) -ZEND_END_ARG_INFO() - static zend_function_entry channel_methods[] = { PHP_ME(Channel, __construct, arginfo_construct, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) @@ -618,10 +563,6 @@ static zend_function_entry channel_methods[] = { ZEND_ACC_PUBLIC) PHP_ME(Channel, close, arginfo_close, ZEND_ACC_PUBLIC) - PHP_ME(Channel, cleanPersistentList, arginfo_cleanPersistentList, - ZEND_ACC_PUBLIC) - PHP_ME(Channel, getPersistentList, arginfo_getPersistentList, - ZEND_ACC_PUBLIC) PHP_FE_END }; diff --git a/src/php/ext/grpc/channel.h b/src/php/ext/grpc/channel.h index 807880534e..86bfdea51a 100644 --- a/src/php/ext/grpc/channel.h +++ b/src/php/ext/grpc/channel.h @@ -84,7 +84,6 @@ void php_grpc_delete_persistent_list_entry(char *key, php_grpc_int key_len typedef struct _channel_persistent_le { grpc_channel_wrapper *channel; - size_t ref_count; } channel_persistent_le_t; diff --git a/src/php/ext/grpc/php7_wrapper.h b/src/php/ext/grpc/php7_wrapper.h index d4fa859249..0239e04f76 100644 --- a/src/php/ext/grpc/php7_wrapper.h +++ b/src/php/ext/grpc/php7_wrapper.h @@ -30,6 +30,8 @@ add_property_string(arg, name, context, b) #define php_grpc_add_property_stringl(res, name, str, len, b) \ add_property_stringl(res, name, str, len, b) +#define php_grpc_add_property_zval(res, name, val) \ + add_property_zval(res, name, val) #define php_grpc_add_next_index_stringl(data, str, len, b) \ add_next_index_stringl(data, str, len, b) @@ -154,6 +156,11 @@ static inline int php_grpc_zend_hash_find(HashTable *ht, char *key, int len, add_property_string(arg, name, context) #define php_grpc_add_property_stringl(res, name, str, len, b) \ add_property_stringl(res, name, str, len) +#define php_grpc_add_property_zval(res, name, val) do { \ + zval tmp; \ + tmp = *val; \ + add_property_zval(res, name, &tmp); \ + } while(0) #define php_grpc_add_next_index_stringl(data, str, len, b) \ add_next_index_stringl(data, str, len) diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c index a65d233017..292d512e37 100644 --- a/src/php/ext/grpc/server.c +++ b/src/php/ext/grpc/server.c @@ -89,8 +89,6 @@ PHP_METHOD(Server, __construct) { if (args_array == NULL) { server->wrapped = grpc_server_create(NULL, NULL); } else { - //TODO(thinkerou): deal it if key of array is long, crash now on php7 - // and update unit test case php_grpc_read_args_array(args_array, &args TSRMLS_CC); server->wrapped = grpc_server_create(&args, NULL); efree(args.args); @@ -118,8 +116,8 @@ PHP_METHOD(Server, requestCall) { grpc_call_details_init(&details); grpc_metadata_array_init(&metadata); error_code = - grpc_server_request_call(server->wrapped, &call, &details, &metadata, - completion_queue, completion_queue, NULL); + grpc_server_request_call(server->wrapped, &call, &details, &metadata, + completion_queue, completion_queue, NULL); if (error_code != GRPC_CALL_OK) { zend_throw_exception(spl_ce_LogicException, "request_call failed", (long)error_code TSRMLS_CC); @@ -140,25 +138,12 @@ PHP_METHOD(Server, requestCall) { php_grpc_add_property_string(result, "host", host_text, true); gpr_free(method_text); gpr_free(host_text); -#if PHP_MAJOR_VERSION < 7 - add_property_zval(result, "call", grpc_php_wrap_call(call, true TSRMLS_CC)); - add_property_zval(result, "absolute_deadline", - grpc_php_wrap_timeval(details.deadline TSRMLS_CC)); - add_property_zval(result, "metadata", grpc_parse_metadata_array(&metadata - TSRMLS_CC)); -#else - zval zv_call; - zval zv_timeval; - zval zv_md; - //TODO(thinkerou): why use zval* to unit test error? - zv_call = *grpc_php_wrap_call(call, true); - zv_timeval = *grpc_php_wrap_timeval(details.deadline); - zv_md = *grpc_parse_metadata_array(&metadata); - - add_property_zval(result, "call", &zv_call); - add_property_zval(result, "absolute_deadline", &zv_timeval); - add_property_zval(result, "metadata", &zv_md); -#endif + php_grpc_add_property_zval(result, "call", + grpc_php_wrap_call(call, true TSRMLS_CC)); + php_grpc_add_property_zval(result, "absolute_deadline", + grpc_php_wrap_timeval(details.deadline TSRMLS_CC)); + php_grpc_add_property_zval(result, "metadata", + grpc_parse_metadata_array(&metadata TSRMLS_CC)); cleanup: grpc_call_details_destroy(&details); @@ -202,9 +187,9 @@ PHP_METHOD(Server, addSecureHttp2Port) { if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sO", &addr, &addr_len, &creds_obj, grpc_ce_server_credentials) == FAILURE) { - zend_throw_exception( - spl_ce_InvalidArgumentException, - "add_http2_port expects a string and a ServerCredentials", 1 TSRMLS_CC); + zend_throw_exception(spl_ce_InvalidArgumentException, + "add_http2_port expects a string and a " + "ServerCredentials", 1 TSRMLS_CC); return; } wrapped_grpc_server_credentials *creds = diff --git a/src/php/ext/grpc/version.h b/src/php/ext/grpc/version.h index 37df2768bf..407d6347e6 100644 --- a/src/php/ext/grpc/version.h +++ b/src/php/ext/grpc/version.h @@ -20,6 +20,6 @@ #ifndef VERSION_H #define VERSION_H -#define PHP_GRPC_VERSION "1.12.0dev" +#define PHP_GRPC_VERSION "1.13.0dev" #endif /* VERSION_H */ diff --git a/src/php/lib/Grpc/BaseStub.php b/src/php/lib/Grpc/BaseStub.php index 5f3a96feaa..7860233ca2 100644 --- a/src/php/lib/Grpc/BaseStub.php +++ b/src/php/lib/Grpc/BaseStub.php @@ -38,12 +38,13 @@ class BaseStub * - 'update_metadata': (optional) a callback function which takes in a * metadata array, and returns an updated metadata array * - 'grpc.primary_user_agent': (optional) a user-agent string - * @param Channel $channel An already created Channel object (optional) + * @param Channel|InterceptorChannel $channel An already created Channel or InterceptorChannel object (optional) */ - public function __construct($hostname, $opts, Channel $channel = null) + public function __construct($hostname, $opts, $channel = null) { $ssl_roots = file_get_contents( - dirname(__FILE__).'/../../../../etc/roots.pem'); + dirname(__FILE__).'/../../../../etc/roots.pem' + ); ChannelCredentials::setDefaultRootsPem($ssl_roots); $this->hostname = $hostname; @@ -58,16 +59,20 @@ class BaseStub $this->hostname_override = $opts['grpc.ssl_target_name_override']; } if ($channel) { - if (!is_a($channel, 'Grpc\Channel')) { - throw new \Exception('The channel argument is not a'. - 'Channel object'); + if (!is_a($channel, 'Grpc\Channel') && + !is_a($channel, 'Grpc\InterceptorChannel')) { + throw new \Exception('The channel argument is not a Channel object '. + 'or an InterceptorChannel object created by '. + 'Interceptor::intercept($channel, Interceptor|Interceptor[] $interceptors)'); } $this->channel = $channel; return; } $package_config = json_decode( - file_get_contents(dirname(__FILE__).'/../../composer.json'), true); + file_get_contents(dirname(__FILE__).'/../../composer.json'), + true + ); if (!empty($opts['grpc.primary_user_agent'])) { $opts['grpc.primary_user_agent'] .= ' '; } else { @@ -77,8 +82,8 @@ class BaseStub 'grpc-php/'.$package_config['version']; if (!array_key_exists('credentials', $opts)) { throw new \Exception("The opts['credentials'] key is now ". - 'required. Please see one of the '. - 'ChannelCredentials::create methods'); + 'required. Please see one of the '. + 'ChannelCredentials::create methods'); } $this->channel = new Channel($hostname, $opts); } @@ -169,7 +174,8 @@ class BaseStub $last_slash_idx = strrpos($method, '/'); if ($last_slash_idx === false) { throw new \InvalidArgumentException( - 'service name must have a slash'); + 'service name must have a slash' + ); } $service_name = substr($method, 0, $last_slash_idx); @@ -197,7 +203,8 @@ class BaseStub if (!preg_match('/^[A-Za-z\d_-]+$/', $key)) { throw new \InvalidArgumentException( 'Metadata keys must be nonempty strings containing only '. - 'alphanumeric characters, hyphens and underscores'); + 'alphanumeric characters, hyphens and underscores' + ); } $metadata_copy[strtolower($key)] = $value; } @@ -205,9 +212,255 @@ class BaseStub return $metadata_copy; } + /** + * Create a function which can be used to create UnaryCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _GrpcUnaryUnary($channel, $deserialize) + { + return function ($method, + $argument, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + $call = new UnaryCall( + $channel, + $method, + $deserialize, + $options + ); + $jwt_aud_uri = $this->_get_jwt_aud_uri($method); + if (is_callable($this->update_metadata)) { + $metadata = call_user_func( + $this->update_metadata, + $metadata, + $jwt_aud_uri + ); + } + $metadata = $this->_validate_and_normalize_metadata( + $metadata + ); + $call->start($argument, $metadata, $options); + return $call; + }; + } + + /** + * Create a function which can be used to create ServerStreamingCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _GrpcStreamUnary($channel, $deserialize) + { + return function ($method, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + $call = new ClientStreamingCall( + $channel, + $method, + $deserialize, + $options + ); + $jwt_aud_uri = $this->_get_jwt_aud_uri($method); + if (is_callable($this->update_metadata)) { + $metadata = call_user_func( + $this->update_metadata, + $metadata, + $jwt_aud_uri + ); + } + $metadata = $this->_validate_and_normalize_metadata( + $metadata + ); + $call->start($metadata); + return $call; + }; + } + + /** + * Create a function which can be used to create ClientStreamingCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _GrpcUnaryStream($channel, $deserialize) + { + return function ($method, + $argument, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + $call = new ServerStreamingCall( + $channel, + $method, + $deserialize, + $options + ); + $jwt_aud_uri = $this->_get_jwt_aud_uri($method); + if (is_callable($this->update_metadata)) { + $metadata = call_user_func( + $this->update_metadata, + $metadata, + $jwt_aud_uri + ); + } + $metadata = $this->_validate_and_normalize_metadata( + $metadata + ); + $call->start($argument, $metadata, $options); + return $call; + }; + } + + /** + * Create a function which can be used to create BidiStreamingCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _GrpcStreamStream($channel, $deserialize) + { + return function ($method, + array $metadata = [], + array $options = []) use ($channel ,$deserialize) { + $call = new BidiStreamingCall( + $channel, + $method, + $deserialize, + $options + ); + $jwt_aud_uri = $this->_get_jwt_aud_uri($method); + if (is_callable($this->update_metadata)) { + $metadata = call_user_func( + $this->update_metadata, + $metadata, + $jwt_aud_uri + ); + } + $metadata = $this->_validate_and_normalize_metadata( + $metadata + ); + $call->start($metadata); + + return $call; + }; + } + + /** + * Create a function which can be used to create UnaryCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _UnaryUnaryCallFactory($channel, $deserialize) + { + if (is_a($channel, 'Grpc\InterceptorChannel')) { + return function ($method, + $argument, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + return $channel->getInterceptor()->interceptUnaryUnary( + $method, + $argument, + $metadata, + $options, + $this->_UnaryUnaryCallFactory($channel->getNext(), $deserialize) + ); + }; + } + return $this->_GrpcUnaryUnary($channel, $deserialize); + } + + /** + * Create a function which can be used to create ServerStreamingCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _UnaryStreamCallFactory($channel, $deserialize) + { + if (is_a($channel, 'Grpc\InterceptorChannel')) { + return function ($method, + $argument, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + return $channel->getInterceptor()->interceptUnaryStream( + $method, + $argument, + $metadata, + $options, + $this->_UnaryStreamCallFactory($channel->getNext(), $deserialize) + ); + }; + } + return $this->_GrpcUnaryStream($channel, $deserialize); + } + + /** + * Create a function which can be used to create ClientStreamingCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _StreamUnaryCallFactory($channel, $deserialize) + { + if (is_a($channel, 'Grpc\InterceptorChannel')) { + return function ($method, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + return $channel->getInterceptor()->interceptStreamUnary( + $method, + $metadata, + $options, + $this->_StreamUnaryCallFactory($channel->getNext(), $deserialize) + ); + }; + } + return $this->_GrpcStreamUnary($channel, $deserialize); + } + + /** + * Create a function which can be used to create BidiStreamingCall + * + * @param Channel|InterceptorChannel $channel + * @param callable $deserialize A function that deserializes the response + * + * @return \Closure + */ + private function _StreamStreamCallFactory($channel, $deserialize) + { + if (is_a($channel, 'Grpc\InterceptorChannel')) { + return function ($method, + array $metadata = [], + array $options = []) use ($channel, $deserialize) { + return $channel->getInterceptor()->interceptStreamStream( + $method, + $metadata, + $options, + $this->_StreamStreamCallFactory($channel->getNext(), $deserialize) + ); + }; + } + return $this->_GrpcStreamStream($channel, $deserialize); + } + /* This class is intended to be subclassed by generated code, so * all functions begin with "_" to avoid name collisions. */ - /** * Call a remote method that takes a single argument and has a * single output. @@ -221,26 +474,15 @@ class BaseStub * * @return UnaryCall The active call object */ - protected function _simpleRequest($method, - $argument, - $deserialize, - array $metadata = [], - array $options = []) - { - $call = new UnaryCall($this->channel, - $method, - $deserialize, - $options); - $jwt_aud_uri = $this->_get_jwt_aud_uri($method); - if (is_callable($this->update_metadata)) { - $metadata = call_user_func($this->update_metadata, - $metadata, - $jwt_aud_uri); - } - $metadata = $this->_validate_and_normalize_metadata( - $metadata); - $call->start($argument, $metadata, $options); - + protected function _simpleRequest( + $method, + $argument, + $deserialize, + array $metadata = [], + array $options = [] + ) { + $call_factory = $this->_UnaryUnaryCallFactory($this->channel, $deserialize); + $call = $call_factory($method, $argument, $metadata, $options); return $call; } @@ -256,25 +498,14 @@ class BaseStub * * @return ClientStreamingCall The active call object */ - protected function _clientStreamRequest($method, - $deserialize, - array $metadata = [], - array $options = []) - { - $call = new ClientStreamingCall($this->channel, - $method, - $deserialize, - $options); - $jwt_aud_uri = $this->_get_jwt_aud_uri($method); - if (is_callable($this->update_metadata)) { - $metadata = call_user_func($this->update_metadata, - $metadata, - $jwt_aud_uri); - } - $metadata = $this->_validate_and_normalize_metadata( - $metadata); - $call->start($metadata); - + protected function _clientStreamRequest( + $method, + $deserialize, + array $metadata = [], + array $options = [] + ) { + $call_factory = $this->_StreamUnaryCallFactory($this->channel, $deserialize); + $call = $call_factory($method, $metadata, $options); return $call; } @@ -291,26 +522,15 @@ class BaseStub * * @return ServerStreamingCall The active call object */ - protected function _serverStreamRequest($method, - $argument, - $deserialize, - array $metadata = [], - array $options = []) - { - $call = new ServerStreamingCall($this->channel, - $method, - $deserialize, - $options); - $jwt_aud_uri = $this->_get_jwt_aud_uri($method); - if (is_callable($this->update_metadata)) { - $metadata = call_user_func($this->update_metadata, - $metadata, - $jwt_aud_uri); - } - $metadata = $this->_validate_and_normalize_metadata( - $metadata); - $call->start($argument, $metadata, $options); - + protected function _serverStreamRequest( + $method, + $argument, + $deserialize, + array $metadata = [], + array $options = [] + ) { + $call_factory = $this->_UnaryStreamCallFactory($this->channel, $deserialize); + $call = $call_factory($method, $argument, $metadata, $options); return $call; } @@ -325,25 +545,14 @@ class BaseStub * * @return BidiStreamingCall The active call object */ - protected function _bidiRequest($method, - $deserialize, - array $metadata = [], - array $options = []) - { - $call = new BidiStreamingCall($this->channel, - $method, - $deserialize, - $options); - $jwt_aud_uri = $this->_get_jwt_aud_uri($method); - if (is_callable($this->update_metadata)) { - $metadata = call_user_func($this->update_metadata, - $metadata, - $jwt_aud_uri); - } - $metadata = $this->_validate_and_normalize_metadata( - $metadata); - $call->start($metadata); - + protected function _bidiRequest( + $method, + $deserialize, + array $metadata = [], + array $options = [] + ) { + $call_factory = $this->_StreamStreamCallFactory($this->channel, $deserialize); + $call = $call_factory($method, $metadata, $options); return $call; } } diff --git a/src/php/lib/Grpc/Interceptor.php b/src/php/lib/Grpc/Interceptor.php new file mode 100644 index 0000000000..9c1b5616f2 --- /dev/null +++ b/src/php/lib/Grpc/Interceptor.php @@ -0,0 +1,86 @@ +<?php +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +namespace Grpc; + +/** + * Represents an interceptor that intercept RPC invocations before call starts. + * This is an EXPERIMENTAL API. + */ +class Interceptor +{ + public function interceptUnaryUnary( + $method, + $argument, + array $metadata = [], + array $options = [], + $continuation + ) { + return $continuation($method, $argument, $metadata, $options); + } + + public function interceptStreamUnary( + $method, + array $metadata = [], + array $options = [], + $continuation + ) { + return $continuation($method, $metadata, $options); + } + + public function interceptUnaryStream( + $method, + $argument, + array $metadata = [], + array $options = [], + $continuation + ) { + return $continuation($method, $argument, $metadata, $options); + } + + public function interceptStreamStream( + $method, + array $metadata = [], + array $options = [], + $continuation + ) { + return $continuation($method, $metadata, $options); + } + + /** + * Intercept the methods with Channel + * + * @param Channel|InterceptorChannel $channel An already created Channel or InterceptorChannel object (optional) + * @param Interceptor|Interceptor[] $interceptors interceptors to be added + * + * @return InterceptorChannel + */ + public static function intercept($channel, $interceptors) + { + if (is_array($interceptors)) { + for ($i = count($interceptors) - 1; $i >= 0; $i--) { + $channel = new InterceptorChannel($channel, $interceptors[$i]); + } + } else { + $channel = new InterceptorChannel($channel, $interceptors); + } + return $channel; + } +} + diff --git a/src/php/lib/Grpc/Internal/InterceptorChannel.php b/src/php/lib/Grpc/Internal/InterceptorChannel.php new file mode 100644 index 0000000000..9ac05748f3 --- /dev/null +++ b/src/php/lib/Grpc/Internal/InterceptorChannel.php @@ -0,0 +1,76 @@ +<?php +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +namespace Grpc; + +/** + * This is a PRIVATE API and can change without notice. + */ +class InterceptorChannel +{ + private $next = null; + private $interceptor; + + /** + * @param Channel|InterceptorChannel $channel An already created Channel + * or InterceptorChannel object (optional) + * @param Interceptor $interceptor + */ + public function __construct($channel, $interceptor) + { + if (!is_a($channel, 'Grpc\Channel') && + !is_a($channel, 'Grpc\InterceptorChannel')) { + throw new \Exception('The channel argument is not a Channel object '. + 'or an InterceptorChannel object created by '. + 'Interceptor::intercept($channel, Interceptor|Interceptor[] $interceptors)'); + } + $this->interceptor = $interceptor; + $this->next = $channel; + } + + public function getNext() + { + return $this->next; + } + + public function getInterceptor() + { + return $this->interceptor; + } + + public function getTarget() + { + return $this->getNext()->getTarget(); + } + + public function watchConnectivityState($new_state, $deadline) + { + return $this->getNext()->watchConnectivityState($new_state, $deadline); + } + + public function getConnectivityState($try_to_connect = false) + { + return $this->getNext()->getConnectivityState($try_to_connect); + } + + public function close() + { + return $this->getNext()->close(); + } +} diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/BenchmarkService.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/BenchmarkService.php new file mode 100644 index 0000000000..906f6a2d84 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/BenchmarkService.php @@ -0,0 +1,41 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/benchmark_service.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class BenchmarkService +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + \GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce(); + $pool->internalAddGeneratedFile(hex2bin( + "0aef030a2e7372632f70726f746f2f677270632f74657374696e672f6265" . + "6e63686d61726b5f736572766963652e70726f746f120c677270632e7465" . + "7374696e6732a6030a1042656e63686d61726b5365727669636512460a09" . + "556e61727943616c6c121b2e677270632e74657374696e672e53696d706c" . + "65526571756573741a1c2e677270632e74657374696e672e53696d706c65" . + "526573706f6e7365124e0a0d53747265616d696e6743616c6c121b2e6772" . + "70632e74657374696e672e53696d706c65526571756573741a1c2e677270" . + "632e74657374696e672e53696d706c65526573706f6e7365280130011252" . + "0a1353747265616d696e6746726f6d436c69656e74121b2e677270632e74" . + "657374696e672e53696d706c65526571756573741a1c2e677270632e7465" . + "7374696e672e53696d706c65526573706f6e7365280112520a1353747265" . + "616d696e6746726f6d536572766572121b2e677270632e74657374696e67" . + "2e53696d706c65526571756573741a1c2e677270632e74657374696e672e" . + "53696d706c65526573706f6e7365300112520a1153747265616d696e6742" . + "6f746857617973121b2e677270632e74657374696e672e53696d706c6552" . + "6571756573741a1c2e677270632e74657374696e672e53696d706c655265" . + "73706f6e736528013001620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/CompilerTest.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/CompilerTest.php new file mode 100644 index 0000000000..2c4fe92f05 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/CompilerTest.php @@ -0,0 +1,37 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/compiler_test.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class CompilerTest +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + $pool->internalAddGeneratedFile(hex2bin( + "0aa1030a2a7372632f70726f746f2f677270632f74657374696e672f636f" . + "6d70696c65725f746573742e70726f746f120c677270632e74657374696e" . + "6722090a0752657175657374220a0a08526573706f6e736532fe010a0853" . + "6572766963654112390a084d6574686f64413112152e677270632e746573" . + "74696e672e526571756573741a162e677270632e74657374696e672e5265" . + "73706f6e7365123b0a084d6574686f64413212152e677270632e74657374" . + "696e672e526571756573741a162e677270632e74657374696e672e526573" . + "706f6e73652801123b0a084d6574686f64413312152e677270632e746573" . + "74696e672e526571756573741a162e677270632e74657374696e672e5265" . + "73706f6e73653001123d0a084d6574686f64413412152e677270632e7465" . + "7374696e672e526571756573741a162e677270632e74657374696e672e52" . + "6573706f6e73652801300132450a08536572766963654212390a084d6574" . + "686f64423112152e677270632e74657374696e672e526571756573741a16" . + "2e677270632e74657374696e672e526573706f6e7365620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Control.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Control.php index 9b3a7529ec..2319bcd021 100644 --- a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Control.php +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Control.php @@ -17,7 +17,7 @@ class Control \GPBMetadata\Src\Proto\Grpc\Testing\Payloads::initOnce(); \GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce(); $pool->internalAddGeneratedFile(hex2bin( - "0aa21a0a247372632f70726f746f2f677270632f74657374696e672f636f" . + "0abc1a0a247372632f70726f746f2f677270632f74657374696e672f636f" . "6e74726f6c2e70726f746f120c677270632e74657374696e671a22737263" . "2f70726f746f2f677270632f74657374696e672f73746174732e70726f74" . "6f22250a0d506f6973736f6e506172616d7312140a0c6f6666657265645f" . @@ -31,7 +31,7 @@ class Control "6f7665727269646518022001280912110a09637265645f74797065180320" . "012809224d0a0a4368616e6e656c417267120c0a046e616d651801200128" . "0912130a097374725f76616c7565180220012809480012130a09696e745f" . - "76616c7565180320012805480042070a0576616c756522d5040a0c436c69" . + "76616c7565180320012805480042070a0576616c756522ef040a0c436c69" . "656e74436f6e66696712160a0e7365727665725f74617267657473180120" . "032809122d0a0b636c69656e745f7479706518022001280e32182e677270" . "632e74657374696e672e436c69656e745479706512350a0f736563757269" . @@ -51,85 +51,86 @@ class Control "745f617069180f20012809122e0a0c6368616e6e656c5f61726773181020" . "03280b32182e677270632e74657374696e672e4368616e6e656c41726712" . "160a0e746872656164735f7065725f6371181120012805121b0a136d6573" . - "73616765735f7065725f73747265616d18122001280522380a0c436c6965" . - "6e7453746174757312280a05737461747318012001280b32192e67727063" . - "2e74657374696e672e436c69656e74537461747322150a044d61726b120d" . - "0a05726573657418012001280822680a0a436c69656e7441726773122b0a" . - "05736574757018012001280b321a2e677270632e74657374696e672e436c" . - "69656e74436f6e666967480012220a046d61726b18022001280b32122e67" . - "7270632e74657374696e672e4d61726b480042090a076172677479706522" . - "fd020a0c536572766572436f6e666967122d0a0b7365727665725f747970" . - "6518012001280e32182e677270632e74657374696e672e53657276657254" . - "79706512350a0f73656375726974795f706172616d7318022001280b321c" . - "2e677270632e74657374696e672e5365637572697479506172616d73120c" . - "0a04706f7274180420012805121c0a146173796e635f7365727665725f74" . - "68726561647318072001280512120a0a636f72655f6c696d697418082001" . - "280512330a0e7061796c6f61645f636f6e66696718092001280b321b2e67" . - "7270632e74657374696e672e5061796c6f6164436f6e66696712110a0963" . - "6f72655f6c697374180a2003280512180a106f746865725f736572766572" . - "5f617069180b2001280912160a0e746872656164735f7065725f6371180c" . - "20012805121c0a137265736f757263655f71756f74615f73697a6518e907" . - "20012805122f0a0c6368616e6e656c5f6172677318ea072003280b32182e" . - "677270632e74657374696e672e4368616e6e656c41726722680a0a536572" . - "76657241726773122b0a05736574757018012001280b321a2e677270632e" . - "74657374696e672e536572766572436f6e666967480012220a046d61726b" . - "18022001280b32122e677270632e74657374696e672e4d61726b48004209" . - "0a076172677479706522550a0c53657276657253746174757312280a0573" . - "7461747318012001280b32192e677270632e74657374696e672e53657276" . - "65725374617473120c0a04706f7274180220012805120d0a05636f726573" . - "180320012805220d0a0b436f726552657175657374221d0a0c436f726552" . - "6573706f6e7365120d0a05636f72657318012001280522060a04566f6964" . - "22fd010a085363656e6172696f120c0a046e616d6518012001280912310a" . - "0d636c69656e745f636f6e66696718022001280b321a2e677270632e7465" . - "7374696e672e436c69656e74436f6e66696712130a0b6e756d5f636c6965" . - "6e747318032001280512310a0d7365727665725f636f6e66696718042001" . - "280b321a2e677270632e74657374696e672e536572766572436f6e666967" . - "12130a0b6e756d5f7365727665727318052001280512160a0e7761726d75" . - "705f7365636f6e647318062001280512190a1162656e63686d61726b5f73" . - "65636f6e647318072001280512200a18737061776e5f6c6f63616c5f776f" . - "726b65725f636f756e7418082001280522360a095363656e6172696f7312" . - "290a097363656e6172696f7318012003280b32162e677270632e74657374" . - "696e672e5363656e6172696f2284040a155363656e6172696f526573756c" . - "7453756d6d617279120b0a03717073180120012801121b0a137170735f70" . - "65725f7365727665725f636f7265180220012801121a0a12736572766572" . - "5f73797374656d5f74696d6518032001280112180a107365727665725f75" . - "7365725f74696d65180420012801121a0a12636c69656e745f7379737465" . - "6d5f74696d6518052001280112180a10636c69656e745f757365725f7469" . - "6d6518062001280112120a0a6c6174656e63795f35301807200128011212" . - "0a0a6c6174656e63795f393018082001280112120a0a6c6174656e63795f" . - "393518092001280112120a0a6c6174656e63795f3939180a200128011213" . - "0a0b6c6174656e63795f393939180b2001280112180a107365727665725f" . - "6370755f7573616765180c2001280112260a1e7375636365737366756c5f" . - "72657175657374735f7065725f7365636f6e64180d2001280112220a1a66" . - "61696c65645f72657175657374735f7065725f7365636f6e64180e200128" . - "0112200a18636c69656e745f706f6c6c735f7065725f7265717565737418" . - "0f2001280112200a187365727665725f706f6c6c735f7065725f72657175" . - "65737418102001280112220a1a7365727665725f717565726965735f7065" . - "725f6370755f73656318112001280112220a1a636c69656e745f71756572" . - "6965735f7065725f6370755f7365631812200128012283030a0e5363656e" . - "6172696f526573756c7412280a087363656e6172696f18012001280b3216" . - "2e677270632e74657374696e672e5363656e6172696f122e0a096c617465" . - "6e6369657318022001280b321b2e677270632e74657374696e672e486973" . - "746f6772616d44617461122f0a0c636c69656e745f737461747318032003" . - "280b32192e677270632e74657374696e672e436c69656e74537461747312" . - "2f0a0c7365727665725f737461747318042003280b32192e677270632e74" . - "657374696e672e536572766572537461747312140a0c7365727665725f63" . - "6f72657318052003280512340a0773756d6d61727918062001280b32232e" . - "677270632e74657374696e672e5363656e6172696f526573756c7453756d" . - "6d61727912160a0e636c69656e745f737563636573731807200328081216" . - "0a0e7365727665725f7375636365737318082003280812390a0f72657175" . - "6573745f726573756c747318092003280b32202e677270632e7465737469" . - "6e672e52657175657374526573756c74436f756e742a410a0a436c69656e" . - "7454797065120f0a0b53594e435f434c49454e54100012100a0c4153594e" . - "435f434c49454e54100112100a0c4f544845525f434c49454e5410022a5b" . - "0a0a53657276657254797065120f0a0b53594e435f534552564552100012" . - "100a0c4153594e435f534552564552100112180a144153594e435f47454e" . - "455249435f534552564552100212100a0c4f544845525f53455256455210" . - "032a720a075270635479706512090a05554e4152591000120d0a09535452" . - "45414d494e47100112190a1553545245414d494e475f46524f4d5f434c49" . - "454e54100212190a1553545245414d494e475f46524f4d5f534552564552" . - "100312170a1353545245414d494e475f424f54485f574159531004620670" . - "726f746f33" + "73616765735f7065725f73747265616d18122001280512180a107573655f" . + "636f616c657363655f61706918132001280822380a0c436c69656e745374" . + "6174757312280a05737461747318012001280b32192e677270632e746573" . + "74696e672e436c69656e74537461747322150a044d61726b120d0a057265" . + "73657418012001280822680a0a436c69656e7441726773122b0a05736574" . + "757018012001280b321a2e677270632e74657374696e672e436c69656e74" . + "436f6e666967480012220a046d61726b18022001280b32122e677270632e" . + "74657374696e672e4d61726b480042090a076172677479706522fd020a0c" . + "536572766572436f6e666967122d0a0b7365727665725f74797065180120" . + "01280e32182e677270632e74657374696e672e5365727665725479706512" . + "350a0f73656375726974795f706172616d7318022001280b321c2e677270" . + "632e74657374696e672e5365637572697479506172616d73120c0a04706f" . + "7274180420012805121c0a146173796e635f7365727665725f7468726561" . + "647318072001280512120a0a636f72655f6c696d69741808200128051233" . + "0a0e7061796c6f61645f636f6e66696718092001280b321b2e677270632e" . + "74657374696e672e5061796c6f6164436f6e66696712110a09636f72655f" . + "6c697374180a2003280512180a106f746865725f7365727665725f617069" . + "180b2001280912160a0e746872656164735f7065725f6371180c20012805" . + "121c0a137265736f757263655f71756f74615f73697a6518e90720012805" . + "122f0a0c6368616e6e656c5f6172677318ea072003280b32182e67727063" . + "2e74657374696e672e4368616e6e656c41726722680a0a53657276657241" . + "726773122b0a05736574757018012001280b321a2e677270632e74657374" . + "696e672e536572766572436f6e666967480012220a046d61726b18022001" . + "280b32122e677270632e74657374696e672e4d61726b480042090a076172" . + "677479706522550a0c53657276657253746174757312280a057374617473" . + "18012001280b32192e677270632e74657374696e672e5365727665725374" . + "617473120c0a04706f7274180220012805120d0a05636f72657318032001" . + "2805220d0a0b436f726552657175657374221d0a0c436f7265526573706f" . + "6e7365120d0a05636f72657318012001280522060a04566f696422fd010a" . + "085363656e6172696f120c0a046e616d6518012001280912310a0d636c69" . + "656e745f636f6e66696718022001280b321a2e677270632e74657374696e" . + "672e436c69656e74436f6e66696712130a0b6e756d5f636c69656e747318" . + "032001280512310a0d7365727665725f636f6e66696718042001280b321a" . + "2e677270632e74657374696e672e536572766572436f6e66696712130a0b" . + "6e756d5f7365727665727318052001280512160a0e7761726d75705f7365" . + "636f6e647318062001280512190a1162656e63686d61726b5f7365636f6e" . + "647318072001280512200a18737061776e5f6c6f63616c5f776f726b6572" . + "5f636f756e7418082001280522360a095363656e6172696f7312290a0973" . + "63656e6172696f7318012003280b32162e677270632e74657374696e672e" . + "5363656e6172696f2284040a155363656e6172696f526573756c7453756d" . + "6d617279120b0a03717073180120012801121b0a137170735f7065725f73" . + "65727665725f636f7265180220012801121a0a127365727665725f737973" . + "74656d5f74696d6518032001280112180a107365727665725f757365725f" . + "74696d65180420012801121a0a12636c69656e745f73797374656d5f7469" . + "6d6518052001280112180a10636c69656e745f757365725f74696d651806" . + "2001280112120a0a6c6174656e63795f353018072001280112120a0a6c61" . + "74656e63795f393018082001280112120a0a6c6174656e63795f39351809" . + "2001280112120a0a6c6174656e63795f3939180a2001280112130a0b6c61" . + "74656e63795f393939180b2001280112180a107365727665725f6370755f" . + "7573616765180c2001280112260a1e7375636365737366756c5f72657175" . + "657374735f7065725f7365636f6e64180d2001280112220a1a6661696c65" . + "645f72657175657374735f7065725f7365636f6e64180e2001280112200a" . + "18636c69656e745f706f6c6c735f7065725f72657175657374180f200128" . + "0112200a187365727665725f706f6c6c735f7065725f7265717565737418" . + "102001280112220a1a7365727665725f717565726965735f7065725f6370" . + "755f73656318112001280112220a1a636c69656e745f717565726965735f" . + "7065725f6370755f7365631812200128012283030a0e5363656e6172696f" . + "526573756c7412280a087363656e6172696f18012001280b32162e677270" . + "632e74657374696e672e5363656e6172696f122e0a096c6174656e636965" . + "7318022001280b321b2e677270632e74657374696e672e486973746f6772" . + "616d44617461122f0a0c636c69656e745f737461747318032003280b3219" . + "2e677270632e74657374696e672e436c69656e745374617473122f0a0c73" . + "65727665725f737461747318042003280b32192e677270632e7465737469" . + "6e672e536572766572537461747312140a0c7365727665725f636f726573" . + "18052003280512340a0773756d6d61727918062001280b32232e67727063" . + "2e74657374696e672e5363656e6172696f526573756c7453756d6d617279" . + "12160a0e636c69656e745f7375636365737318072003280812160a0e7365" . + "727665725f7375636365737318082003280812390a0f726571756573745f" . + "726573756c747318092003280b32202e677270632e74657374696e672e52" . + "657175657374526573756c74436f756e742a410a0a436c69656e74547970" . + "65120f0a0b53594e435f434c49454e54100012100a0c4153594e435f434c" . + "49454e54100112100a0c4f544845525f434c49454e5410022a5b0a0a5365" . + "7276657254797065120f0a0b53594e435f534552564552100012100a0c41" . + "53594e435f534552564552100112180a144153594e435f47454e45524943" . + "5f534552564552100212100a0c4f544845525f53455256455210032a720a" . + "075270635479706512090a05554e4152591000120d0a0953545245414d49" . + "4e47100112190a1553545245414d494e475f46524f4d5f434c49454e5410" . + "0212190a1553545245414d494e475f46524f4d5f53455256455210031217" . + "0a1353545245414d494e475f424f54485f574159531004620670726f746f" . + "33" )); static::$is_initialized = true; diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Echo.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Echo.php new file mode 100644 index 0000000000..77c5230f45 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Echo.php @@ -0,0 +1,43 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class Echo +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + $pool->internalAddGeneratedFile(hex2bin( + "0aa6040a217372632f70726f746f2f677270632f74657374696e672f6563" . + "686f2e70726f746f120c677270632e74657374696e6732f6020a0f456368" . + "6f5465737453657276696365123d0a044563686f12192e677270632e7465" . + "7374696e672e4563686f526571756573741a1a2e677270632e7465737469" . + "6e672e4563686f526573706f6e736512480a0d5265717565737453747265" . + "616d12192e677270632e74657374696e672e4563686f526571756573741a" . + "1a2e677270632e74657374696e672e4563686f526573706f6e7365280112" . + "490a0e526573706f6e736553747265616d12192e677270632e7465737469" . + "6e672e4563686f526571756573741a1a2e677270632e74657374696e672e" . + "4563686f526573706f6e7365300112470a0a4269646953747265616d1219" . + "2e677270632e74657374696e672e4563686f526571756573741a1a2e6772" . + "70632e74657374696e672e4563686f526573706f6e73652801300112460a" . + "0d556e696d706c656d656e74656412192e677270632e74657374696e672e" . + "4563686f526571756573741a1a2e677270632e74657374696e672e456368" . + "6f526573706f6e736532620a18556e696d706c656d656e7465644563686f" . + "5365727669636512460a0d556e696d706c656d656e74656412192e677270" . + "632e74657374696e672e4563686f526571756573741a1a2e677270632e74" . + "657374696e672e4563686f526573706f6e7365320e0a0c4e6f5270635365" . + "7276696365620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/EchoMessages.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/EchoMessages.php new file mode 100644 index 0000000000..4bac8a2906 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/EchoMessages.php @@ -0,0 +1,54 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class EchoMessages +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + $pool->internalAddGeneratedFile(hex2bin( + "0a8f070a2a7372632f70726f746f2f677270632f74657374696e672f6563" . + "686f5f6d657373616765732e70726f746f120c677270632e74657374696e" . + "6722320a094465627567496e666f12150a0d737461636b5f656e74726965" . + "73180120032809120e0a0664657461696c18022001280922500a0b457272" . + "6f72537461747573120c0a04636f646518012001280512150a0d6572726f" . + "725f6d657373616765180220012809121c0a1462696e6172795f6572726f" . + "725f64657461696c7318032001280922e2030a0d52657175657374506172" . + "616d7312150a0d6563686f5f646561646c696e65180120012808121e0a16" . + "636c69656e745f63616e63656c5f61667465725f7573180220012805121e" . + "0a167365727665725f63616e63656c5f61667465725f7573180320012805" . + "12150a0d6563686f5f6d65746164617461180420012808121a0a12636865" . + "636b5f617574685f636f6e74657874180520012808121f0a17726573706f" . + "6e73655f6d6573736167655f6c656e67746818062001280512110a096563" . + "686f5f7065657218072001280812200a1865787065637465645f636c6965" . + "6e745f6964656e74697479180820012809121c0a14736b69705f63616e63" . + "656c6c65645f636865636b18092001280812280a2065787065637465645f" . + "7472616e73706f72745f73656375726974795f74797065180a2001280912" . + "2b0a0a64656275675f696e666f180b2001280b32172e677270632e746573" . + "74696e672e4465627567496e666f12120a0a7365727665725f646965180c" . + "20012808121c0a1462696e6172795f6572726f725f64657461696c73180d" . + "2001280912310a0e65787065637465645f6572726f72180e2001280b3219" . + "2e677270632e74657374696e672e4572726f7253746174757312170a0f73" . + "65727665725f736c6565705f7573180f20012805224a0a0b4563686f5265" . + "7175657374120f0a076d657373616765180120012809122a0a0570617261" . + "6d18022001280b321b2e677270632e74657374696e672e52657175657374" . + "506172616d7322460a0e526573706f6e7365506172616d7312180a107265" . + "71756573745f646561646c696e65180120012803120c0a04686f73741802" . + "20012809120c0a0470656572180320012809224c0a0c4563686f52657370" . + "6f6e7365120f0a076d657373616765180120012809122b0a05706172616d" . + "18022001280b321c2e677270632e74657374696e672e526573706f6e7365" . + "506172616d73620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/GPBEmpty.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/GPBEmpty.php new file mode 100644 index 0000000000..7198f7da0c --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/GPBEmpty.php @@ -0,0 +1,26 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/empty.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class GPBEmpty +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + $pool->internalAddGeneratedFile(hex2bin( + "0a430a227372632f70726f746f2f677270632f74657374696e672f656d70" . + "74792e70726f746f120c677270632e74657374696e6722070a05456d7074" . + "79620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Metrics.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Metrics.php new file mode 100644 index 0000000000..7ac739fb54 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Metrics.php @@ -0,0 +1,36 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/metrics.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class Metrics +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + $pool->internalAddGeneratedFile(hex2bin( + "0afb020a247372632f70726f746f2f677270632f74657374696e672f6d65" . + "74726963732e70726f746f120c677270632e74657374696e67226c0a0d47" . + "61756765526573706f6e7365120c0a046e616d6518012001280912140a0a" . + "6c6f6e675f76616c7565180220012803480012160a0c646f75626c655f76" . + "616c7565180320012801480012160a0c737472696e675f76616c75651804" . + "20012809480042070a0576616c7565221c0a0c4761756765526571756573" . + "74120c0a046e616d65180120012809220e0a0c456d7074794d6573736167" . + "6532a0010a0e4d6574726963735365727669636512490a0c476574416c6c" . + "476175676573121a2e677270632e74657374696e672e456d7074794d6573" . + "736167651a1b2e677270632e74657374696e672e4761756765526573706f" . + "6e7365300112430a084765744761756765121a2e677270632e7465737469" . + "6e672e4761756765526571756573741a1b2e677270632e74657374696e67" . + "2e4761756765526573706f6e7365620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/ReportQpsScenarioService.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/ReportQpsScenarioService.php new file mode 100644 index 0000000000..35a1fb4acb --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/ReportQpsScenarioService.php @@ -0,0 +1,30 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/report_qps_scenario_service.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class ReportQpsScenarioService +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + \GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce(); + $pool->internalAddGeneratedFile(hex2bin( + "0ab0010a387372632f70726f746f2f677270632f74657374696e672f7265" . + "706f72745f7170735f7363656e6172696f5f736572766963652e70726f74" . + "6f120c677270632e74657374696e67325e0a185265706f72745170735363" . + "656e6172696f5365727669636512420a0e5265706f72745363656e617269" . + "6f121c2e677270632e74657374696e672e5363656e6172696f526573756c" . + "741a122e677270632e74657374696e672e566f6964620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Test.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Test.php new file mode 100644 index 0000000000..54628cfa37 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Test.php @@ -0,0 +1,60 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/test.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class Test +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + \GPBMetadata\Src\Proto\Grpc\Testing\GPBEmpty::initOnce(); + \GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce(); + $pool->internalAddGeneratedFile(hex2bin( + "0a91080a217372632f70726f746f2f677270632f74657374696e672f7465" . + "73742e70726f746f120c677270632e74657374696e671a257372632f7072" . + "6f746f2f677270632f74657374696e672f6d657373616765732e70726f74" . + "6f32cb050a0b546573745365727669636512350a09456d70747943616c6c" . + "12132e677270632e74657374696e672e456d7074791a132e677270632e74" . + "657374696e672e456d70747912460a09556e61727943616c6c121b2e6772" . + "70632e74657374696e672e53696d706c65526571756573741a1c2e677270" . + "632e74657374696e672e53696d706c65526573706f6e7365124f0a124361" . + "63686561626c65556e61727943616c6c121b2e677270632e74657374696e" . + "672e53696d706c65526571756573741a1c2e677270632e74657374696e67" . + "2e53696d706c65526573706f6e7365126c0a1353747265616d696e674f75" . + "7470757443616c6c12282e677270632e74657374696e672e53747265616d" . + "696e674f757470757443616c6c526571756573741a292e677270632e7465" . + "7374696e672e53747265616d696e674f757470757443616c6c526573706f" . + "6e7365300112690a1253747265616d696e67496e70757443616c6c12272e" . + "677270632e74657374696e672e53747265616d696e67496e70757443616c" . + "6c526571756573741a282e677270632e74657374696e672e53747265616d" . + "696e67496e70757443616c6c526573706f6e7365280112690a0e46756c6c" . + "4475706c657843616c6c12282e677270632e74657374696e672e53747265" . + "616d696e674f757470757443616c6c526571756573741a292e677270632e" . + "74657374696e672e53747265616d696e674f757470757443616c6c526573" . + "706f6e73652801300112690a0e48616c664475706c657843616c6c12282e" . + "677270632e74657374696e672e53747265616d696e674f75747075744361" . + "6c6c526571756573741a292e677270632e74657374696e672e5374726561" . + "6d696e674f757470757443616c6c526573706f6e736528013001123d0a11" . + "556e696d706c656d656e74656443616c6c12132e677270632e7465737469" . + "6e672e456d7074791a132e677270632e74657374696e672e456d70747932" . + "550a14556e696d706c656d656e74656453657276696365123d0a11556e69" . + "6d706c656d656e74656443616c6c12132e677270632e74657374696e672e" . + "456d7074791a132e677270632e74657374696e672e456d7074793289010a" . + "105265636f6e6e65637453657276696365123b0a055374617274121d2e67" . + "7270632e74657374696e672e5265636f6e6e656374506172616d731a132e" . + "677270632e74657374696e672e456d70747912380a0453746f7012132e67" . + "7270632e74657374696e672e456d7074791a1b2e677270632e7465737469" . + "6e672e5265636f6e6e656374496e666f620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/WorkerService.php b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/WorkerService.php new file mode 100644 index 0000000000..a8a863df19 --- /dev/null +++ b/src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/WorkerService.php @@ -0,0 +1,36 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/worker_service.proto + +namespace GPBMetadata\Src\Proto\Grpc\Testing; + +class WorkerService +{ + public static $is_initialized = false; + + public static function initOnce() { + $pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool(); + + if (static::$is_initialized == true) { + return; + } + \GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce(); + $pool->internalAddGeneratedFile(hex2bin( + "0add020a2b7372632f70726f746f2f677270632f74657374696e672f776f" . + "726b65725f736572766963652e70726f746f120c677270632e7465737469" . + "6e673297020a0d576f726b65725365727669636512450a0952756e536572" . + "76657212182e677270632e74657374696e672e536572766572417267731a" . + "1a2e677270632e74657374696e672e536572766572537461747573280130" . + "0112450a0952756e436c69656e7412182e677270632e74657374696e672e" . + "436c69656e74417267731a1a2e677270632e74657374696e672e436c6965" . + "6e745374617475732801300112420a09436f7265436f756e7412192e6772" . + "70632e74657374696e672e436f7265526571756573741a1a2e677270632e" . + "74657374696e672e436f7265526573706f6e736512340a0a51756974576f" . + "726b657212122e677270632e74657374696e672e566f69641a122e677270" . + "632e74657374696e672e566f6964620670726f746f33" + )); + + static::$is_initialized = true; + } +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ClientConfig.php b/src/php/tests/qps/generated_code/Grpc/Testing/ClientConfig.php index f7bc21587c..0dd3072f18 100644 --- a/src/php/tests/qps/generated_code/Grpc/Testing/ClientConfig.php +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ClientConfig.php @@ -97,6 +97,12 @@ class ClientConfig extends \Google\Protobuf\Internal\Message * Generated from protobuf field <code>int32 messages_per_stream = 18;</code> */ private $messages_per_stream = 0; + /** + * Use coalescing API when possible. + * + * Generated from protobuf field <code>bool use_coalesce_api = 19;</code> + */ + private $use_coalesce_api = false; public function __construct() { \GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce(); @@ -495,5 +501,31 @@ class ClientConfig extends \Google\Protobuf\Internal\Message return $this; } + /** + * Use coalescing API when possible. + * + * Generated from protobuf field <code>bool use_coalesce_api = 19;</code> + * @return bool + */ + public function getUseCoalesceApi() + { + return $this->use_coalesce_api; + } + + /** + * Use coalescing API when possible. + * + * Generated from protobuf field <code>bool use_coalesce_api = 19;</code> + * @param bool $var + * @return $this + */ + public function setUseCoalesceApi($var) + { + GPBUtil::checkBool($var); + $this->use_coalesce_api = $var; + + return $this; + } + } diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/DebugInfo.php b/src/php/tests/qps/generated_code/Grpc/Testing/DebugInfo.php new file mode 100644 index 0000000000..805b629b0d --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/DebugInfo.php @@ -0,0 +1,77 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Message to be echoed back serialized in trailer. + * + * Generated from protobuf message <code>grpc.testing.DebugInfo</code> + */ +class DebugInfo extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>repeated string stack_entries = 1;</code> + */ + private $stack_entries; + /** + * Generated from protobuf field <code>string detail = 2;</code> + */ + private $detail = ''; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>repeated string stack_entries = 1;</code> + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getStackEntries() + { + return $this->stack_entries; + } + + /** + * Generated from protobuf field <code>repeated string stack_entries = 1;</code> + * @param string[]|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setStackEntries($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->stack_entries = $arr; + + return $this; + } + + /** + * Generated from protobuf field <code>string detail = 2;</code> + * @return string + */ + public function getDetail() + { + return $this->detail; + } + + /** + * Generated from protobuf field <code>string detail = 2;</code> + * @param string $var + * @return $this + */ + public function setDetail($var) + { + GPBUtil::checkString($var, True); + $this->detail = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/EchoRequest.php b/src/php/tests/qps/generated_code/Grpc/Testing/EchoRequest.php new file mode 100644 index 0000000000..9aadfc5dee --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/EchoRequest.php @@ -0,0 +1,75 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.EchoRequest</code> + */ +class EchoRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>string message = 1;</code> + */ + private $message = ''; + /** + * Generated from protobuf field <code>.grpc.testing.RequestParams param = 2;</code> + */ + private $param = null; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>string message = 1;</code> + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * Generated from protobuf field <code>string message = 1;</code> + * @param string $var + * @return $this + */ + public function setMessage($var) + { + GPBUtil::checkString($var, True); + $this->message = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>.grpc.testing.RequestParams param = 2;</code> + * @return \Grpc\Testing\RequestParams + */ + public function getParam() + { + return $this->param; + } + + /** + * Generated from protobuf field <code>.grpc.testing.RequestParams param = 2;</code> + * @param \Grpc\Testing\RequestParams $var + * @return $this + */ + public function setParam($var) + { + GPBUtil::checkMessage($var, \Grpc\Testing\RequestParams::class); + $this->param = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/EchoResponse.php b/src/php/tests/qps/generated_code/Grpc/Testing/EchoResponse.php new file mode 100644 index 0000000000..c4a9db35ab --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/EchoResponse.php @@ -0,0 +1,75 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.EchoResponse</code> + */ +class EchoResponse extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>string message = 1;</code> + */ + private $message = ''; + /** + * Generated from protobuf field <code>.grpc.testing.ResponseParams param = 2;</code> + */ + private $param = null; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>string message = 1;</code> + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * Generated from protobuf field <code>string message = 1;</code> + * @param string $var + * @return $this + */ + public function setMessage($var) + { + GPBUtil::checkString($var, True); + $this->message = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>.grpc.testing.ResponseParams param = 2;</code> + * @return \Grpc\Testing\ResponseParams + */ + public function getParam() + { + return $this->param; + } + + /** + * Generated from protobuf field <code>.grpc.testing.ResponseParams param = 2;</code> + * @param \Grpc\Testing\ResponseParams $var + * @return $this + */ + public function setParam($var) + { + GPBUtil::checkMessage($var, \Grpc\Testing\ResponseParams::class); + $this->param = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/EchoTestServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/EchoTestServiceClient.php new file mode 100644 index 0000000000..b3dcf5b7af --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/EchoTestServiceClient.php @@ -0,0 +1,93 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Grpc\Testing; + +/** + */ +class EchoTestServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * @param \Grpc\Testing\EchoRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function Echo(\Grpc\Testing\EchoRequest $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.EchoTestService/Echo', + $argument, + ['\Grpc\Testing\EchoResponse', 'decode'], + $metadata, $options); + } + + /** + * @param array $metadata metadata + * @param array $options call options + */ + public function RequestStream($metadata = [], $options = []) { + return $this->_clientStreamRequest('/grpc.testing.EchoTestService/RequestStream', + ['\Grpc\Testing\EchoResponse','decode'], + $metadata, $options); + } + + /** + * @param \Grpc\Testing\EchoRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function ResponseStream(\Grpc\Testing\EchoRequest $argument, + $metadata = [], $options = []) { + return $this->_serverStreamRequest('/grpc.testing.EchoTestService/ResponseStream', + $argument, + ['\Grpc\Testing\EchoResponse', 'decode'], + $metadata, $options); + } + + /** + * @param array $metadata metadata + * @param array $options call options + */ + public function BidiStream($metadata = [], $options = []) { + return $this->_bidiRequest('/grpc.testing.EchoTestService/BidiStream', + ['\Grpc\Testing\EchoResponse','decode'], + $metadata, $options); + } + + /** + * @param \Grpc\Testing\EchoRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function Unimplemented(\Grpc\Testing\EchoRequest $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.EchoTestService/Unimplemented', + $argument, + ['\Grpc\Testing\EchoResponse', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/EmptyMessage.php b/src/php/tests/qps/generated_code/Grpc/Testing/EmptyMessage.php new file mode 100644 index 0000000000..3da163e7c0 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/EmptyMessage.php @@ -0,0 +1,23 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/metrics.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.EmptyMessage</code> + */ +class EmptyMessage extends \Google\Protobuf\Internal\Message +{ + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\Metrics::initOnce(); + parent::__construct(); + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ErrorStatus.php b/src/php/tests/qps/generated_code/Grpc/Testing/ErrorStatus.php new file mode 100644 index 0000000000..cc378756c7 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ErrorStatus.php @@ -0,0 +1,103 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Error status client expects to see. + * + * Generated from protobuf message <code>grpc.testing.ErrorStatus</code> + */ +class ErrorStatus extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>int32 code = 1;</code> + */ + private $code = 0; + /** + * Generated from protobuf field <code>string error_message = 2;</code> + */ + private $error_message = ''; + /** + * Generated from protobuf field <code>string binary_error_details = 3;</code> + */ + private $binary_error_details = ''; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>int32 code = 1;</code> + * @return int + */ + public function getCode() + { + return $this->code; + } + + /** + * Generated from protobuf field <code>int32 code = 1;</code> + * @param int $var + * @return $this + */ + public function setCode($var) + { + GPBUtil::checkInt32($var); + $this->code = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>string error_message = 2;</code> + * @return string + */ + public function getErrorMessage() + { + return $this->error_message; + } + + /** + * Generated from protobuf field <code>string error_message = 2;</code> + * @param string $var + * @return $this + */ + public function setErrorMessage($var) + { + GPBUtil::checkString($var, True); + $this->error_message = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>string binary_error_details = 3;</code> + * @return string + */ + public function getBinaryErrorDetails() + { + return $this->binary_error_details; + } + + /** + * Generated from protobuf field <code>string binary_error_details = 3;</code> + * @param string $var + * @return $this + */ + public function setBinaryErrorDetails($var) + { + GPBUtil::checkString($var, True); + $this->binary_error_details = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/GaugeRequest.php b/src/php/tests/qps/generated_code/Grpc/Testing/GaugeRequest.php new file mode 100644 index 0000000000..3c283693c9 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/GaugeRequest.php @@ -0,0 +1,51 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/metrics.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Request message containing the gauge name + * + * Generated from protobuf message <code>grpc.testing.GaugeRequest</code> + */ +class GaugeRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>string name = 1;</code> + */ + private $name = ''; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\Metrics::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>string name = 1;</code> + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Generated from protobuf field <code>string name = 1;</code> + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/GaugeResponse.php b/src/php/tests/qps/generated_code/Grpc/Testing/GaugeResponse.php new file mode 100644 index 0000000000..da658ba198 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/GaugeResponse.php @@ -0,0 +1,126 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/metrics.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Reponse message containing the gauge name and value + * + * Generated from protobuf message <code>grpc.testing.GaugeResponse</code> + */ +class GaugeResponse extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>string name = 1;</code> + */ + private $name = ''; + protected $value; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\Metrics::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>string name = 1;</code> + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Generated from protobuf field <code>string name = 1;</code> + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>int64 long_value = 2;</code> + * @return int|string + */ + public function getLongValue() + { + return $this->readOneof(2); + } + + /** + * Generated from protobuf field <code>int64 long_value = 2;</code> + * @param int|string $var + * @return $this + */ + public function setLongValue($var) + { + GPBUtil::checkInt64($var); + $this->writeOneof(2, $var); + + return $this; + } + + /** + * Generated from protobuf field <code>double double_value = 3;</code> + * @return float + */ + public function getDoubleValue() + { + return $this->readOneof(3); + } + + /** + * Generated from protobuf field <code>double double_value = 3;</code> + * @param float $var + * @return $this + */ + public function setDoubleValue($var) + { + GPBUtil::checkDouble($var); + $this->writeOneof(3, $var); + + return $this; + } + + /** + * Generated from protobuf field <code>string string_value = 4;</code> + * @return string + */ + public function getStringValue() + { + return $this->readOneof(4); + } + + /** + * Generated from protobuf field <code>string string_value = 4;</code> + * @param string $var + * @return $this + */ + public function setStringValue($var) + { + GPBUtil::checkString($var, True); + $this->writeOneof(4, $var); + + return $this; + } + + /** + * @return string + */ + public function getValue() + { + return $this->whichOneof("value"); + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/MetricsServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/MetricsServiceClient.php new file mode 100644 index 0000000000..491ccbce72 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/MetricsServiceClient.php @@ -0,0 +1,69 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015-2016 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Contains the definitions for a metrics service and the type of metrics +// exposed by the service. +// +// Currently, 'Gauge' (i.e a metric that represents the measured value of +// something at an instant of time) is the only metric type supported by the +// service. +namespace Grpc\Testing; + +/** + */ +class MetricsServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * Returns the values of all the gauges that are currently being maintained by + * the service + * @param \Grpc\Testing\EmptyMessage $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function GetAllGauges(\Grpc\Testing\EmptyMessage $argument, + $metadata = [], $options = []) { + return $this->_serverStreamRequest('/grpc.testing.MetricsService/GetAllGauges', + $argument, + ['\Grpc\Testing\GaugeResponse', 'decode'], + $metadata, $options); + } + + /** + * Returns the value of one gauge + * @param \Grpc\Testing\GaugeRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function GetGauge(\Grpc\Testing\GaugeRequest $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.MetricsService/GetGauge', + $argument, + ['\Grpc\Testing\GaugeResponse', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/NoRpcServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/NoRpcServiceClient.php new file mode 100644 index 0000000000..1d58eaf88a --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/NoRpcServiceClient.php @@ -0,0 +1,35 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Grpc\Testing; + +/** + * A service without any rpc defined to test coverage. + */ +class NoRpcServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/PBEmpty.php b/src/php/tests/qps/generated_code/Grpc/Testing/PBEmpty.php new file mode 100644 index 0000000000..a1fe9df454 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/PBEmpty.php @@ -0,0 +1,30 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/empty.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * An empty message that you can re-use to avoid defining duplicated empty + * messages in your project. A typical example is to use it as argument or the + * return value of a service API. For instance: + * service Foo { + * rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { }; + * }; + * + * Generated from protobuf message <code>grpc.testing.Empty</code> + */ +class PBEmpty extends \Google\Protobuf\Internal\Message +{ + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\GPBEmpty::initOnce(); + parent::__construct(); + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/PBVoid.php b/src/php/tests/qps/generated_code/Grpc/Testing/PBVoid.php new file mode 100644 index 0000000000..94cb6c1ecf --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/PBVoid.php @@ -0,0 +1,23 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/control.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.Void</code> + */ +class PBVoid extends \Google\Protobuf\Internal\Message +{ + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce(); + parent::__construct(); + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ProxyClientServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/ProxyClientServiceClient.php index 5510b57064..c0e304929d 100644 --- a/src/php/tests/qps/generated_code/Grpc/Testing/ProxyClientServiceClient.php +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ProxyClientServiceClient.php @@ -32,11 +32,11 @@ class ProxyClientServiceClient extends \Grpc\BaseStub { } /** - * @param \Grpc\Testing\Void $argument input argument + * @param \Grpc\Testing\PBVoid $argument input argument * @param array $metadata metadata * @param array $options call options */ - public function GetConfig(\Grpc\Testing\Void $argument, + public function GetConfig(\Grpc\Testing\PBVoid $argument, $metadata = [], $options = []) { return $this->_simpleRequest('/grpc.testing.ProxyClientService/GetConfig', $argument, @@ -50,7 +50,7 @@ class ProxyClientServiceClient extends \Grpc\BaseStub { */ public function ReportTime($metadata = [], $options = []) { return $this->_clientStreamRequest('/grpc.testing.ProxyClientService/ReportTime', - ['\Grpc\Testing\Void','decode'], + ['\Grpc\Testing\PBVoid','decode'], $metadata, $options); } @@ -60,7 +60,7 @@ class ProxyClientServiceClient extends \Grpc\BaseStub { */ public function ReportHist($metadata = [], $options = []) { return $this->_clientStreamRequest('/grpc.testing.ProxyClientService/ReportHist', - ['\Grpc\Testing\Void','decode'], + ['\Grpc\Testing\PBVoid','decode'], $metadata, $options); } diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ReconnectServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/ReconnectServiceClient.php new file mode 100644 index 0000000000..a1802e97cd --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ReconnectServiceClient.php @@ -0,0 +1,64 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015-2016 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// An integration test service that covers all the method signature permutations +// of unary/streaming requests/responses. +// +namespace Grpc\Testing; + +/** + * A service used to control reconnect server. + */ +class ReconnectServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * @param \Grpc\Testing\ReconnectParams $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function Start(\Grpc\Testing\ReconnectParams $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.ReconnectService/Start', + $argument, + ['\Grpc\Testing\PBEmpty', 'decode'], + $metadata, $options); + } + + /** + * @param \Grpc\Testing\PBEmpty $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function Stop(\Grpc\Testing\PBEmpty $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.ReconnectService/Stop', + $argument, + ['\Grpc\Testing\ReconnectInfo', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ReportQpsScenarioServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/ReportQpsScenarioServiceClient.php index 72d44ffc66..3abb5abe6d 100644 --- a/src/php/tests/qps/generated_code/Grpc/Testing/ReportQpsScenarioServiceClient.php +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ReportQpsScenarioServiceClient.php @@ -43,7 +43,7 @@ class ReportQpsScenarioServiceClient extends \Grpc\BaseStub { $metadata = [], $options = []) { return $this->_simpleRequest('/grpc.testing.ReportQpsScenarioService/ReportScenario', $argument, - ['\Grpc\Testing\Void', 'decode'], + ['\Grpc\Testing\PBVoid', 'decode'], $metadata, $options); } diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/Request.php b/src/php/tests/qps/generated_code/Grpc/Testing/Request.php new file mode 100644 index 0000000000..6a20f6a897 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/Request.php @@ -0,0 +1,23 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/compiler_test.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.Request</code> + */ +class Request extends \Google\Protobuf\Internal\Message +{ + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\CompilerTest::initOnce(); + parent::__construct(); + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/RequestParams.php b/src/php/tests/qps/generated_code/Grpc/Testing/RequestParams.php new file mode 100644 index 0000000000..f01f50d5af --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/RequestParams.php @@ -0,0 +1,431 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.RequestParams</code> + */ +class RequestParams extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>bool echo_deadline = 1;</code> + */ + private $echo_deadline = false; + /** + * Generated from protobuf field <code>int32 client_cancel_after_us = 2;</code> + */ + private $client_cancel_after_us = 0; + /** + * Generated from protobuf field <code>int32 server_cancel_after_us = 3;</code> + */ + private $server_cancel_after_us = 0; + /** + * Generated from protobuf field <code>bool echo_metadata = 4;</code> + */ + private $echo_metadata = false; + /** + * Generated from protobuf field <code>bool check_auth_context = 5;</code> + */ + private $check_auth_context = false; + /** + * Generated from protobuf field <code>int32 response_message_length = 6;</code> + */ + private $response_message_length = 0; + /** + * Generated from protobuf field <code>bool echo_peer = 7;</code> + */ + private $echo_peer = false; + /** + * will force check_auth_context. + * + * Generated from protobuf field <code>string expected_client_identity = 8;</code> + */ + private $expected_client_identity = ''; + /** + * Generated from protobuf field <code>bool skip_cancelled_check = 9;</code> + */ + private $skip_cancelled_check = false; + /** + * Generated from protobuf field <code>string expected_transport_security_type = 10;</code> + */ + private $expected_transport_security_type = ''; + /** + * Generated from protobuf field <code>.grpc.testing.DebugInfo debug_info = 11;</code> + */ + private $debug_info = null; + /** + * Server should not see a request with this set. + * + * Generated from protobuf field <code>bool server_die = 12;</code> + */ + private $server_die = false; + /** + * Generated from protobuf field <code>string binary_error_details = 13;</code> + */ + private $binary_error_details = ''; + /** + * Generated from protobuf field <code>.grpc.testing.ErrorStatus expected_error = 14;</code> + */ + private $expected_error = null; + /** + * Amount to sleep when invoking server + * + * Generated from protobuf field <code>int32 server_sleep_us = 15;</code> + */ + private $server_sleep_us = 0; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>bool echo_deadline = 1;</code> + * @return bool + */ + public function getEchoDeadline() + { + return $this->echo_deadline; + } + + /** + * Generated from protobuf field <code>bool echo_deadline = 1;</code> + * @param bool $var + * @return $this + */ + public function setEchoDeadline($var) + { + GPBUtil::checkBool($var); + $this->echo_deadline = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>int32 client_cancel_after_us = 2;</code> + * @return int + */ + public function getClientCancelAfterUs() + { + return $this->client_cancel_after_us; + } + + /** + * Generated from protobuf field <code>int32 client_cancel_after_us = 2;</code> + * @param int $var + * @return $this + */ + public function setClientCancelAfterUs($var) + { + GPBUtil::checkInt32($var); + $this->client_cancel_after_us = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>int32 server_cancel_after_us = 3;</code> + * @return int + */ + public function getServerCancelAfterUs() + { + return $this->server_cancel_after_us; + } + + /** + * Generated from protobuf field <code>int32 server_cancel_after_us = 3;</code> + * @param int $var + * @return $this + */ + public function setServerCancelAfterUs($var) + { + GPBUtil::checkInt32($var); + $this->server_cancel_after_us = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>bool echo_metadata = 4;</code> + * @return bool + */ + public function getEchoMetadata() + { + return $this->echo_metadata; + } + + /** + * Generated from protobuf field <code>bool echo_metadata = 4;</code> + * @param bool $var + * @return $this + */ + public function setEchoMetadata($var) + { + GPBUtil::checkBool($var); + $this->echo_metadata = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>bool check_auth_context = 5;</code> + * @return bool + */ + public function getCheckAuthContext() + { + return $this->check_auth_context; + } + + /** + * Generated from protobuf field <code>bool check_auth_context = 5;</code> + * @param bool $var + * @return $this + */ + public function setCheckAuthContext($var) + { + GPBUtil::checkBool($var); + $this->check_auth_context = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>int32 response_message_length = 6;</code> + * @return int + */ + public function getResponseMessageLength() + { + return $this->response_message_length; + } + + /** + * Generated from protobuf field <code>int32 response_message_length = 6;</code> + * @param int $var + * @return $this + */ + public function setResponseMessageLength($var) + { + GPBUtil::checkInt32($var); + $this->response_message_length = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>bool echo_peer = 7;</code> + * @return bool + */ + public function getEchoPeer() + { + return $this->echo_peer; + } + + /** + * Generated from protobuf field <code>bool echo_peer = 7;</code> + * @param bool $var + * @return $this + */ + public function setEchoPeer($var) + { + GPBUtil::checkBool($var); + $this->echo_peer = $var; + + return $this; + } + + /** + * will force check_auth_context. + * + * Generated from protobuf field <code>string expected_client_identity = 8;</code> + * @return string + */ + public function getExpectedClientIdentity() + { + return $this->expected_client_identity; + } + + /** + * will force check_auth_context. + * + * Generated from protobuf field <code>string expected_client_identity = 8;</code> + * @param string $var + * @return $this + */ + public function setExpectedClientIdentity($var) + { + GPBUtil::checkString($var, True); + $this->expected_client_identity = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>bool skip_cancelled_check = 9;</code> + * @return bool + */ + public function getSkipCancelledCheck() + { + return $this->skip_cancelled_check; + } + + /** + * Generated from protobuf field <code>bool skip_cancelled_check = 9;</code> + * @param bool $var + * @return $this + */ + public function setSkipCancelledCheck($var) + { + GPBUtil::checkBool($var); + $this->skip_cancelled_check = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>string expected_transport_security_type = 10;</code> + * @return string + */ + public function getExpectedTransportSecurityType() + { + return $this->expected_transport_security_type; + } + + /** + * Generated from protobuf field <code>string expected_transport_security_type = 10;</code> + * @param string $var + * @return $this + */ + public function setExpectedTransportSecurityType($var) + { + GPBUtil::checkString($var, True); + $this->expected_transport_security_type = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>.grpc.testing.DebugInfo debug_info = 11;</code> + * @return \Grpc\Testing\DebugInfo + */ + public function getDebugInfo() + { + return $this->debug_info; + } + + /** + * Generated from protobuf field <code>.grpc.testing.DebugInfo debug_info = 11;</code> + * @param \Grpc\Testing\DebugInfo $var + * @return $this + */ + public function setDebugInfo($var) + { + GPBUtil::checkMessage($var, \Grpc\Testing\DebugInfo::class); + $this->debug_info = $var; + + return $this; + } + + /** + * Server should not see a request with this set. + * + * Generated from protobuf field <code>bool server_die = 12;</code> + * @return bool + */ + public function getServerDie() + { + return $this->server_die; + } + + /** + * Server should not see a request with this set. + * + * Generated from protobuf field <code>bool server_die = 12;</code> + * @param bool $var + * @return $this + */ + public function setServerDie($var) + { + GPBUtil::checkBool($var); + $this->server_die = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>string binary_error_details = 13;</code> + * @return string + */ + public function getBinaryErrorDetails() + { + return $this->binary_error_details; + } + + /** + * Generated from protobuf field <code>string binary_error_details = 13;</code> + * @param string $var + * @return $this + */ + public function setBinaryErrorDetails($var) + { + GPBUtil::checkString($var, True); + $this->binary_error_details = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>.grpc.testing.ErrorStatus expected_error = 14;</code> + * @return \Grpc\Testing\ErrorStatus + */ + public function getExpectedError() + { + return $this->expected_error; + } + + /** + * Generated from protobuf field <code>.grpc.testing.ErrorStatus expected_error = 14;</code> + * @param \Grpc\Testing\ErrorStatus $var + * @return $this + */ + public function setExpectedError($var) + { + GPBUtil::checkMessage($var, \Grpc\Testing\ErrorStatus::class); + $this->expected_error = $var; + + return $this; + } + + /** + * Amount to sleep when invoking server + * + * Generated from protobuf field <code>int32 server_sleep_us = 15;</code> + * @return int + */ + public function getServerSleepUs() + { + return $this->server_sleep_us; + } + + /** + * Amount to sleep when invoking server + * + * Generated from protobuf field <code>int32 server_sleep_us = 15;</code> + * @param int $var + * @return $this + */ + public function setServerSleepUs($var) + { + GPBUtil::checkInt32($var); + $this->server_sleep_us = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/Response.php b/src/php/tests/qps/generated_code/Grpc/Testing/Response.php new file mode 100644 index 0000000000..7925a7db3d --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/Response.php @@ -0,0 +1,23 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/compiler_test.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.Response</code> + */ +class Response extends \Google\Protobuf\Internal\Message +{ + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\CompilerTest::initOnce(); + parent::__construct(); + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ResponseParams.php b/src/php/tests/qps/generated_code/Grpc/Testing/ResponseParams.php new file mode 100644 index 0000000000..d20f92289a --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ResponseParams.php @@ -0,0 +1,101 @@ +<?php +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: src/proto/grpc/testing/echo_messages.proto + +namespace Grpc\Testing; + +use Google\Protobuf\Internal\GPBType; +use Google\Protobuf\Internal\RepeatedField; +use Google\Protobuf\Internal\GPBUtil; + +/** + * Generated from protobuf message <code>grpc.testing.ResponseParams</code> + */ +class ResponseParams extends \Google\Protobuf\Internal\Message +{ + /** + * Generated from protobuf field <code>int64 request_deadline = 1;</code> + */ + private $request_deadline = 0; + /** + * Generated from protobuf field <code>string host = 2;</code> + */ + private $host = ''; + /** + * Generated from protobuf field <code>string peer = 3;</code> + */ + private $peer = ''; + + public function __construct() { + \GPBMetadata\Src\Proto\Grpc\Testing\EchoMessages::initOnce(); + parent::__construct(); + } + + /** + * Generated from protobuf field <code>int64 request_deadline = 1;</code> + * @return int|string + */ + public function getRequestDeadline() + { + return $this->request_deadline; + } + + /** + * Generated from protobuf field <code>int64 request_deadline = 1;</code> + * @param int|string $var + * @return $this + */ + public function setRequestDeadline($var) + { + GPBUtil::checkInt64($var); + $this->request_deadline = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>string host = 2;</code> + * @return string + */ + public function getHost() + { + return $this->host; + } + + /** + * Generated from protobuf field <code>string host = 2;</code> + * @param string $var + * @return $this + */ + public function setHost($var) + { + GPBUtil::checkString($var, True); + $this->host = $var; + + return $this; + } + + /** + * Generated from protobuf field <code>string peer = 3;</code> + * @return string + */ + public function getPeer() + { + return $this->peer; + } + + /** + * Generated from protobuf field <code>string peer = 3;</code> + * @param string $var + * @return $this + */ + public function setPeer($var) + { + GPBUtil::checkString($var, True); + $this->peer = $var; + + return $this; + } + +} + diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ServiceAClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/ServiceAClient.php new file mode 100644 index 0000000000..df469cbea3 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ServiceAClient.php @@ -0,0 +1,97 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2016 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// File detached comment 1 +// +// File detached comment 2 +// +// File leading comment 1 +namespace Grpc\Testing; + +/** + * ServiceA detached comment 1 + * + * ServiceA detached comment 2 + * + * ServiceA leading comment 1 + */ +class ServiceAClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * MethodA1 leading comment 1 + * @param \Grpc\Testing\Request $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function MethodA1(\Grpc\Testing\Request $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.ServiceA/MethodA1', + $argument, + ['\Grpc\Testing\Response', 'decode'], + $metadata, $options); + } + + /** + * MethodA2 detached leading comment 1 + * + * Method A2 leading comment 1 + * Method A2 leading comment 2 + * @param array $metadata metadata + * @param array $options call options + */ + public function MethodA2($metadata = [], $options = []) { + return $this->_clientStreamRequest('/grpc.testing.ServiceA/MethodA2', + ['\Grpc\Testing\Response','decode'], + $metadata, $options); + } + + /** + * Method A3 leading comment 1 + * @param \Grpc\Testing\Request $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function MethodA3(\Grpc\Testing\Request $argument, + $metadata = [], $options = []) { + return $this->_serverStreamRequest('/grpc.testing.ServiceA/MethodA3', + $argument, + ['\Grpc\Testing\Response', 'decode'], + $metadata, $options); + } + + /** + * Method A4 leading comment 1 + * @param array $metadata metadata + * @param array $options call options + */ + public function MethodA4($metadata = [], $options = []) { + return $this->_bidiRequest('/grpc.testing.ServiceA/MethodA4', + ['\Grpc\Testing\Response','decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/ServiceBClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/ServiceBClient.php new file mode 100644 index 0000000000..54acf6364f --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/ServiceBClient.php @@ -0,0 +1,54 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2016 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// File detached comment 1 +// +// File detached comment 2 +// +// File leading comment 1 +namespace Grpc\Testing; + +/** + * ServiceB leading comment 1 + */ +class ServiceBClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * MethodB1 leading comment 1 + * @param \Grpc\Testing\Request $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function MethodB1(\Grpc\Testing\Request $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.ServiceB/MethodB1', + $argument, + ['\Grpc\Testing\Response', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/TestServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/TestServiceClient.php new file mode 100644 index 0000000000..7da9713d65 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/TestServiceClient.php @@ -0,0 +1,152 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015-2016 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// An integration test service that covers all the method signature permutations +// of unary/streaming requests/responses. +// +namespace Grpc\Testing; + +/** + * A simple service to test the various types of RPCs and experiment with + * performance with various types of payload. + */ +class TestServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * One empty request followed by one empty response. + * @param \Grpc\Testing\PBEmpty $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function EmptyCall(\Grpc\Testing\PBEmpty $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.TestService/EmptyCall', + $argument, + ['\Grpc\Testing\PBEmpty', 'decode'], + $metadata, $options); + } + + /** + * One request followed by one response. + * @param \Grpc\Testing\SimpleRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function UnaryCall(\Grpc\Testing\SimpleRequest $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.TestService/UnaryCall', + $argument, + ['\Grpc\Testing\SimpleResponse', 'decode'], + $metadata, $options); + } + + /** + * One request followed by one response. Response has cache control + * headers set such that a caching HTTP proxy (such as GFE) can + * satisfy subsequent requests. + * @param \Grpc\Testing\SimpleRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function CacheableUnaryCall(\Grpc\Testing\SimpleRequest $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.TestService/CacheableUnaryCall', + $argument, + ['\Grpc\Testing\SimpleResponse', 'decode'], + $metadata, $options); + } + + /** + * One request followed by a sequence of responses (streamed download). + * The server returns the payload with client desired type and sizes. + * @param \Grpc\Testing\StreamingOutputCallRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function StreamingOutputCall(\Grpc\Testing\StreamingOutputCallRequest $argument, + $metadata = [], $options = []) { + return $this->_serverStreamRequest('/grpc.testing.TestService/StreamingOutputCall', + $argument, + ['\Grpc\Testing\StreamingOutputCallResponse', 'decode'], + $metadata, $options); + } + + /** + * A sequence of requests followed by one response (streamed upload). + * The server returns the aggregated size of client payload as the result. + * @param array $metadata metadata + * @param array $options call options + */ + public function StreamingInputCall($metadata = [], $options = []) { + return $this->_clientStreamRequest('/grpc.testing.TestService/StreamingInputCall', + ['\Grpc\Testing\StreamingInputCallResponse','decode'], + $metadata, $options); + } + + /** + * A sequence of requests with each request served by the server immediately. + * As one request could lead to multiple responses, this interface + * demonstrates the idea of full duplexing. + * @param array $metadata metadata + * @param array $options call options + */ + public function FullDuplexCall($metadata = [], $options = []) { + return $this->_bidiRequest('/grpc.testing.TestService/FullDuplexCall', + ['\Grpc\Testing\StreamingOutputCallResponse','decode'], + $metadata, $options); + } + + /** + * A sequence of requests followed by a sequence of responses. + * The server buffers all the client requests and then serves them in order. A + * stream of responses are returned to the client when the server starts with + * first request. + * @param array $metadata metadata + * @param array $options call options + */ + public function HalfDuplexCall($metadata = [], $options = []) { + return $this->_bidiRequest('/grpc.testing.TestService/HalfDuplexCall', + ['\Grpc\Testing\StreamingOutputCallResponse','decode'], + $metadata, $options); + } + + /** + * The test server will not implement this method. It will be used + * to test the behavior when clients call unimplemented methods. + * @param \Grpc\Testing\PBEmpty $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function UnimplementedCall(\Grpc\Testing\PBEmpty $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.TestService/UnimplementedCall', + $argument, + ['\Grpc\Testing\PBEmpty', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/UnimplementedEchoServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/UnimplementedEchoServiceClient.php new file mode 100644 index 0000000000..fee0daa70c --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/UnimplementedEchoServiceClient.php @@ -0,0 +1,47 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +namespace Grpc\Testing; + +/** + */ +class UnimplementedEchoServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * @param \Grpc\Testing\EchoRequest $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function Unimplemented(\Grpc\Testing\EchoRequest $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.UnimplementedEchoService/Unimplemented', + $argument, + ['\Grpc\Testing\EchoResponse', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/UnimplementedServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/UnimplementedServiceClient.php new file mode 100644 index 0000000000..53b2020f19 --- /dev/null +++ b/src/php/tests/qps/generated_code/Grpc/Testing/UnimplementedServiceClient.php @@ -0,0 +1,53 @@ +<?php +// GENERATED CODE -- DO NOT EDIT! + +// Original file comments: +// Copyright 2015-2016 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// An integration test service that covers all the method signature permutations +// of unary/streaming requests/responses. +// +namespace Grpc\Testing; + +/** + * A simple service NOT implemented at servers so clients can test for + * that case. + */ +class UnimplementedServiceClient extends \Grpc\BaseStub { + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param \Grpc\Channel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) { + parent::__construct($hostname, $opts, $channel); + } + + /** + * A call that no server should implement + * @param \Grpc\Testing\PBEmpty $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function UnimplementedCall(\Grpc\Testing\PBEmpty $argument, + $metadata = [], $options = []) { + return $this->_simpleRequest('/grpc.testing.UnimplementedService/UnimplementedCall', + $argument, + ['\Grpc\Testing\PBEmpty', 'decode'], + $metadata, $options); + } + +} diff --git a/src/php/tests/qps/generated_code/Grpc/Testing/WorkerServiceClient.php b/src/php/tests/qps/generated_code/Grpc/Testing/WorkerServiceClient.php index 98c244ff9d..366e36529e 100644 --- a/src/php/tests/qps/generated_code/Grpc/Testing/WorkerServiceClient.php +++ b/src/php/tests/qps/generated_code/Grpc/Testing/WorkerServiceClient.php @@ -81,15 +81,15 @@ class WorkerServiceClient extends \Grpc\BaseStub { /** * Quit this worker - * @param \Grpc\Testing\Void $argument input argument + * @param \Grpc\Testing\PBVoid $argument input argument * @param array $metadata metadata * @param array $options call options */ - public function QuitWorker(\Grpc\Testing\Void $argument, + public function QuitWorker(\Grpc\Testing\PBVoid $argument, $metadata = [], $options = []) { return $this->_simpleRequest('/grpc.testing.WorkerService/QuitWorker', $argument, - ['\Grpc\Testing\Void', 'decode'], + ['\Grpc\Testing\PBVoid', 'decode'], $metadata, $options); } diff --git a/src/php/tests/unit_tests/CallCredentials2Test.php b/src/php/tests/unit_tests/CallCredentials2Test.php index a462bfff56..1c7e0c0ff6 100644 --- a/src/php/tests/unit_tests/CallCredentials2Test.php +++ b/src/php/tests/unit_tests/CallCredentials2Test.php @@ -46,9 +46,6 @@ class CallCredentials2Test extends PHPUnit_Framework_TestCase { unset($this->channel); unset($this->server); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function callbackFunc($context) diff --git a/src/php/tests/unit_tests/CallCredentialsTest.php b/src/php/tests/unit_tests/CallCredentialsTest.php index 31046e6395..4b5721d76a 100644 --- a/src/php/tests/unit_tests/CallCredentialsTest.php +++ b/src/php/tests/unit_tests/CallCredentialsTest.php @@ -52,9 +52,6 @@ class CallCredentialsTest extends PHPUnit_Framework_TestCase { unset($this->channel); unset($this->server); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function callbackFunc($context) diff --git a/src/php/tests/unit_tests/CallTest.php b/src/php/tests/unit_tests/CallTest.php index 38c36ed19a..c5e1890a98 100644 --- a/src/php/tests/unit_tests/CallTest.php +++ b/src/php/tests/unit_tests/CallTest.php @@ -38,9 +38,6 @@ class CallTest extends PHPUnit_Framework_TestCase public function tearDown() { $this->channel->close(); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function testConstructor() diff --git a/src/php/tests/unit_tests/ChannelTest.php b/src/php/tests/unit_tests/ChannelTest.php index 63d4193a8b..5baff1fbd9 100644 --- a/src/php/tests/unit_tests/ChannelTest.php +++ b/src/php/tests/unit_tests/ChannelTest.php @@ -28,9 +28,6 @@ class ChannelTest extends PHPUnit_Framework_TestCase if (!empty($this->channel)) { $this->channel->close(); } - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function testInsecureCredentials() @@ -383,11 +380,6 @@ class ChannelTest extends PHPUnit_Framework_TestCase // close channel1 $this->channel1->close(); - // channel2 is now in SHUTDOWN state - $state = $this->channel2->getConnectivityState(); - $this->assertEquals(GRPC\CHANNEL_FATAL_FAILURE, $state); - - // calling it again will result in an exception because the // channel is already closed $state = $this->channel2->getConnectivityState(); } diff --git a/src/php/tests/unit_tests/EndToEndTest.php b/src/php/tests/unit_tests/EndToEndTest.php index 71a56d2b6e..b54f1d87c9 100644 --- a/src/php/tests/unit_tests/EndToEndTest.php +++ b/src/php/tests/unit_tests/EndToEndTest.php @@ -29,9 +29,6 @@ class EndToEndTest extends PHPUnit_Framework_TestCase public function tearDown() { $this->channel->close(); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function testSimpleRequestBody() diff --git a/src/php/tests/unit_tests/InterceptorTest.php b/src/php/tests/unit_tests/InterceptorTest.php new file mode 100644 index 0000000000..08f5abbb21 --- /dev/null +++ b/src/php/tests/unit_tests/InterceptorTest.php @@ -0,0 +1,427 @@ +<?php +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +/** + * Interface exported by the server. + */ +require_once(dirname(__FILE__).'/../../lib/Grpc/BaseStub.php'); +require_once(dirname(__FILE__).'/../../lib/Grpc/AbstractCall.php'); +require_once(dirname(__FILE__).'/../../lib/Grpc/UnaryCall.php'); +require_once(dirname(__FILE__).'/../../lib/Grpc/ClientStreamingCall.php'); +require_once(dirname(__FILE__).'/../../lib/Grpc/Interceptor.php'); +require_once(dirname(__FILE__).'/../../lib/Grpc/Internal/InterceptorChannel.php'); + +class SimpleRequest +{ + private $data; + public function __construct($data) + { + $this->data = $data; + } + public function setData($data) + { + $this->data = $data; + } + public function serializeToString() + { + return $this->data; + } +} + +class InterceptorClient extends Grpc\BaseStub +{ + + /** + * @param string $hostname hostname + * @param array $opts channel options + * @param Channel|InterceptorChannel $channel (optional) re-use channel object + */ + public function __construct($hostname, $opts, $channel = null) + { + parent::__construct($hostname, $opts, $channel); + } + + /** + * A simple RPC. + * @param \Routeguide\Point $argument input argument + * @param array $metadata metadata + * @param array $options call options + */ + public function UnaryCall( + SimpleRequest $argument, + $metadata = [], + $options = [] + ) { + return $this->_simpleRequest( + '/dummy_method', + $argument, + [], + $metadata, + $options + ); + } + + /** + * A client-to-server streaming RPC. + * @param array $metadata metadata + * @param array $options call options + */ + public function StreamCall( + $metadata = [], + $options = [] + ) { + return $this->_clientStreamRequest('/dummy_method', [], $metadata, $options); + } +} + + +class ChangeMetadataInterceptor extends Grpc\Interceptor +{ + public function interceptUnaryUnary($method, + $argument, + array $metadata = [], + array $options = [], + $continuation) + { + $metadata["foo"] = array('interceptor_from_unary_request'); + return $continuation($method, $argument, $metadata, $options); + } + public function interceptStreamUnary($method, array $metadata = [], array $options = [], $continuation) + { + $metadata["foo"] = array('interceptor_from_stream_request'); + return $continuation($method, $metadata, $options); + } +} + +class ChangeMetadataInterceptor2 extends Grpc\Interceptor +{ + public function interceptUnaryUnary($method, + $argument, + array $metadata = [], + array $options = [], + $continuation) + { + if (array_key_exists('foo', $metadata)) { + $metadata['bar'] = array('ChangeMetadataInterceptor should be executed first'); + } else { + $metadata["bar"] = array('interceptor_from_unary_request'); + } + return $continuation($method, $argument, $metadata, $options); + } + public function interceptStreamUnary($method, + array $metadata = [], + array $options = [], + $continuation) + { + if (array_key_exists('foo', $metadata)) { + $metadata['bar'] = array('ChangeMetadataInterceptor should be executed first'); + } else { + $metadata["bar"] = array('interceptor_from_stream_request'); + } + return $continuation($method, $metadata, $options); + } +} + +class ChangeRequestCall +{ + private $call; + + public function __construct($call) + { + $this->call = $call; + } + public function getCall() + { + return $this->call; + } + + public function write($request) + { + $request->setData('intercepted_stream_request'); + $this->getCall()->write($request); + } + + public function wait() + { + return $this->getCall()->wait(); + } +} + +class ChangeRequestInterceptor extends Grpc\Interceptor +{ + public function interceptUnaryUnary($method, + $argument, + array $metadata = [], + array $options = [], + $continuation) + { + $argument->setData('intercepted_unary_request'); + return $continuation($method, $argument, $metadata, $options); + } + public function interceptStreamUnary($method, array $metadata = [], array $options = [], $continuation) + { + return new ChangeRequestCall( + $continuation($method, $metadata, $options) + ); + } +} + +class StopCallInterceptor extends Grpc\Interceptor +{ + public function interceptUnaryUnary($method, + $argument, + array $metadata = [], + array $options = [], + $continuation) + { + $metadata["foo"] = array('interceptor_from_request_response'); + } + public function interceptStreamUnary($method, + array $metadata = [], + array $options = [], + $continuation) + { + $metadata["foo"] = array('interceptor_from_request_response'); + } +} + +class InterceptorTest extends PHPUnit_Framework_TestCase +{ + public function setUp() + { + $this->server = new Grpc\Server([]); + $this->port = $this->server->addHttp2Port('0.0.0.0:0'); + $this->channel = new Grpc\Channel('localhost:'.$this->port, ['credentials' => Grpc\ChannelCredentials::createInsecure()]); + $this->server->start(); + } + + public function tearDown() + { + $this->channel->close(); + } + + + public function testClientChangeMetadataOneInterceptor() + { + $req_text = 'client_request'; + $channel_matadata_interceptor = new ChangeMetadataInterceptor(); + $intercept_channel = Grpc\Interceptor::intercept($this->channel, $channel_matadata_interceptor); + echo "create Client\n"; + $client = new InterceptorClient('localhost:'.$this->port, [ + 'credentials' => Grpc\ChannelCredentials::createInsecure(), + ], $intercept_channel); + echo "create Call\n"; + $req = new SimpleRequest($req_text); + echo "Call created\n"; + $unary_call = $client->UnaryCall($req); + echo "start call\n"; + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $this->assertSame(['interceptor_from_unary_request'], $event->metadata['foo']); + + $stream_call = $client->StreamCall(); + $stream_call->write($req); + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $this->assertSame(['interceptor_from_stream_request'], $event->metadata['foo']); + + unset($unary_call); + unset($stream_call); + unset($server_call); + } + + public function testClientChangeMetadataTwoInterceptor() + { + $req_text = 'client_request'; + $channel_matadata_interceptor = new ChangeMetadataInterceptor(); + $channel_matadata_intercepto2 = new ChangeMetadataInterceptor2(); + // test intercept separately. + $intercept_channel1 = Grpc\Interceptor::intercept($this->channel, $channel_matadata_interceptor); + $intercept_channel2 = Grpc\Interceptor::intercept($intercept_channel1, $channel_matadata_intercepto2); + $client = new InterceptorClient('localhost:'.$this->port, [ + 'credentials' => Grpc\ChannelCredentials::createInsecure(), + ], $intercept_channel2); + + $req = new SimpleRequest($req_text); + $unary_call = $client->UnaryCall($req); + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $this->assertSame(['interceptor_from_unary_request'], $event->metadata['foo']); + $this->assertSame(['interceptor_from_unary_request'], $event->metadata['bar']); + + $stream_call = $client->StreamCall(); + $stream_call->write($req); + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $this->assertSame(['interceptor_from_stream_request'], $event->metadata['foo']); + $this->assertSame(['interceptor_from_stream_request'], $event->metadata['bar']); + + unset($unary_call); + unset($stream_call); + unset($server_call); + + // test intercept by array. + $intercept_channel3 = Grpc\Interceptor::intercept($this->channel, + [$channel_matadata_intercepto2, $channel_matadata_interceptor]); + $client = new InterceptorClient('localhost:'.$this->port, [ + 'credentials' => Grpc\ChannelCredentials::createInsecure(), + ], $intercept_channel3); + + $req = new SimpleRequest($req_text); + $unary_call = $client->UnaryCall($req); + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $this->assertSame(['interceptor_from_unary_request'], $event->metadata['foo']); + $this->assertSame(['interceptor_from_unary_request'], $event->metadata['bar']); + + $stream_call = $client->StreamCall(); + $stream_call->write($req); + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $this->assertSame(['interceptor_from_stream_request'], $event->metadata['foo']); + $this->assertSame(['interceptor_from_stream_request'], $event->metadata['bar']); + + unset($unary_call); + unset($stream_call); + unset($server_call); + } + + public function testClientChangeRequestInterceptor() + { + $req_text = 'client_request'; + $change_request_interceptor = new ChangeRequestInterceptor(); + $intercept_channel = Grpc\Interceptor::intercept($this->channel, + $change_request_interceptor); + $client = new InterceptorClient('localhost:'.$this->port, [ + 'credentials' => Grpc\ChannelCredentials::createInsecure(), + ], $intercept_channel); + + $req = new SimpleRequest($req_text); + $unary_call = $client->UnaryCall($req); + + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $server_call = $event->call; + $event = $server_call->startBatch([ + Grpc\OP_SEND_INITIAL_METADATA => [], + Grpc\OP_SEND_STATUS_FROM_SERVER => [ + 'metadata' => [], + 'code' => Grpc\STATUS_OK, + 'details' => '', + ], + Grpc\OP_RECV_MESSAGE => true, + Grpc\OP_RECV_CLOSE_ON_SERVER => true, + ]); + $this->assertSame('intercepted_unary_request', $event->message); + + $stream_call = $client->StreamCall(); + $stream_call->write($req); + $event = $this->server->requestCall(); + $this->assertSame('/dummy_method', $event->method); + $server_call = $event->call; + $event = $server_call->startBatch([ + Grpc\OP_SEND_INITIAL_METADATA => [], + Grpc\OP_SEND_STATUS_FROM_SERVER => [ + 'metadata' => [], + 'code' => Grpc\STATUS_OK, + 'details' => '', + ], + Grpc\OP_RECV_MESSAGE => true, + Grpc\OP_RECV_CLOSE_ON_SERVER => true, + ]); + $this->assertSame('intercepted_stream_request', $event->message); + + unset($unary_call); + unset($stream_call); + unset($server_call); + } + + public function testClientChangeStopCallInterceptor() + { + $req_text = 'client_request'; + $channel_request_interceptor = new StopCallInterceptor(); + $intercept_channel = Grpc\Interceptor::intercept($this->channel, + $channel_request_interceptor); + $client = new InterceptorClient('localhost:'.$this->port, [ + 'credentials' => Grpc\ChannelCredentials::createInsecure(), + ], $intercept_channel); + + $req = new SimpleRequest($req_text); + $unary_call = $client->UnaryCall($req); + $this->assertNull($unary_call); + + + $stream_call = $client->StreamCall(); + $this->assertNull($stream_call); + + unset($unary_call); + unset($stream_call); + unset($server_call); + } + + public function testGetInterceptorChannelConnectivityState() + { + $channel = new Grpc\Channel( + 'localhost:0', + ['credentials' => Grpc\ChannelCredentials::createInsecure()] + ); + $interceptor_channel = Grpc\Interceptor::intercept($channel, new Grpc\Interceptor()); + $state = $interceptor_channel->getConnectivityState(); + $this->assertEquals(0, $state); + $channel->close(); + } + + public function testInterceptorChannelWatchConnectivityState() + { + $channel = new Grpc\Channel( + 'localhost:0', + ['credentials' => Grpc\ChannelCredentials::createInsecure()] + ); + $interceptor_channel = Grpc\Interceptor::intercept($channel, new Grpc\Interceptor()); + $now = Grpc\Timeval::now(); + $deadline = $now->add(new Grpc\Timeval(100*1000)); + $state = $interceptor_channel->watchConnectivityState(1, $deadline); + $this->assertTrue($state); + unset($time); + unset($deadline); + $channel->close(); + } + + public function testInterceptorChannelClose() + { + $channel = new Grpc\Channel( + 'localhost:0', + ['credentials' => Grpc\ChannelCredentials::createInsecure()] + ); + $interceptor_channel = Grpc\Interceptor::intercept($channel, new Grpc\Interceptor()); + $this->assertNotNull($interceptor_channel); + $channel->close(); + } + + public function testInterceptorChannelGetTarget() + { + $channel = new Grpc\Channel( + 'localhost:8888', + ['credentials' => Grpc\ChannelCredentials::createInsecure()] + ); + $interceptor_channel = Grpc\Interceptor::intercept($channel, new Grpc\Interceptor()); + $target = $interceptor_channel->getTarget(); + $this->assertTrue(is_string($target)); + $channel->close(); + } +} diff --git a/src/php/tests/unit_tests/PersistentChannelTest.php b/src/php/tests/unit_tests/PersistentChannelTest.php deleted file mode 100644 index 171780a137..0000000000 --- a/src/php/tests/unit_tests/PersistentChannelTest.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php -/* - * - * Copyright 2015 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -class PersistentListTest extends PHPUnit_Framework_TestCase -{ - public function setUp() - { - } - - public function tearDown() - { - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); - } - - public function waitUntilNotIdle($channel) { - for ($i = 0; $i < 10; $i++) { - $now = Grpc\Timeval::now(); - $deadline = $now->add(new Grpc\Timeval(1000)); - if ($channel->watchConnectivityState(GRPC\CHANNEL_IDLE, - $deadline)) { - return true; - } - } - $this->assertTrue(false); - } - - public function assertConnecting($state) { - $this->assertTrue($state == GRPC\CHANNEL_CONNECTING || - $state == GRPC\CHANNEL_TRANSIENT_FAILURE); - } - - public function testPersistentChennelCreateOneChannel() - { - $this->channel1 = new Grpc\Channel('localhost:1', []); - $plist = $this->channel1->getPersistentList(); - $this->assertEquals($plist['localhost:1']['target'], 'localhost:1'); - $this->assertArrayHasKey('localhost:1', $plist); - $this->assertEquals($plist['localhost:1']['ref_count'], 1); - $this->assertEquals($plist['localhost:1']['connectivity_status'], - GRPC\CHANNEL_IDLE); - $this->assertEquals($plist['localhost:1']['is_valid'], 1); - $this->channel1->close(); - } - - public function testPersistentChennelStatusChange() - { - $this->channel1 = new Grpc\Channel('localhost:1', []); - $plist = $this->channel1->getPersistentList(); - $this->assertEquals($plist['localhost:1']['connectivity_status'], - GRPC\CHANNEL_IDLE); - $this->assertEquals($plist['localhost:1']['is_valid'], 1); - $state = $this->channel1->getConnectivityState(true); - - $this->waitUntilNotIdle($this->channel1); - $plist = $this->channel1->getPersistentList(); - $this->assertConnecting($plist['localhost:1']['connectivity_status']); - $this->assertEquals($plist['localhost:1']['is_valid'], 1); - - $this->channel1->close(); - } - - public function testPersistentChennelCloseChannel() - { - $this->channel1 = new Grpc\Channel('localhost:1', []); - $plist = $this->channel1->getPersistentList(); - $this->assertEquals($plist['localhost:1']['ref_count'], 1); - $this->channel1->close(); - $plist = $this->channel1->getPersistentList(); - $this->assertArrayNotHasKey('localhost:1', $plist); - } - - public function testPersistentChannelSameHost() - { - $this->channel1 = new Grpc\Channel('localhost:1', []); - $this->channel2 = new Grpc\Channel('localhost:1', []); - //ref_count should be 2 - $plist = $this->channel1->getPersistentList(); - $this->assertArrayHasKey('localhost:1', $plist); - $this->assertEquals($plist['localhost:1']['ref_count'], 2); - $this->channel1->close(); - $this->channel2->close(); - } - - public function testPersistentChannelDifferentHost() - { - $this->channel1 = new Grpc\Channel('localhost:1', []); - $this->channel2 = new Grpc\Channel('localhost:2', []); - $plist = $this->channel1->getPersistentList(); - $this->assertArrayHasKey('localhost:1', $plist); - $this->assertArrayHasKey('localhost:2', $plist); - $this->assertEquals($plist['localhost:1']['ref_count'], 1); - $this->assertEquals($plist['localhost:2']['ref_count'], 1); - $this->channel1->close(); - $this->channel2->close(); - } - -} diff --git a/src/php/tests/unit_tests/SecureEndToEndTest.php b/src/php/tests/unit_tests/SecureEndToEndTest.php index e358abe2d2..dff4e878ea 100644 --- a/src/php/tests/unit_tests/SecureEndToEndTest.php +++ b/src/php/tests/unit_tests/SecureEndToEndTest.php @@ -44,9 +44,6 @@ class SecureEndToEndTest extends PHPUnit_Framework_TestCase public function tearDown() { $this->channel->close(); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function testSimpleRequestBody() diff --git a/src/php/tests/unit_tests/ServerTest.php b/src/php/tests/unit_tests/ServerTest.php index d18feecefe..ac6f2f0312 100644 --- a/src/php/tests/unit_tests/ServerTest.php +++ b/src/php/tests/unit_tests/ServerTest.php @@ -27,9 +27,6 @@ class ServerTest extends PHPUnit_Framework_TestCase public function tearDown() { unset($this->server); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function testConstructorWithNull() @@ -102,6 +99,24 @@ class ServerTest extends PHPUnit_Framework_TestCase /** * @expectedException InvalidArgumentException */ + public function testInvalidConstructorWithNumKeyOfArray() + { + $this->server = new Grpc\Server([10 => '127.0.0.1', + 20 => '8080', ]); + $this->assertNull($this->server); + } + + /** + * @expectedException InvalidArgumentException + */ + public function testInvalidConstructorWithList() + { + $this->server = new Grpc\Server(['127.0.0.1', '8080']); + $this->assertNull($this->server); + } + /** + * @expectedException InvalidArgumentException + */ public function testInvalidAddHttp2Port() { $this->server = new Grpc\Server([]); diff --git a/src/php/tests/unit_tests/TimevalTest.php b/src/php/tests/unit_tests/TimevalTest.php index be023adace..bc307ef7f1 100644 --- a/src/php/tests/unit_tests/TimevalTest.php +++ b/src/php/tests/unit_tests/TimevalTest.php @@ -25,9 +25,6 @@ class TimevalTest extends PHPUnit_Framework_TestCase public function tearDown() { unset($this->time); - $channel_clean_persistent = - new Grpc\Channel('localhost:50010', []); - $channel_clean_persistent->cleanPersistentList(); } public function testConstructorWithInt() |