Merge github.com:grpc/grpc into fuzzing-long

pull/10102/head
Craig Tiller 8 years ago
commit 5b5632d448
  1. 2
      CMakeLists.txt
  2. 4
      Makefile
  3. 2
      build.yaml
  4. 16
      doc/status_ordering.md
  5. 2
      gRPC-Core.podspec
  6. 2
      gRPC-ProtoRPC.podspec
  7. 2
      gRPC-RxLibrary.podspec
  8. 2
      gRPC.podspec
  9. 2
      package.json
  10. 4
      package.xml
  11. 2
      src/cpp/common/version_cc.cc
  12. 4
      src/csharp/Grpc.Auth/project.json
  13. 4
      src/csharp/Grpc.Core.Testing/project.json
  14. 4
      src/csharp/Grpc.Core/VersionInfo.cs
  15. 2
      src/csharp/Grpc.Core/project.json
  16. 4
      src/csharp/Grpc.HealthCheck/project.json
  17. 4
      src/csharp/Grpc.Reflection/project.json
  18. 2
      src/csharp/build_packages_dotnetcli.bat
  19. 4
      src/csharp/build_packages_dotnetcli.sh
  20. 4
      src/node/health_check/package.json
  21. 2
      src/node/tools/package.json
  22. 2
      src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
  23. 2
      src/objective-c/GRPCClient/private/version.h
  24. 2
      src/php/composer.json
  25. 166
      src/php/tests/qps/client.php
  26. 11
      src/php/tests/qps/composer.json
  27. 127
      src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Control.php
  28. 69
      src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Messages.php
  29. 37
      src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Payloads.php
  30. 34
      src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/ProxyService.php
  31. 45
      src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Services.php
  32. 44
      src/php/tests/qps/generated_code/GPBMetadata/Src/Proto/Grpc/Testing/Stats.php
  33. 78
      src/php/tests/qps/generated_code/Grpc/Testing/BenchmarkServiceClient.php
  34. 62
      src/php/tests/qps/generated_code/Grpc/Testing/BoolValue.php
  35. 65
      src/php/tests/qps/generated_code/Grpc/Testing/ByteBufferParams.php
  36. 84
      src/php/tests/qps/generated_code/Grpc/Testing/ChannelArg.php
  37. 63
      src/php/tests/qps/generated_code/Grpc/Testing/ClientArgs.php
  38. 407
      src/php/tests/qps/generated_code/Grpc/Testing/ClientConfig.php
  39. 164
      src/php/tests/qps/generated_code/Grpc/Testing/ClientStats.php
  40. 44
      src/php/tests/qps/generated_code/Grpc/Testing/ClientStatus.php
  41. 34
      src/php/tests/qps/generated_code/Grpc/Testing/ClientType.php
  42. 28
      src/php/tests/qps/generated_code/Grpc/Testing/ClosedLoopParams.php
  43. 28
      src/php/tests/qps/generated_code/Grpc/Testing/ComplexProtoParams.php
  44. 23
      src/php/tests/qps/generated_code/Grpc/Testing/CoreRequest.php
  45. 56
      src/php/tests/qps/generated_code/Grpc/Testing/CoreResponse.php
  46. 70
      src/php/tests/qps/generated_code/Grpc/Testing/EchoStatus.php
  47. 153
      src/php/tests/qps/generated_code/Grpc/Testing/HistogramData.php
  48. 93
      src/php/tests/qps/generated_code/Grpc/Testing/HistogramParams.php
  49. 63
      src/php/tests/qps/generated_code/Grpc/Testing/LoadParams.php
  50. 60
      src/php/tests/qps/generated_code/Grpc/Testing/Mark.php
  51. 96
      src/php/tests/qps/generated_code/Grpc/Testing/Payload.php
  52. 80
      src/php/tests/qps/generated_code/Grpc/Testing/PayloadConfig.php
  53. 26
      src/php/tests/qps/generated_code/Grpc/Testing/PayloadType.php
  54. 61
      src/php/tests/qps/generated_code/Grpc/Testing/PoissonParams.php
  55. 72
      src/php/tests/qps/generated_code/Grpc/Testing/ProxyClientServiceClient.php
  56. 44
      src/php/tests/qps/generated_code/Grpc/Testing/ProxyStat.php
  57. 71
      src/php/tests/qps/generated_code/Grpc/Testing/ReconnectInfo.php
  58. 49
      src/php/tests/qps/generated_code/Grpc/Testing/ReconnectParams.php
  59. 65
      src/php/tests/qps/generated_code/Grpc/Testing/RequestResultCount.php
  60. 138
      src/php/tests/qps/generated_code/Grpc/Testing/ResponseParameters.php
  61. 21
      src/php/tests/qps/generated_code/Grpc/Testing/RpcType.php
  62. 291
      src/php/tests/qps/generated_code/Grpc/Testing/Scenario.php
  63. 312
      src/php/tests/qps/generated_code/Grpc/Testing/ScenarioResult.php
  64. 430
      src/php/tests/qps/generated_code/Grpc/Testing/ScenarioResultSummary.php
  65. 48
      src/php/tests/qps/generated_code/Grpc/Testing/Scenarios.php
  66. 69
      src/php/tests/qps/generated_code/Grpc/Testing/SecurityParams.php
  67. 63
      src/php/tests/qps/generated_code/Grpc/Testing/ServerArgs.php
  68. 305
      src/php/tests/qps/generated_code/Grpc/Testing/ServerConfig.php
  69. 191
      src/php/tests/qps/generated_code/Grpc/Testing/ServerStats.php
  70. 110
      src/php/tests/qps/generated_code/Grpc/Testing/ServerStatus.php
  71. 33
      src/php/tests/qps/generated_code/Grpc/Testing/ServerType.php
  72. 65
      src/php/tests/qps/generated_code/Grpc/Testing/SimpleProtoParams.php
  73. 306
      src/php/tests/qps/generated_code/Grpc/Testing/SimpleRequest.php
  74. 129
      src/php/tests/qps/generated_code/Grpc/Testing/SimpleResponse.php
  75. 102
      src/php/tests/qps/generated_code/Grpc/Testing/StreamingInputCallRequest.php
  76. 60
      src/php/tests/qps/generated_code/Grpc/Testing/StreamingInputCallResponse.php
  77. 171
      src/php/tests/qps/generated_code/Grpc/Testing/StreamingOutputCallRequest.php
  78. 60
      src/php/tests/qps/generated_code/Grpc/Testing/StreamingOutputCallResponse.php
  79. 23
      src/php/tests/qps/generated_code/Grpc/Testing/Void.php
  80. 111
      src/php/tests/qps/generated_code/Grpc/Testing/WorkerServiceClient.php
  81. 44
      src/proto/grpc/testing/proxy-service.proto
  82. 2
      src/python/grpcio/grpc_version.py
  83. 2
      src/python/grpcio_health_checking/grpc_version.py
  84. 2
      src/python/grpcio_reflection/grpc_version.py
  85. 2
      src/python/grpcio_tests/grpc_version.py
  86. 9
      src/python/grpcio_tests/tests/protoc_plugin/_split_definitions_test.py
  87. 2
      src/ruby/lib/grpc/version.rb
  88. 160
      src/ruby/qps/proxy-worker.rb
  89. 17
      src/ruby/qps/src/proto/grpc/testing/proxy-service_pb.rb
  90. 55
      src/ruby/qps/src/proto/grpc/testing/proxy-service_services_pb.rb
  91. 2
      src/ruby/tools/version.rb
  92. 3
      test/core/end2end/tests/streaming_error_response.c
  93. 2
      tools/distrib/python/grpcio_tools/grpc_version.py
  94. 3
      tools/doxygen/Doxyfile.c++
  95. 3
      tools/doxygen/Doxyfile.c++.internal
  96. 1
      tools/doxygen/Doxyfile.core
  97. 1
      tools/doxygen/Doxyfile.core.internal
  98. 19
      tools/profiling/microbenchmarks/bm2bq.py
  99. 63
      tools/profiling/microbenchmarks/bm_diff.py
  100. 6
      tools/profiling/microbenchmarks/bm_json.py
  101. Some files were not shown because too many files have changed in this diff Show More

@ -42,7 +42,7 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
set(PACKAGE_NAME "grpc") set(PACKAGE_NAME "grpc")
set(PACKAGE_VERSION "1.2.0-dev") set(PACKAGE_VERSION "1.3.0-dev")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}") set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/") set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")

@ -412,8 +412,8 @@ Q = @
endif endif
CORE_VERSION = 3.0.0-dev CORE_VERSION = 3.0.0-dev
CPP_VERSION = 1.2.0-dev CPP_VERSION = 1.3.0-dev
CSHARP_VERSION = 1.2.0-dev CSHARP_VERSION = 1.3.0-dev
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES)) CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS) CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)

@ -14,7 +14,7 @@ settings:
'#10': See the expand_version.py for all the quirks here '#10': See the expand_version.py for all the quirks here
core_version: 3.0.0-dev core_version: 3.0.0-dev
g_stands_for: green g_stands_for: green
version: 1.2.0-dev version: 1.3.0-dev
filegroups: filegroups:
- name: census - name: census
public_headers: public_headers:

@ -0,0 +1,16 @@
Ordering Status and Reads in the gRPC API
-----------------------------------------
Rules for implementors:
1. Reads and Writes Must not succeed after Status has been delivered.
2. OK Status is only delivered after all buffered messages are read.
3. Reads May continue to succeed after a failing write.
However, once a write fails, all subsequent writes Must fail,
and similarly, once a read fails, all subsequent reads Must fail.
4. When an error status is known to the library, if the user asks for status,
the library Should discard messages received in the library but not delivered
to the user and then deliver the status. If the user does not ask for status
but continues reading, the library Should deliver buffered messages before
delivering status. The library MAY choose to implement the stricter version
where errors cause all buffered messages to be dropped, but this is not a
requirement.

@ -37,7 +37,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-Core' s.name = 'gRPC-Core'
version = '1.2.0-dev' version = '1.3.0-dev'
s.version = version s.version = version
s.summary = 'Core cross-platform gRPC library, written in C' s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -36,7 +36,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC' s.name = 'gRPC-ProtoRPC'
version = '1.2.0-dev' version = '1.3.0-dev'
s.version = version s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC' s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -36,7 +36,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary' s.name = 'gRPC-RxLibrary'
version = '1.2.0-dev' version = '1.3.0-dev'
s.version = version s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.' s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -35,7 +35,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC' s.name = 'gRPC'
version = '1.2.0-dev' version = '1.3.0-dev'
s.version = version s.version = version
s.summary = 'gRPC client library for iOS/OSX' s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'http://www.grpc.io' s.homepage = 'http://www.grpc.io'

@ -1,6 +1,6 @@
{ {
"name": "grpc", "name": "grpc",
"version": "1.2.0-dev", "version": "1.3.0-dev",
"author": "Google Inc.", "author": "Google Inc.",
"description": "gRPC Library for Node", "description": "gRPC Library for Node",
"homepage": "http://www.grpc.io/", "homepage": "http://www.grpc.io/",

@ -13,8 +13,8 @@
<date>2017-03-01</date> <date>2017-03-01</date>
<time>16:06:07</time> <time>16:06:07</time>
<version> <version>
<release>1.2.0dev</release> <release>1.3.0dev</release>
<api>1.2.0dev</api> <api>1.3.0dev</api>
</version> </version>
<stability> <stability>
<release>beta</release> <release>beta</release>

@ -37,5 +37,5 @@
#include <grpc++/grpc++.h> #include <grpc++/grpc++.h>
namespace grpc { namespace grpc {
grpc::string Version() { return "1.2.0-dev"; } grpc::string Version() { return "1.3.0-dev"; }
} }

@ -1,5 +1,5 @@
{ {
"version": "1.2.0-dev", "version": "1.3.0-dev",
"title": "gRPC C# Auth", "title": "gRPC C# Auth",
"authors": [ "Google Inc." ], "authors": [ "Google Inc." ],
"copyright": "Copyright 2015, Google Inc.", "copyright": "Copyright 2015, Google Inc.",
@ -21,7 +21,7 @@
} }
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "1.2.0-dev", "Grpc.Core": "1.3.0-dev",
"Google.Apis.Auth": "1.21.0" "Google.Apis.Auth": "1.21.0"
}, },
"frameworks": { "frameworks": {

@ -1,5 +1,5 @@
{ {
"version": "1.2.0-dev", "version": "1.3.0-dev",
"title": "gRPC C# Core Testing", "title": "gRPC C# Core Testing",
"authors": [ "Google Inc." ], "authors": [ "Google Inc." ],
"copyright": "Copyright 2017, Google Inc.", "copyright": "Copyright 2017, Google Inc.",
@ -21,7 +21,7 @@
} }
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "1.2.0-dev" "Grpc.Core": "1.3.0-dev"
}, },
"frameworks": { "frameworks": {
"net45": { "net45": {

@ -48,11 +48,11 @@ namespace Grpc.Core
/// <summary> /// <summary>
/// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
/// </summary> /// </summary>
public const string CurrentAssemblyFileVersion = "1.2.0.0"; public const string CurrentAssemblyFileVersion = "1.3.0.0";
/// <summary> /// <summary>
/// Current version of gRPC C# /// Current version of gRPC C#
/// </summary> /// </summary>
public const string CurrentVersion = "1.2.0-dev"; public const string CurrentVersion = "1.3.0-dev";
} }
} }

@ -1,5 +1,5 @@
{ {
"version": "1.2.0-dev", "version": "1.3.0-dev",
"title": "gRPC C# Core", "title": "gRPC C# Core",
"authors": [ "Google Inc." ], "authors": [ "Google Inc." ],
"copyright": "Copyright 2015, Google Inc.", "copyright": "Copyright 2015, Google Inc.",

@ -1,5 +1,5 @@
{ {
"version": "1.2.0-dev", "version": "1.3.0-dev",
"title": "gRPC C# Healthchecking", "title": "gRPC C# Healthchecking",
"authors": [ "Google Inc." ], "authors": [ "Google Inc." ],
"copyright": "Copyright 2015, Google Inc.", "copyright": "Copyright 2015, Google Inc.",
@ -21,7 +21,7 @@
} }
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "1.2.0-dev", "Grpc.Core": "1.3.0-dev",
"Google.Protobuf": "3.2.0" "Google.Protobuf": "3.2.0"
}, },
"frameworks": { "frameworks": {

@ -1,5 +1,5 @@
{ {
"version": "1.2.0-dev", "version": "1.3.0-dev",
"title": "gRPC C# Reflection", "title": "gRPC C# Reflection",
"authors": [ "Google Inc." ], "authors": [ "Google Inc." ],
"copyright": "Copyright 2016, Google Inc.", "copyright": "Copyright 2016, Google Inc.",
@ -21,7 +21,7 @@
} }
}, },
"dependencies": { "dependencies": {
"Grpc.Core": "1.2.0-dev", "Grpc.Core": "1.3.0-dev",
"Google.Protobuf": "3.2.0" "Google.Protobuf": "3.2.0"
}, },
"frameworks": { "frameworks": {

@ -28,7 +28,7 @@
@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@rem Current package versions @rem Current package versions
set VERSION=1.2.0-dev set VERSION=1.3.0-dev
set PROTOBUF_VERSION=3.0.0 set PROTOBUF_VERSION=3.0.0
@rem Adjust the location of nuget.exe @rem Adjust the location of nuget.exe

@ -66,7 +66,7 @@ dotnet pack --configuration Release Grpc.Auth/project.json --output ../../artifa
dotnet pack --configuration Release Grpc.HealthCheck/project.json --output ../../artifacts dotnet pack --configuration Release Grpc.HealthCheck/project.json --output ../../artifacts
dotnet pack --configuration Release Grpc.Reflection/project.json --output ../../artifacts dotnet pack --configuration Release Grpc.Reflection/project.json --output ../../artifacts
nuget pack Grpc.nuspec -Version "1.2.0-dev" -OutputDirectory ../../artifacts nuget pack Grpc.nuspec -Version "1.3.0-dev" -OutputDirectory ../../artifacts
nuget pack Grpc.Tools.nuspec -Version "1.2.0-dev" -OutputDirectory ../../artifacts nuget pack Grpc.Tools.nuspec -Version "1.3.0-dev" -OutputDirectory ../../artifacts
(cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg) (cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg)

@ -1,6 +1,6 @@
{ {
"name": "grpc-health-check", "name": "grpc-health-check",
"version": "1.2.0-dev", "version": "1.3.0-dev",
"author": "Google Inc.", "author": "Google Inc.",
"description": "Health check service for use with gRPC", "description": "Health check service for use with gRPC",
"repository": { "repository": {
@ -15,7 +15,7 @@
} }
], ],
"dependencies": { "dependencies": {
"grpc": "^1.2.0-dev", "grpc": "^1.3.0-dev",
"lodash": "^3.9.3", "lodash": "^3.9.3",
"google-protobuf": "^3.0.0" "google-protobuf": "^3.0.0"
}, },

@ -1,6 +1,6 @@
{ {
"name": "grpc-tools", "name": "grpc-tools",
"version": "1.2.0-dev", "version": "1.3.0-dev",
"author": "Google Inc.", "author": "Google Inc.",
"description": "Tools for developing with gRPC on Node.js", "description": "Tools for developing with gRPC on Node.js",
"homepage": "http://www.grpc.io/", "homepage": "http://www.grpc.io/",

@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them. # before them.
s.name = '!ProtoCompiler-gRPCPlugin' s.name = '!ProtoCompiler-gRPCPlugin'
v = '1.2.0-dev' v = '1.3.0-dev'
s.version = v s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.' s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC s.description = <<-DESC

@ -38,4 +38,4 @@
// `tools/buildgen/generate_projects.sh`. // `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.2.0-dev" #define GRPC_OBJC_VERSION_STRING @"1.3.0-dev"

@ -2,7 +2,7 @@
"name": "grpc/grpc-dev", "name": "grpc/grpc-dev",
"description": "gRPC library for PHP - for Developement use only", "description": "gRPC library for PHP - for Developement use only",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"version": "1.2.0", "version": "1.3.0",
"require": { "require": {
"php": ">=5.5.0", "php": ">=5.5.0",
"google/protobuf": "^v3.1.0" "google/protobuf": "^v3.1.0"

@ -0,0 +1,166 @@
<?php
/*
*
* Copyright 2017, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
/*
* PHP client for QPS testing works as follows:
* 1. Gets initiated by a call from a proxy that implements the worker service. The
* argument to this client is the proxy connection information
* 2. Initiate an RPC to the proxy to get ClientConfig
* 3. Initiate a client-side telemetry RPC to the proxy
* 4. Parse the client config, which includes server target information and then start
* a unary or streaming test as appropriate.
* 5. After each completed RPC, send its timing to the proxy. The proxy does all histogramming
* 6. Proxy will respond on the timing channel when it's time to complete. Our
* next timing write will fail and we know that it's time to stop
* The above complex dance is since threading and async are not idiomatic and we
* shouldn't ever be waiting to read a mark
*
* This test only supports a single channel since threading/async is not idiomatic
* This test supports unary or streaming ping-pongs, as well as open-loop
*
*/
require dirname(__FILE__).'/vendor/autoload.php';
/**
* Assertion function that always exits with an error code if the assertion is
* falsy.
*
* @param $value Assertion value. Should be true.
* @param $error_message Message to display if the assertion is false
*/
function hardAssert($value, $error_message)
{
if (!$value) {
echo $error_message."\n";
exit(1);
}
}
function hardAssertIfStatusOk($status)
{
if ($status->code !== Grpc\STATUS_OK) {
echo "Call did not complete successfully. Status object:\n";
var_dump($status);
exit(1);
}
}
/* Start the actual client */
function qps_client_main($proxy_address) {
echo "Initiating php client\n";
$proxystubopts = [];
$proxystubopts['credentials'] = Grpc\ChannelCredentials::createInsecure();
$proxystub = new Grpc\Testing\ProxyClientServiceClient($proxy_address, $proxystubopts);
list($config, $status) = $proxystub->GetConfig(new Grpc\Testing\Void())->wait();
hardAssertIfStatusOk($status);
hardAssert($config->getClientChannels() == 1, "Only 1 channel supported");
hardAssert($config->getOutstandingRpcsPerChannel() == 1, "Only 1 outstanding RPC supported");
echo "Got configuration from proxy, target is " . $config->getServerTargets()[0] . "\n";
$stubopts = [];
if ($config->getSecurityParams()) {
if ($config->getSecurityParams()->getUseTestCa()) {
$stubopts['credentials'] = Grpc\ChannelCredentials::createSsl(
file_get_contents(dirname(__FILE__).'/../data/ca.pem'));
} else {
$stubopts['credentials'] = Grpc\ChannelCredentials::createSsl(null);
}
$override = $config->getSecurityParams()->getServerHostOverride();
if ($override) {
$stubopts['grpc.ssl_target_name_override'] = $override;
$stubopts['grpc.default_authority'] = $override;
}
} else {
$stubopts['credentials'] = Grpc\ChannelCredentials::createInsecure();
}
echo "Initiating php benchmarking client\n";
$stub = new Grpc\Testing\BenchmarkServiceClient(
$config->getServerTargets()[0], $stubopts);
$req = new Grpc\Testing\SimpleRequest();
$req->setResponseType(Grpc\Testing\PayloadType::COMPRESSABLE);
$req->setResponseSize($config->getPayloadConfig()->getSimpleParams()->getRespSize());
$payload = new Grpc\Testing\Payload();
$payload->setType(Grpc\Testing\PayloadType::COMPRESSABLE);
$payload->setBody(str_repeat("\0", $config->getPayloadConfig()->getSimpleParams()->getReqSize()));
$req->setPayload($payload);
/* TODO(stanley-cheung): Enable the following by removing the 0&& once protobuf
* properly supports oneof in PHP */
if (0 && $config->getLoadParams()->getLoad() == "poisson") {
$poisson = true;
$lamrecip = 1.0/($config->getLoadParams()->getPoisson()->getOfferedLoad());
$issue = microtime(true) + $lamrecip * -log(1.0-rand()/(getrandmax()+1));
} else {
$poisson = false;
}
$metric = new Grpc\Testing\ProxyStat;
$telemetry = $proxystub->ReportTime();
if ($config->getRpcType() == Grpc\Testing\RpcType::UNARY) {
while (1) {
if ($poisson) {
time_sleep_until($issue);
$issue = $issue + $lamrecip * -log(1.0-rand()/(getrandmax()+1));
}
$startreq = microtime(true);
list($resp,$status) = $stub->UnaryCall($req)->wait();
hardAssertIfStatusOk($status);
$metric->setLatency(microtime(true)-$startreq);
$telemetry->write($metric);
}
} else {
$stream = $stub->StreamingCall();
while (1) {
if ($poisson) {
time_sleep_until($issue);
$issue = $issue + $lamrecip * -log(1.0-rand()/(getrandmax()+1));
}
$startreq = microtime(true);
$stream->write($req);
$resp = $stream->read();
$metric->setLatency(microtime(true)-$startreq);
$telemetry->write($metric);
}
}
}
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);
qps_client_main($argv[1]);

@ -0,0 +1,11 @@
{
"minimum-stability": "dev",
"require": {
"grpc/grpc": "dev-master"
},
"autoload": {
"psr-4": {
"": "generated_code/"
}
}
}

@ -0,0 +1,127 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/control.proto
namespace GPBMetadata\Src\Proto\Grpc\Testing;
class Control
{
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\Payloads::initOnce();
\GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce();
$pool->internalAddGeneratedFile(hex2bin(
"0add170a247372632f70726f746f2f677270632f74657374696e672f636f" .
"6e74726f6c2e70726f746f120c677270632e74657374696e671a25737263" .
"2f70726f746f2f677270632f74657374696e672f7061796c6f6164732e70" .
"726f746f1a227372632f70726f746f2f677270632f74657374696e672f73" .
"746174732e70726f746f22250a0d506f6973736f6e506172616d7312140a" .
"0c6f6666657265645f6c6f616418012001280122120a10436c6f7365644c" .
"6f6f70506172616d73227b0a0a4c6f6164506172616d7312350a0b636c6f" .
"7365645f6c6f6f7018012001280b321e2e677270632e74657374696e672e" .
"436c6f7365644c6f6f70506172616d734800122e0a07706f6973736f6e18" .
"022001280b321b2e677270632e74657374696e672e506f6973736f6e5061" .
"72616d73480042060a046c6f616422430a0e536563757269747950617261" .
"6d7312130a0b7573655f746573745f6361180120012808121c0a14736572" .
"7665725f686f73745f6f76657272696465180220012809224d0a0a436861" .
"6e6e656c417267120c0a046e616d6518012001280912130a097374725f76" .
"616c7565180220012809480012130a09696e745f76616c75651803200128" .
"05480042070a0576616c756522a0040a0c436c69656e74436f6e66696712" .
"160a0e7365727665725f74617267657473180120032809122d0a0b636c69" .
"656e745f7479706518022001280e32182e677270632e74657374696e672e" .
"436c69656e745479706512350a0f73656375726974795f706172616d7318" .
"032001280b321c2e677270632e74657374696e672e536563757269747950" .
"6172616d7312240a1c6f75747374616e64696e675f727063735f7065725f" .
"6368616e6e656c18042001280512170a0f636c69656e745f6368616e6e65" .
"6c73180520012805121c0a146173796e635f636c69656e745f7468726561" .
"647318072001280512270a087270635f7479706518082001280e32152e67" .
"7270632e74657374696e672e52706354797065122d0a0b6c6f61645f7061" .
"72616d73180a2001280b32182e677270632e74657374696e672e4c6f6164" .
"506172616d7312330a0e7061796c6f61645f636f6e666967180b2001280b" .
"321b2e677270632e74657374696e672e5061796c6f6164436f6e66696712" .
"370a10686973746f6772616d5f706172616d73180c2001280b321d2e6772" .
"70632e74657374696e672e486973746f6772616d506172616d7312110a09" .
"636f72655f6c697374180d2003280512120a0a636f72655f6c696d697418" .
"0e2001280512180a106f746865725f636c69656e745f617069180f200128" .
"09122e0a0c6368616e6e656c5f6172677318102003280b32182e67727063" .
"2e74657374696e672e4368616e6e656c41726722380a0c436c69656e7453" .
"746174757312280a05737461747318012001280b32192e677270632e7465" .
"7374696e672e436c69656e74537461747322150a044d61726b120d0a0572" .
"6573657418012001280822680a0a436c69656e7441726773122b0a057365" .
"74757018012001280b321a2e677270632e74657374696e672e436c69656e" .
"74436f6e666967480012220a046d61726b18022001280b32122e67727063" .
"2e74657374696e672e4d61726b480042090a076172677479706522b4020a" .
"0c536572766572436f6e666967122d0a0b7365727665725f747970651801" .
"2001280e32182e677270632e74657374696e672e53657276657254797065" .
"12350a0f73656375726974795f706172616d7318022001280b321c2e6772" .
"70632e74657374696e672e5365637572697479506172616d73120c0a0470" .
"6f7274180420012805121c0a146173796e635f7365727665725f74687265" .
"61647318072001280512120a0a636f72655f6c696d697418082001280512" .
"330a0e7061796c6f61645f636f6e66696718092001280b321b2e67727063" .
"2e74657374696e672e5061796c6f6164436f6e66696712110a09636f7265" .
"5f6c697374180a2003280512180a106f746865725f7365727665725f6170" .
"69180b20012809121c0a137265736f757263655f71756f74615f73697a65" .
"18e9072001280522680a0a53657276657241726773122b0a057365747570" .
"18012001280b321a2e677270632e74657374696e672e536572766572436f" .
"6e666967480012220a046d61726b18022001280b32122e677270632e7465" .
"7374696e672e4d61726b480042090a076172677479706522550a0c536572" .
"76657253746174757312280a05737461747318012001280b32192e677270" .
"632e74657374696e672e5365727665725374617473120c0a04706f727418" .
"0220012805120d0a05636f726573180320012805220d0a0b436f72655265" .
"7175657374221d0a0c436f7265526573706f6e7365120d0a05636f726573" .
"18012001280522060a04566f696422fd010a085363656e6172696f120c0a" .
"046e616d6518012001280912310a0d636c69656e745f636f6e6669671802" .
"2001280b321a2e677270632e74657374696e672e436c69656e74436f6e66" .
"696712130a0b6e756d5f636c69656e747318032001280512310a0d736572" .
"7665725f636f6e66696718042001280b321a2e677270632e74657374696e" .
"672e536572766572436f6e66696712130a0b6e756d5f7365727665727318" .
"052001280512160a0e7761726d75705f7365636f6e647318062001280512" .
"190a1162656e63686d61726b5f7365636f6e647318072001280512200a18" .
"737061776e5f6c6f63616c5f776f726b65725f636f756e74180820012805" .
"22360a095363656e6172696f7312290a097363656e6172696f7318012003" .
"280b32162e677270632e74657374696e672e5363656e6172696f22f8020a" .
"155363656e6172696f526573756c7453756d6d617279120b0a0371707318" .
"0120012801121b0a137170735f7065725f7365727665725f636f72651802" .
"20012801121a0a127365727665725f73797374656d5f74696d6518032001" .
"280112180a107365727665725f757365725f74696d65180420012801121a" .
"0a12636c69656e745f73797374656d5f74696d6518052001280112180a10" .
"636c69656e745f757365725f74696d6518062001280112120a0a6c617465" .
"6e63795f353018072001280112120a0a6c6174656e63795f393018082001" .
"280112120a0a6c6174656e63795f393518092001280112120a0a6c617465" .
"6e63795f3939180a2001280112130a0b6c6174656e63795f393939180b20" .
"01280112180a107365727665725f6370755f7573616765180c2001280112" .
"260a1e7375636365737366756c5f72657175657374735f7065725f736563" .
"6f6e64180d2001280112220a1a6661696c65645f72657175657374735f70" .
"65725f7365636f6e64180e200128012283030a0e5363656e6172696f5265" .
"73756c7412280a087363656e6172696f18012001280b32162e677270632e" .
"74657374696e672e5363656e6172696f122e0a096c6174656e6369657318" .
"022001280b321b2e677270632e74657374696e672e486973746f6772616d" .
"44617461122f0a0c636c69656e745f737461747318032003280b32192e67" .
"7270632e74657374696e672e436c69656e745374617473122f0a0c736572" .
"7665725f737461747318042003280b32192e677270632e74657374696e67" .
"2e536572766572537461747312140a0c7365727665725f636f7265731805" .
"2003280512340a0773756d6d61727918062001280b32232e677270632e74" .
"657374696e672e5363656e6172696f526573756c7453756d6d6172791216" .
"0a0e636c69656e745f7375636365737318072003280812160a0e73657276" .
"65725f7375636365737318082003280812390a0f726571756573745f7265" .
"73756c747318092003280b32202e677270632e74657374696e672e526571" .
"75657374526573756c74436f756e742a410a0a436c69656e745479706512" .
"0f0a0b53594e435f434c49454e54100012100a0c4153594e435f434c4945" .
"4e54100112100a0c4f544845525f434c49454e5410022a5b0a0a53657276" .
"657254797065120f0a0b53594e435f534552564552100012100a0c415359" .
"4e435f534552564552100112180a144153594e435f47454e455249435f53" .
"4552564552100212100a0c4f544845525f53455256455210032a230a0752" .
"70635479706512090a05554e4152591000120d0a0953545245414d494e47" .
"1001620670726f746f33"
));
static::$is_initialized = true;
}
}

@ -0,0 +1,69 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace GPBMetadata\Src\Proto\Grpc\Testing;
class Messages
{
public static $is_initialized = false;
public static function initOnce() {
$pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();
if (static::$is_initialized == true) {
return;
}
$pool->internalAddGeneratedFile(hex2bin(
"0ad50a0a257372632f70726f746f2f677270632f74657374696e672f6d65" .
"7373616765732e70726f746f120c677270632e74657374696e67221a0a09" .
"426f6f6c56616c7565120d0a0576616c756518012001280822400a075061" .
"796c6f616412270a047479706518012001280e32192e677270632e746573" .
"74696e672e5061796c6f616454797065120c0a04626f647918022001280c" .
"222b0a0a4563686f537461747573120c0a04636f6465180120012805120f" .
"0a076d65737361676518022001280922ce020a0d53696d706c6552657175" .
"65737412300a0d726573706f6e73655f7479706518012001280e32192e67" .
"7270632e74657374696e672e5061796c6f61645479706512150a0d726573" .
"706f6e73655f73697a6518022001280512260a077061796c6f6164180320" .
"01280b32152e677270632e74657374696e672e5061796c6f616412150a0d" .
"66696c6c5f757365726e616d6518042001280812180a1066696c6c5f6f61" .
"7574685f73636f706518052001280812340a13726573706f6e73655f636f" .
"6d7072657373656418062001280b32172e677270632e74657374696e672e" .
"426f6f6c56616c756512310a0f726573706f6e73655f7374617475731807" .
"2001280b32182e677270632e74657374696e672e4563686f537461747573" .
"12320a116578706563745f636f6d7072657373656418082001280b32172e" .
"677270632e74657374696e672e426f6f6c56616c7565225f0a0e53696d70" .
"6c65526573706f6e736512260a077061796c6f616418012001280b32152e" .
"677270632e74657374696e672e5061796c6f616412100a08757365726e61" .
"6d6518022001280912130a0b6f617574685f73636f706518032001280922" .
"770a1953747265616d696e67496e70757443616c6c526571756573741226" .
"0a077061796c6f616418012001280b32152e677270632e74657374696e67" .
"2e5061796c6f616412320a116578706563745f636f6d7072657373656418" .
"022001280b32172e677270632e74657374696e672e426f6f6c56616c7565" .
"223d0a1a53747265616d696e67496e70757443616c6c526573706f6e7365" .
"121f0a17616767726567617465645f7061796c6f61645f73697a65180120" .
"01280522640a12526573706f6e7365506172616d6574657273120c0a0473" .
"697a6518012001280512130a0b696e74657276616c5f7573180220012805" .
"122b0a0a636f6d7072657373656418032001280b32172e677270632e7465" .
"7374696e672e426f6f6c56616c756522e8010a1a53747265616d696e674f" .
"757470757443616c6c5265717565737412300a0d726573706f6e73655f74" .
"79706518012001280e32192e677270632e74657374696e672e5061796c6f" .
"616454797065123d0a13726573706f6e73655f706172616d657465727318" .
"022003280b32202e677270632e74657374696e672e526573706f6e736550" .
"6172616d657465727312260a077061796c6f616418032001280b32152e67" .
"7270632e74657374696e672e5061796c6f616412310a0f726573706f6e73" .
"655f73746174757318072001280b32182e677270632e74657374696e672e" .
"4563686f53746174757322450a1b53747265616d696e674f757470757443" .
"616c6c526573706f6e736512260a077061796c6f616418012001280b3215" .
"2e677270632e74657374696e672e5061796c6f616422330a0f5265636f6e" .
"6e656374506172616d7312200a186d61785f7265636f6e6e6563745f6261" .
"636b6f66665f6d7318012001280522330a0d5265636f6e6e656374496e66" .
"6f120e0a0670617373656418012001280812120a0a6261636b6f66665f6d" .
"731802200328052a1f0a0b5061796c6f61645479706512100a0c434f4d50" .
"5245535341424c451000620670726f746f33"
));
static::$is_initialized = true;
}
}

@ -0,0 +1,37 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/payloads.proto
namespace GPBMetadata\Src\Proto\Grpc\Testing;
class Payloads
{
public static $is_initialized = false;
public static function initOnce() {
$pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();
if (static::$is_initialized == true) {
return;
}
$pool->internalAddGeneratedFile(hex2bin(
"0a93030a257372632f70726f746f2f677270632f74657374696e672f7061" .
"796c6f6164732e70726f746f120c677270632e74657374696e6722370a10" .
"42797465427566666572506172616d7312100a087265715f73697a651801" .
"2001280512110a09726573705f73697a6518022001280522380a1153696d" .
"706c6550726f746f506172616d7312100a087265715f73697a6518012001" .
"280512110a09726573705f73697a6518022001280522140a12436f6d706c" .
"657850726f746f506172616d7322ca010a0d5061796c6f6164436f6e6669" .
"6712380a0e627974656275665f706172616d7318012001280b321e2e6772" .
"70632e74657374696e672e42797465427566666572506172616d73480012" .
"380a0d73696d706c655f706172616d7318022001280b321f2e677270632e" .
"74657374696e672e53696d706c6550726f746f506172616d734800123a0a" .
"0e636f6d706c65785f706172616d7318032001280b32202e677270632e74" .
"657374696e672e436f6d706c657850726f746f506172616d73480042090a" .
"077061796c6f6164620670726f746f33"
));
static::$is_initialized = true;
}
}

@ -0,0 +1,34 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/proxy-service.proto
namespace GPBMetadata\Src\Proto\Grpc\Testing;
class ProxyService
{
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(
"0a97020a2a7372632f70726f746f2f677270632f74657374696e672f7072" .
"6f78792d736572766963652e70726f746f120c677270632e74657374696e" .
"671a247372632f70726f746f2f677270632f74657374696e672f636f6e74" .
"726f6c2e70726f746f221c0a0950726f787953746174120f0a076c617465" .
"6e6379180120012801328e010a1250726f7879436c69656e745365727669" .
"6365123b0a09476574436f6e66696712122e677270632e74657374696e67" .
"2e566f69641a1a2e677270632e74657374696e672e436c69656e74436f6e" .
"666967123b0a0a5265706f727454696d6512172e677270632e7465737469" .
"6e672e50726f7879537461741a122e677270632e74657374696e672e566f" .
"69642801620670726f746f33"
));
static::$is_initialized = true;
}
}

@ -0,0 +1,45 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/services.proto
namespace GPBMetadata\Src\Proto\Grpc\Testing;
class Services
{
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();
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
$pool->internalAddGeneratedFile(hex2bin(
"0ad1040a257372632f70726f746f2f677270632f74657374696e672f7365" .
"7276696365732e70726f746f120c677270632e74657374696e671a257372" .
"632f70726f746f2f677270632f74657374696e672f6d657373616765732e" .
"70726f746f1a247372632f70726f746f2f677270632f74657374696e672f" .
"636f6e74726f6c2e70726f746f32aa010a1042656e63686d61726b536572" .
"7669636512460a09556e61727943616c6c121b2e677270632e7465737469" .
"6e672e53696d706c65526571756573741a1c2e677270632e74657374696e" .
"672e53696d706c65526573706f6e7365124e0a0d53747265616d696e6743" .
"616c6c121b2e677270632e74657374696e672e53696d706c655265717565" .
"73741a1c2e677270632e74657374696e672e53696d706c65526573706f6e" .
"7365280130013297020a0d576f726b65725365727669636512450a095275" .
"6e53657276657212182e677270632e74657374696e672e53657276657241" .
"7267731a1a2e677270632e74657374696e672e5365727665725374617475" .
"732801300112450a0952756e436c69656e7412182e677270632e74657374" .
"696e672e436c69656e74417267731a1a2e677270632e74657374696e672e" .
"436c69656e745374617475732801300112420a09436f7265436f756e7412" .
"192e677270632e74657374696e672e436f7265526571756573741a1a2e67" .
"7270632e74657374696e672e436f7265526573706f6e736512340a0a5175" .
"6974576f726b657212122e677270632e74657374696e672e566f69641a12" .
"2e677270632e74657374696e672e566f6964620670726f746f33"
));
static::$is_initialized = true;
}
}

@ -0,0 +1,44 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/stats.proto
namespace GPBMetadata\Src\Proto\Grpc\Testing;
class Stats
{
public static $is_initialized = false;
public static function initOnce() {
$pool = \Google\Protobuf\Internal\DescriptorPool::getGeneratedPool();
if (static::$is_initialized == true) {
return;
}
$pool->internalAddGeneratedFile(hex2bin(
"0adf040a227372632f70726f746f2f677270632f74657374696e672f7374" .
"6174732e70726f746f120c677270632e74657374696e67227a0a0b536572" .
"766572537461747312140a0c74696d655f656c6170736564180120012801" .
"12110a0974696d655f7573657218022001280112130a0b74696d655f7379" .
"7374656d18032001280112160a0e746f74616c5f6370755f74696d651804" .
"2001280412150a0d69646c655f6370755f74696d65180520012804223b0a" .
"0f486973746f6772616d506172616d7312120a0a7265736f6c7574696f6e" .
"18012001280112140a0c6d61785f706f737369626c651802200128012277" .
"0a0d486973746f6772616d44617461120e0a066275636b65741801200328" .
"0d12100a086d696e5f7365656e18022001280112100a086d61785f736565" .
"6e180320012801120b0a0373756d18042001280112160a0e73756d5f6f66" .
"5f73717561726573180520012801120d0a05636f756e7418062001280122" .
"380a1252657175657374526573756c74436f756e7412130a0b7374617475" .
"735f636f6465180120012805120d0a05636f756e7418022001280322b601" .
"0a0b436c69656e745374617473122e0a096c6174656e6369657318012001" .
"280b321b2e677270632e74657374696e672e486973746f6772616d446174" .
"6112140a0c74696d655f656c617073656418022001280112110a0974696d" .
"655f7573657218032001280112130a0b74696d655f73797374656d180420" .
"01280112390a0f726571756573745f726573756c747318052003280b3220" .
"2e677270632e74657374696e672e52657175657374526573756c74436f75" .
"6e74620670726f746f33"
));
static::$is_initialized = true;
}
}

@ -0,0 +1,78 @@
<?php
// GENERATED CODE -- DO NOT EDIT!
// Original file comments:
// Copyright 2015, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// An integration test service that covers all the method signature permutations
// of unary/streaming requests/responses.
namespace Grpc\Testing {
class BenchmarkServiceClient 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 request followed by one response.
* The server returns the client payload as-is.
* @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.BenchmarkService/UnaryCall',
$argument,
['\Grpc\Testing\SimpleResponse', 'decode'],
$metadata, $options);
}
/**
* One request followed by one response.
* The server returns the client payload as-is.
* @param array $metadata metadata
* @param array $options call options
*/
public function StreamingCall($metadata = [], $options = []) {
return $this->_bidiRequest('/grpc.testing.BenchmarkService/StreamingCall',
['\Grpc\Testing\SimpleResponse','decode'],
$metadata, $options);
}
}
}

@ -0,0 +1,62 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* TODO(dgq): Go back to using well-known types once
* https://github.com/grpc/grpc/issues/6980 has been fixed.
* import "google/protobuf/wrappers.proto";
* </pre>
*
* Protobuf type <code>grpc.testing.BoolValue</code>
*/
class BoolValue extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* The bool value.
* </pre>
*
* <code>bool value = 1;</code>
*/
private $value = false;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* The bool value.
* </pre>
*
* <code>bool value = 1;</code>
*/
public function getValue()
{
return $this->value;
}
/**
* <pre>
* The bool value.
* </pre>
*
* <code>bool value = 1;</code>
*/
public function setValue($var)
{
GPBUtil::checkBool($var);
$this->value = $var;
}
}

@ -0,0 +1,65 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/payloads.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.ByteBufferParams</code>
*/
class ByteBufferParams extends \Google\Protobuf\Internal\Message
{
/**
* <code>int32 req_size = 1;</code>
*/
private $req_size = 0;
/**
* <code>int32 resp_size = 2;</code>
*/
private $resp_size = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Payloads::initOnce();
parent::__construct();
}
/**
* <code>int32 req_size = 1;</code>
*/
public function getReqSize()
{
return $this->req_size;
}
/**
* <code>int32 req_size = 1;</code>
*/
public function setReqSize($var)
{
GPBUtil::checkInt32($var);
$this->req_size = $var;
}
/**
* <code>int32 resp_size = 2;</code>
*/
public function getRespSize()
{
return $this->resp_size;
}
/**
* <code>int32 resp_size = 2;</code>
*/
public function setRespSize($var)
{
GPBUtil::checkInt32($var);
$this->resp_size = $var;
}
}

@ -0,0 +1,84 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ChannelArg</code>
*/
class ChannelArg extends \Google\Protobuf\Internal\Message
{
/**
* <code>string name = 1;</code>
*/
private $name = '';
protected $value;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>string name = 1;</code>
*/
public function getName()
{
return $this->name;
}
/**
* <code>string name = 1;</code>
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
}
/**
* <code>string str_value = 2;</code>
*/
public function getStrValue()
{
return $this->readOneof(2);
}
/**
* <code>string str_value = 2;</code>
*/
public function setStrValue($var)
{
GPBUtil::checkString($var, True);
$this->writeOneof(2, $var);
}
/**
* <code>int32 int_value = 3;</code>
*/
public function getIntValue()
{
return $this->readOneof(3);
}
/**
* <code>int32 int_value = 3;</code>
*/
public function setIntValue($var)
{
GPBUtil::checkInt32($var);
$this->writeOneof(3, $var);
}
public function getValue()
{
return $this->whichOneof("value");
}
}

@ -0,0 +1,63 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ClientArgs</code>
*/
class ClientArgs extends \Google\Protobuf\Internal\Message
{
protected $argtype;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ClientConfig setup = 1;</code>
*/
public function getSetup()
{
return $this->readOneof(1);
}
/**
* <code>.grpc.testing.ClientConfig setup = 1;</code>
*/
public function setSetup(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ClientConfig::class);
$this->writeOneof(1, $var);
}
/**
* <code>.grpc.testing.Mark mark = 2;</code>
*/
public function getMark()
{
return $this->readOneof(2);
}
/**
* <code>.grpc.testing.Mark mark = 2;</code>
*/
public function setMark(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Mark::class);
$this->writeOneof(2, $var);
}
public function getArgtype()
{
return $this->whichOneof("argtype");
}
}

@ -0,0 +1,407 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ClientConfig</code>
*/
class ClientConfig extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* List of targets to connect to. At least one target needs to be specified.
* </pre>
*
* <code>repeated string server_targets = 1;</code>
*/
private $server_targets;
/**
* <code>.grpc.testing.ClientType client_type = 2;</code>
*/
private $client_type = 0;
/**
* <code>.grpc.testing.SecurityParams security_params = 3;</code>
*/
private $security_params = null;
/**
* <pre>
* How many concurrent RPCs to start for each channel.
* For synchronous client, use a separate thread for each outstanding RPC.
* </pre>
*
* <code>int32 outstanding_rpcs_per_channel = 4;</code>
*/
private $outstanding_rpcs_per_channel = 0;
/**
* <pre>
* Number of independent client channels to create.
* i-th channel will connect to server_target[i % server_targets.size()]
* </pre>
*
* <code>int32 client_channels = 5;</code>
*/
private $client_channels = 0;
/**
* <pre>
* Only for async client. Number of threads to use to start/manage RPCs.
* </pre>
*
* <code>int32 async_client_threads = 7;</code>
*/
private $async_client_threads = 0;
/**
* <code>.grpc.testing.RpcType rpc_type = 8;</code>
*/
private $rpc_type = 0;
/**
* <pre>
* The requested load for the entire client (aggregated over all the threads).
* </pre>
*
* <code>.grpc.testing.LoadParams load_params = 10;</code>
*/
private $load_params = null;
/**
* <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
*/
private $payload_config = null;
/**
* <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
*/
private $histogram_params = null;
/**
* <pre>
* Specify the cores we should run the client on, if desired
* </pre>
*
* <code>repeated int32 core_list = 13;</code>
*/
private $core_list;
/**
* <code>int32 core_limit = 14;</code>
*/
private $core_limit = 0;
/**
* <pre>
* If we use an OTHER_CLIENT client_type, this string gives more detail
* </pre>
*
* <code>string other_client_api = 15;</code>
*/
private $other_client_api = '';
/**
* <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
*/
private $channel_args;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* List of targets to connect to. At least one target needs to be specified.
* </pre>
*
* <code>repeated string server_targets = 1;</code>
*/
public function getServerTargets()
{
return $this->server_targets;
}
/**
* <pre>
* List of targets to connect to. At least one target needs to be specified.
* </pre>
*
* <code>repeated string server_targets = 1;</code>
*/
public function setServerTargets(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
$this->server_targets = $var;
}
/**
* <code>.grpc.testing.ClientType client_type = 2;</code>
*/
public function getClientType()
{
return $this->client_type;
}
/**
* <code>.grpc.testing.ClientType client_type = 2;</code>
*/
public function setClientType($var)
{
GPBUtil::checkEnum($var, \Grpc\Testing\ClientType::class);
$this->client_type = $var;
}
/**
* <code>.grpc.testing.SecurityParams security_params = 3;</code>
*/
public function getSecurityParams()
{
return $this->security_params;
}
/**
* <code>.grpc.testing.SecurityParams security_params = 3;</code>
*/
public function setSecurityParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\SecurityParams::class);
$this->security_params = $var;
}
/**
* <pre>
* How many concurrent RPCs to start for each channel.
* For synchronous client, use a separate thread for each outstanding RPC.
* </pre>
*
* <code>int32 outstanding_rpcs_per_channel = 4;</code>
*/
public function getOutstandingRpcsPerChannel()
{
return $this->outstanding_rpcs_per_channel;
}
/**
* <pre>
* How many concurrent RPCs to start for each channel.
* For synchronous client, use a separate thread for each outstanding RPC.
* </pre>
*
* <code>int32 outstanding_rpcs_per_channel = 4;</code>
*/
public function setOutstandingRpcsPerChannel($var)
{
GPBUtil::checkInt32($var);
$this->outstanding_rpcs_per_channel = $var;
}
/**
* <pre>
* Number of independent client channels to create.
* i-th channel will connect to server_target[i % server_targets.size()]
* </pre>
*
* <code>int32 client_channels = 5;</code>
*/
public function getClientChannels()
{
return $this->client_channels;
}
/**
* <pre>
* Number of independent client channels to create.
* i-th channel will connect to server_target[i % server_targets.size()]
* </pre>
*
* <code>int32 client_channels = 5;</code>
*/
public function setClientChannels($var)
{
GPBUtil::checkInt32($var);
$this->client_channels = $var;
}
/**
* <pre>
* Only for async client. Number of threads to use to start/manage RPCs.
* </pre>
*
* <code>int32 async_client_threads = 7;</code>
*/
public function getAsyncClientThreads()
{
return $this->async_client_threads;
}
/**
* <pre>
* Only for async client. Number of threads to use to start/manage RPCs.
* </pre>
*
* <code>int32 async_client_threads = 7;</code>
*/
public function setAsyncClientThreads($var)
{
GPBUtil::checkInt32($var);
$this->async_client_threads = $var;
}
/**
* <code>.grpc.testing.RpcType rpc_type = 8;</code>
*/
public function getRpcType()
{
return $this->rpc_type;
}
/**
* <code>.grpc.testing.RpcType rpc_type = 8;</code>
*/
public function setRpcType($var)
{
GPBUtil::checkEnum($var, \Grpc\Testing\RpcType::class);
$this->rpc_type = $var;
}
/**
* <pre>
* The requested load for the entire client (aggregated over all the threads).
* </pre>
*
* <code>.grpc.testing.LoadParams load_params = 10;</code>
*/
public function getLoadParams()
{
return $this->load_params;
}
/**
* <pre>
* The requested load for the entire client (aggregated over all the threads).
* </pre>
*
* <code>.grpc.testing.LoadParams load_params = 10;</code>
*/
public function setLoadParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\LoadParams::class);
$this->load_params = $var;
}
/**
* <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
*/
public function getPayloadConfig()
{
return $this->payload_config;
}
/**
* <code>.grpc.testing.PayloadConfig payload_config = 11;</code>
*/
public function setPayloadConfig(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\PayloadConfig::class);
$this->payload_config = $var;
}
/**
* <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
*/
public function getHistogramParams()
{
return $this->histogram_params;
}
/**
* <code>.grpc.testing.HistogramParams histogram_params = 12;</code>
*/
public function setHistogramParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\HistogramParams::class);
$this->histogram_params = $var;
}
/**
* <pre>
* Specify the cores we should run the client on, if desired
* </pre>
*
* <code>repeated int32 core_list = 13;</code>
*/
public function getCoreList()
{
return $this->core_list;
}
/**
* <pre>
* Specify the cores we should run the client on, if desired
* </pre>
*
* <code>repeated int32 core_list = 13;</code>
*/
public function setCoreList(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->core_list = $var;
}
/**
* <code>int32 core_limit = 14;</code>
*/
public function getCoreLimit()
{
return $this->core_limit;
}
/**
* <code>int32 core_limit = 14;</code>
*/
public function setCoreLimit($var)
{
GPBUtil::checkInt32($var);
$this->core_limit = $var;
}
/**
* <pre>
* If we use an OTHER_CLIENT client_type, this string gives more detail
* </pre>
*
* <code>string other_client_api = 15;</code>
*/
public function getOtherClientApi()
{
return $this->other_client_api;
}
/**
* <pre>
* If we use an OTHER_CLIENT client_type, this string gives more detail
* </pre>
*
* <code>string other_client_api = 15;</code>
*/
public function setOtherClientApi($var)
{
GPBUtil::checkString($var, True);
$this->other_client_api = $var;
}
/**
* <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
*/
public function getChannelArgs()
{
return $this->channel_args;
}
/**
* <code>repeated .grpc.testing.ChannelArg channel_args = 16;</code>
*/
public function setChannelArgs(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\ChannelArg::class);
$this->channel_args = $var;
}
}

@ -0,0 +1,164 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/stats.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.ClientStats</code>
*/
class ClientStats extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Latency histogram. Data points are in nanoseconds.
* </pre>
*
* <code>.grpc.testing.HistogramData latencies = 1;</code>
*/
private $latencies = null;
/**
* <pre>
* See ServerStats for details.
* </pre>
*
* <code>double time_elapsed = 2;</code>
*/
private $time_elapsed = 0.0;
/**
* <code>double time_user = 3;</code>
*/
private $time_user = 0.0;
/**
* <code>double time_system = 4;</code>
*/
private $time_system = 0.0;
/**
* <pre>
* Number of failed requests (one row per status code seen)
* </pre>
*
* <code>repeated .grpc.testing.RequestResultCount request_results = 5;</code>
*/
private $request_results;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce();
parent::__construct();
}
/**
* <pre>
* Latency histogram. Data points are in nanoseconds.
* </pre>
*
* <code>.grpc.testing.HistogramData latencies = 1;</code>
*/
public function getLatencies()
{
return $this->latencies;
}
/**
* <pre>
* Latency histogram. Data points are in nanoseconds.
* </pre>
*
* <code>.grpc.testing.HistogramData latencies = 1;</code>
*/
public function setLatencies(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\HistogramData::class);
$this->latencies = $var;
}
/**
* <pre>
* See ServerStats for details.
* </pre>
*
* <code>double time_elapsed = 2;</code>
*/
public function getTimeElapsed()
{
return $this->time_elapsed;
}
/**
* <pre>
* See ServerStats for details.
* </pre>
*
* <code>double time_elapsed = 2;</code>
*/
public function setTimeElapsed($var)
{
GPBUtil::checkDouble($var);
$this->time_elapsed = $var;
}
/**
* <code>double time_user = 3;</code>
*/
public function getTimeUser()
{
return $this->time_user;
}
/**
* <code>double time_user = 3;</code>
*/
public function setTimeUser($var)
{
GPBUtil::checkDouble($var);
$this->time_user = $var;
}
/**
* <code>double time_system = 4;</code>
*/
public function getTimeSystem()
{
return $this->time_system;
}
/**
* <code>double time_system = 4;</code>
*/
public function setTimeSystem($var)
{
GPBUtil::checkDouble($var);
$this->time_system = $var;
}
/**
* <pre>
* Number of failed requests (one row per status code seen)
* </pre>
*
* <code>repeated .grpc.testing.RequestResultCount request_results = 5;</code>
*/
public function getRequestResults()
{
return $this->request_results;
}
/**
* <pre>
* Number of failed requests (one row per status code seen)
* </pre>
*
* <code>repeated .grpc.testing.RequestResultCount request_results = 5;</code>
*/
public function setRequestResults(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\RequestResultCount::class);
$this->request_results = $var;
}
}

@ -0,0 +1,44 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ClientStatus</code>
*/
class ClientStatus extends \Google\Protobuf\Internal\Message
{
/**
* <code>.grpc.testing.ClientStats stats = 1;</code>
*/
private $stats = null;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ClientStats stats = 1;</code>
*/
public function getStats()
{
return $this->stats;
}
/**
* <code>.grpc.testing.ClientStats stats = 1;</code>
*/
public function setStats(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ClientStats::class);
$this->stats = $var;
}
}

@ -0,0 +1,34 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/control.proto
namespace Grpc\Testing;
/**
* Protobuf enum <code>grpc.testing.ClientType</code>
*/
class ClientType
{
/**
* <pre>
* Many languages support a basic distinction between using
* sync or async client, and this allows the specification
* </pre>
*
* <code>SYNC_CLIENT = 0;</code>
*/
const SYNC_CLIENT = 0;
/**
* <code>ASYNC_CLIENT = 1;</code>
*/
const ASYNC_CLIENT = 1;
/**
* <pre>
* used for some language-specific variants
* </pre>
*
* <code>OTHER_CLIENT = 2;</code>
*/
const OTHER_CLIENT = 2;
}

@ -0,0 +1,28 @@
<?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;
/**
* <pre>
* Once an RPC finishes, immediately start a new one.
* No configuration parameters needed.
* </pre>
*
* Protobuf type <code>grpc.testing.ClosedLoopParams</code>
*/
class ClosedLoopParams extends \Google\Protobuf\Internal\Message
{
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
}

@ -0,0 +1,28 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/payloads.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* TODO (vpai): Fill this in once the details of complex, representative
* protos are decided
* </pre>
*
* Protobuf type <code>grpc.testing.ComplexProtoParams</code>
*/
class ComplexProtoParams extends \Google\Protobuf\Internal\Message
{
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Payloads::initOnce();
parent::__construct();
}
}

@ -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;
/**
* Protobuf type <code>grpc.testing.CoreRequest</code>
*/
class CoreRequest extends \Google\Protobuf\Internal\Message
{
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
}

@ -0,0 +1,56 @@
<?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;
/**
* Protobuf type <code>grpc.testing.CoreResponse</code>
*/
class CoreResponse extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Number of cores available on the server
* </pre>
*
* <code>int32 cores = 1;</code>
*/
private $cores = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* Number of cores available on the server
* </pre>
*
* <code>int32 cores = 1;</code>
*/
public function getCores()
{
return $this->cores;
}
/**
* <pre>
* Number of cores available on the server
* </pre>
*
* <code>int32 cores = 1;</code>
*/
public function setCores($var)
{
GPBUtil::checkInt32($var);
$this->cores = $var;
}
}

@ -0,0 +1,70 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* A protobuf representation for grpc status. This is used by test
* clients to specify a status that the server should attempt to return.
* </pre>
*
* Protobuf type <code>grpc.testing.EchoStatus</code>
*/
class EchoStatus extends \Google\Protobuf\Internal\Message
{
/**
* <code>int32 code = 1;</code>
*/
private $code = 0;
/**
* <code>string message = 2;</code>
*/
private $message = '';
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <code>int32 code = 1;</code>
*/
public function getCode()
{
return $this->code;
}
/**
* <code>int32 code = 1;</code>
*/
public function setCode($var)
{
GPBUtil::checkInt32($var);
$this->code = $var;
}
/**
* <code>string message = 2;</code>
*/
public function getMessage()
{
return $this->message;
}
/**
* <code>string message = 2;</code>
*/
public function setMessage($var)
{
GPBUtil::checkString($var, True);
$this->message = $var;
}
}

@ -0,0 +1,153 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/stats.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Histogram data based on grpc/support/histogram.c
* </pre>
*
* Protobuf type <code>grpc.testing.HistogramData</code>
*/
class HistogramData extends \Google\Protobuf\Internal\Message
{
/**
* <code>repeated uint32 bucket = 1;</code>
*/
private $bucket;
/**
* <code>double min_seen = 2;</code>
*/
private $min_seen = 0.0;
/**
* <code>double max_seen = 3;</code>
*/
private $max_seen = 0.0;
/**
* <code>double sum = 4;</code>
*/
private $sum = 0.0;
/**
* <code>double sum_of_squares = 5;</code>
*/
private $sum_of_squares = 0.0;
/**
* <code>double count = 6;</code>
*/
private $count = 0.0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce();
parent::__construct();
}
/**
* <code>repeated uint32 bucket = 1;</code>
*/
public function getBucket()
{
return $this->bucket;
}
/**
* <code>repeated uint32 bucket = 1;</code>
*/
public function setBucket(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::UINT32);
$this->bucket = $var;
}
/**
* <code>double min_seen = 2;</code>
*/
public function getMinSeen()
{
return $this->min_seen;
}
/**
* <code>double min_seen = 2;</code>
*/
public function setMinSeen($var)
{
GPBUtil::checkDouble($var);
$this->min_seen = $var;
}
/**
* <code>double max_seen = 3;</code>
*/
public function getMaxSeen()
{
return $this->max_seen;
}
/**
* <code>double max_seen = 3;</code>
*/
public function setMaxSeen($var)
{
GPBUtil::checkDouble($var);
$this->max_seen = $var;
}
/**
* <code>double sum = 4;</code>
*/
public function getSum()
{
return $this->sum;
}
/**
* <code>double sum = 4;</code>
*/
public function setSum($var)
{
GPBUtil::checkDouble($var);
$this->sum = $var;
}
/**
* <code>double sum_of_squares = 5;</code>
*/
public function getSumOfSquares()
{
return $this->sum_of_squares;
}
/**
* <code>double sum_of_squares = 5;</code>
*/
public function setSumOfSquares($var)
{
GPBUtil::checkDouble($var);
$this->sum_of_squares = $var;
}
/**
* <code>double count = 6;</code>
*/
public function getCount()
{
return $this->count;
}
/**
* <code>double count = 6;</code>
*/
public function setCount($var)
{
GPBUtil::checkDouble($var);
$this->count = $var;
}
}

@ -0,0 +1,93 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/stats.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Histogram params based on grpc/support/histogram.c
* </pre>
*
* Protobuf type <code>grpc.testing.HistogramParams</code>
*/
class HistogramParams extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* first bucket is [0, 1 + resolution)
* </pre>
*
* <code>double resolution = 1;</code>
*/
private $resolution = 0.0;
/**
* <pre>
* use enough buckets to allow this value
* </pre>
*
* <code>double max_possible = 2;</code>
*/
private $max_possible = 0.0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce();
parent::__construct();
}
/**
* <pre>
* first bucket is [0, 1 + resolution)
* </pre>
*
* <code>double resolution = 1;</code>
*/
public function getResolution()
{
return $this->resolution;
}
/**
* <pre>
* first bucket is [0, 1 + resolution)
* </pre>
*
* <code>double resolution = 1;</code>
*/
public function setResolution($var)
{
GPBUtil::checkDouble($var);
$this->resolution = $var;
}
/**
* <pre>
* use enough buckets to allow this value
* </pre>
*
* <code>double max_possible = 2;</code>
*/
public function getMaxPossible()
{
return $this->max_possible;
}
/**
* <pre>
* use enough buckets to allow this value
* </pre>
*
* <code>double max_possible = 2;</code>
*/
public function setMaxPossible($var)
{
GPBUtil::checkDouble($var);
$this->max_possible = $var;
}
}

@ -0,0 +1,63 @@
<?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;
/**
* Protobuf type <code>grpc.testing.LoadParams</code>
*/
class LoadParams extends \Google\Protobuf\Internal\Message
{
protected $load;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
*/
public function getClosedLoop()
{
return $this->readOneof(1);
}
/**
* <code>.grpc.testing.ClosedLoopParams closed_loop = 1;</code>
*/
public function setClosedLoop(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ClosedLoopParams::class);
$this->writeOneof(1, $var);
}
/**
* <code>.grpc.testing.PoissonParams poisson = 2;</code>
*/
public function getPoisson()
{
return $this->readOneof(2);
}
/**
* <code>.grpc.testing.PoissonParams poisson = 2;</code>
*/
public function setPoisson(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\PoissonParams::class);
$this->writeOneof(2, $var);
}
public function getLoad()
{
return $this->whichOneof("load");
}
}

@ -0,0 +1,60 @@
<?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;
/**
* <pre>
* Request current stats
* </pre>
*
* Protobuf type <code>grpc.testing.Mark</code>
*/
class Mark extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* if true, the stats will be reset after taking their snapshot.
* </pre>
*
* <code>bool reset = 1;</code>
*/
private $reset = false;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* if true, the stats will be reset after taking their snapshot.
* </pre>
*
* <code>bool reset = 1;</code>
*/
public function getReset()
{
return $this->reset;
}
/**
* <pre>
* if true, the stats will be reset after taking their snapshot.
* </pre>
*
* <code>bool reset = 1;</code>
*/
public function setReset($var)
{
GPBUtil::checkBool($var);
$this->reset = $var;
}
}

@ -0,0 +1,96 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* A block of data, to simply increase gRPC message size.
* </pre>
*
* Protobuf type <code>grpc.testing.Payload</code>
*/
class Payload extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* The type of data in body.
* </pre>
*
* <code>.grpc.testing.PayloadType type = 1;</code>
*/
private $type = 0;
/**
* <pre>
* Primary contents of payload.
* </pre>
*
* <code>bytes body = 2;</code>
*/
private $body = '';
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* The type of data in body.
* </pre>
*
* <code>.grpc.testing.PayloadType type = 1;</code>
*/
public function getType()
{
return $this->type;
}
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* The type of data in body.
* </pre>
*
* <code>.grpc.testing.PayloadType type = 1;</code>
*/
public function setType($var)
{
GPBUtil::checkEnum($var, \Grpc\Testing\PayloadType::class);
$this->type = $var;
}
/**
* <pre>
* Primary contents of payload.
* </pre>
*
* <code>bytes body = 2;</code>
*/
public function getBody()
{
return $this->body;
}
/**
* <pre>
* Primary contents of payload.
* </pre>
*
* <code>bytes body = 2;</code>
*/
public function setBody($var)
{
GPBUtil::checkString($var, False);
$this->body = $var;
}
}

@ -0,0 +1,80 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/payloads.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.PayloadConfig</code>
*/
class PayloadConfig extends \Google\Protobuf\Internal\Message
{
protected $payload;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Payloads::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ByteBufferParams bytebuf_params = 1;</code>
*/
public function getBytebufParams()
{
return $this->readOneof(1);
}
/**
* <code>.grpc.testing.ByteBufferParams bytebuf_params = 1;</code>
*/
public function setBytebufParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ByteBufferParams::class);
$this->writeOneof(1, $var);
}
/**
* <code>.grpc.testing.SimpleProtoParams simple_params = 2;</code>
*/
public function getSimpleParams()
{
return $this->readOneof(2);
}
/**
* <code>.grpc.testing.SimpleProtoParams simple_params = 2;</code>
*/
public function setSimpleParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\SimpleProtoParams::class);
$this->writeOneof(2, $var);
}
/**
* <code>.grpc.testing.ComplexProtoParams complex_params = 3;</code>
*/
public function getComplexParams()
{
return $this->readOneof(3);
}
/**
* <code>.grpc.testing.ComplexProtoParams complex_params = 3;</code>
*/
public function setComplexParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ComplexProtoParams::class);
$this->writeOneof(3, $var);
}
public function getPayload()
{
return $this->whichOneof("payload");
}
}

@ -0,0 +1,26 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* The type of payload that should be returned.
* </pre>
*
* Protobuf enum <code>grpc.testing.PayloadType</code>
*/
class PayloadType
{
/**
* <pre>
* Compressable text format.
* </pre>
*
* <code>COMPRESSABLE = 0;</code>
*/
const COMPRESSABLE = 0;
}

@ -0,0 +1,61 @@
<?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;
/**
* <pre>
* Parameters of poisson process distribution, which is a good representation
* of activity coming in from independent identical stationary sources.
* </pre>
*
* Protobuf type <code>grpc.testing.PoissonParams</code>
*/
class PoissonParams extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
* </pre>
*
* <code>double offered_load = 1;</code>
*/
private $offered_load = 0.0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
* </pre>
*
* <code>double offered_load = 1;</code>
*/
public function getOfferedLoad()
{
return $this->offered_load;
}
/**
* <pre>
* The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
* </pre>
*
* <code>double offered_load = 1;</code>
*/
public function setOfferedLoad($var)
{
GPBUtil::checkDouble($var);
$this->offered_load = $var;
}
}

@ -0,0 +1,72 @@
<?php
// GENERATED CODE -- DO NOT EDIT!
// Original file comments:
// Copyright 2017, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
namespace Grpc\Testing {
class ProxyClientServiceClient 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\Void $argument input argument
* @param array $metadata metadata
* @param array $options call options
*/
public function GetConfig(\Grpc\Testing\Void $argument,
$metadata = [], $options = []) {
return $this->_simpleRequest('/grpc.testing.ProxyClientService/GetConfig',
$argument,
['\Grpc\Testing\ClientConfig', 'decode'],
$metadata, $options);
}
/**
* @param array $metadata metadata
* @param array $options call options
*/
public function ReportTime($metadata = [], $options = []) {
return $this->_clientStreamRequest('/grpc.testing.ProxyClientService/ReportTime',
['\Grpc\Testing\Void','decode'],
$metadata, $options);
}
}
}

@ -0,0 +1,44 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/proxy-service.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.ProxyStat</code>
*/
class ProxyStat extends \Google\Protobuf\Internal\Message
{
/**
* <code>double latency = 1;</code>
*/
private $latency = 0.0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\ProxyService::initOnce();
parent::__construct();
}
/**
* <code>double latency = 1;</code>
*/
public function getLatency()
{
return $this->latency;
}
/**
* <code>double latency = 1;</code>
*/
public function setLatency($var)
{
GPBUtil::checkDouble($var);
$this->latency = $var;
}
}

@ -0,0 +1,71 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* For reconnect interop test only.
* Server tells client whether its reconnects are following the spec and the
* reconnect backoffs it saw.
* </pre>
*
* Protobuf type <code>grpc.testing.ReconnectInfo</code>
*/
class ReconnectInfo extends \Google\Protobuf\Internal\Message
{
/**
* <code>bool passed = 1;</code>
*/
private $passed = false;
/**
* <code>repeated int32 backoff_ms = 2;</code>
*/
private $backoff_ms;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <code>bool passed = 1;</code>
*/
public function getPassed()
{
return $this->passed;
}
/**
* <code>bool passed = 1;</code>
*/
public function setPassed($var)
{
GPBUtil::checkBool($var);
$this->passed = $var;
}
/**
* <code>repeated int32 backoff_ms = 2;</code>
*/
public function getBackoffMs()
{
return $this->backoff_ms;
}
/**
* <code>repeated int32 backoff_ms = 2;</code>
*/
public function setBackoffMs(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->backoff_ms = $var;
}
}

@ -0,0 +1,49 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* For reconnect interop test only.
* Client tells server what reconnection parameters it used.
* </pre>
*
* Protobuf type <code>grpc.testing.ReconnectParams</code>
*/
class ReconnectParams extends \Google\Protobuf\Internal\Message
{
/**
* <code>int32 max_reconnect_backoff_ms = 1;</code>
*/
private $max_reconnect_backoff_ms = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <code>int32 max_reconnect_backoff_ms = 1;</code>
*/
public function getMaxReconnectBackoffMs()
{
return $this->max_reconnect_backoff_ms;
}
/**
* <code>int32 max_reconnect_backoff_ms = 1;</code>
*/
public function setMaxReconnectBackoffMs($var)
{
GPBUtil::checkInt32($var);
$this->max_reconnect_backoff_ms = $var;
}
}

@ -0,0 +1,65 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/stats.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.RequestResultCount</code>
*/
class RequestResultCount extends \Google\Protobuf\Internal\Message
{
/**
* <code>int32 status_code = 1;</code>
*/
private $status_code = 0;
/**
* <code>int64 count = 2;</code>
*/
private $count = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce();
parent::__construct();
}
/**
* <code>int32 status_code = 1;</code>
*/
public function getStatusCode()
{
return $this->status_code;
}
/**
* <code>int32 status_code = 1;</code>
*/
public function setStatusCode($var)
{
GPBUtil::checkInt32($var);
$this->status_code = $var;
}
/**
* <code>int64 count = 2;</code>
*/
public function getCount()
{
return $this->count;
}
/**
* <code>int64 count = 2;</code>
*/
public function setCount($var)
{
GPBUtil::checkInt64($var);
$this->count = $var;
}
}

@ -0,0 +1,138 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Configuration for a particular response.
* </pre>
*
* Protobuf type <code>grpc.testing.ResponseParameters</code>
*/
class ResponseParameters extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Desired payload sizes in responses from the server.
* </pre>
*
* <code>int32 size = 1;</code>
*/
private $size = 0;
/**
* <pre>
* Desired interval between consecutive responses in the response stream in
* microseconds.
* </pre>
*
* <code>int32 interval_us = 2;</code>
*/
private $interval_us = 0;
/**
* <pre>
* Whether to request the server to compress the response. This field is
* "nullable" in order to interoperate seamlessly with clients not able to
* implement the full compression tests by introspecting the call to verify
* the response's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue compressed = 3;</code>
*/
private $compressed = null;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* Desired payload sizes in responses from the server.
* </pre>
*
* <code>int32 size = 1;</code>
*/
public function getSize()
{
return $this->size;
}
/**
* <pre>
* Desired payload sizes in responses from the server.
* </pre>
*
* <code>int32 size = 1;</code>
*/
public function setSize($var)
{
GPBUtil::checkInt32($var);
$this->size = $var;
}
/**
* <pre>
* Desired interval between consecutive responses in the response stream in
* microseconds.
* </pre>
*
* <code>int32 interval_us = 2;</code>
*/
public function getIntervalUs()
{
return $this->interval_us;
}
/**
* <pre>
* Desired interval between consecutive responses in the response stream in
* microseconds.
* </pre>
*
* <code>int32 interval_us = 2;</code>
*/
public function setIntervalUs($var)
{
GPBUtil::checkInt32($var);
$this->interval_us = $var;
}
/**
* <pre>
* Whether to request the server to compress the response. This field is
* "nullable" in order to interoperate seamlessly with clients not able to
* implement the full compression tests by introspecting the call to verify
* the response's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue compressed = 3;</code>
*/
public function getCompressed()
{
return $this->compressed;
}
/**
* <pre>
* Whether to request the server to compress the response. This field is
* "nullable" in order to interoperate seamlessly with clients not able to
* implement the full compression tests by introspecting the call to verify
* the response's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue compressed = 3;</code>
*/
public function setCompressed(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\BoolValue::class);
$this->compressed = $var;
}
}

@ -0,0 +1,21 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/control.proto
namespace Grpc\Testing;
/**
* Protobuf enum <code>grpc.testing.RpcType</code>
*/
class RpcType
{
/**
* <code>UNARY = 0;</code>
*/
const UNARY = 0;
/**
* <code>STREAMING = 1;</code>
*/
const STREAMING = 1;
}

@ -0,0 +1,291 @@
<?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;
/**
* <pre>
* A single performance scenario: input to qps_json_driver
* </pre>
*
* Protobuf type <code>grpc.testing.Scenario</code>
*/
class Scenario extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Human readable name for this scenario
* </pre>
*
* <code>string name = 1;</code>
*/
private $name = '';
/**
* <pre>
* Client configuration
* </pre>
*
* <code>.grpc.testing.ClientConfig client_config = 2;</code>
*/
private $client_config = null;
/**
* <pre>
* Number of clients to start for the test
* </pre>
*
* <code>int32 num_clients = 3;</code>
*/
private $num_clients = 0;
/**
* <pre>
* Server configuration
* </pre>
*
* <code>.grpc.testing.ServerConfig server_config = 4;</code>
*/
private $server_config = null;
/**
* <pre>
* Number of servers to start for the test
* </pre>
*
* <code>int32 num_servers = 5;</code>
*/
private $num_servers = 0;
/**
* <pre>
* Warmup period, in seconds
* </pre>
*
* <code>int32 warmup_seconds = 6;</code>
*/
private $warmup_seconds = 0;
/**
* <pre>
* Benchmark time, in seconds
* </pre>
*
* <code>int32 benchmark_seconds = 7;</code>
*/
private $benchmark_seconds = 0;
/**
* <pre>
* Number of workers to spawn locally (usually zero)
* </pre>
*
* <code>int32 spawn_local_worker_count = 8;</code>
*/
private $spawn_local_worker_count = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* Human readable name for this scenario
* </pre>
*
* <code>string name = 1;</code>
*/
public function getName()
{
return $this->name;
}
/**
* <pre>
* Human readable name for this scenario
* </pre>
*
* <code>string name = 1;</code>
*/
public function setName($var)
{
GPBUtil::checkString($var, True);
$this->name = $var;
}
/**
* <pre>
* Client configuration
* </pre>
*
* <code>.grpc.testing.ClientConfig client_config = 2;</code>
*/
public function getClientConfig()
{
return $this->client_config;
}
/**
* <pre>
* Client configuration
* </pre>
*
* <code>.grpc.testing.ClientConfig client_config = 2;</code>
*/
public function setClientConfig(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ClientConfig::class);
$this->client_config = $var;
}
/**
* <pre>
* Number of clients to start for the test
* </pre>
*
* <code>int32 num_clients = 3;</code>
*/
public function getNumClients()
{
return $this->num_clients;
}
/**
* <pre>
* Number of clients to start for the test
* </pre>
*
* <code>int32 num_clients = 3;</code>
*/
public function setNumClients($var)
{
GPBUtil::checkInt32($var);
$this->num_clients = $var;
}
/**
* <pre>
* Server configuration
* </pre>
*
* <code>.grpc.testing.ServerConfig server_config = 4;</code>
*/
public function getServerConfig()
{
return $this->server_config;
}
/**
* <pre>
* Server configuration
* </pre>
*
* <code>.grpc.testing.ServerConfig server_config = 4;</code>
*/
public function setServerConfig(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ServerConfig::class);
$this->server_config = $var;
}
/**
* <pre>
* Number of servers to start for the test
* </pre>
*
* <code>int32 num_servers = 5;</code>
*/
public function getNumServers()
{
return $this->num_servers;
}
/**
* <pre>
* Number of servers to start for the test
* </pre>
*
* <code>int32 num_servers = 5;</code>
*/
public function setNumServers($var)
{
GPBUtil::checkInt32($var);
$this->num_servers = $var;
}
/**
* <pre>
* Warmup period, in seconds
* </pre>
*
* <code>int32 warmup_seconds = 6;</code>
*/
public function getWarmupSeconds()
{
return $this->warmup_seconds;
}
/**
* <pre>
* Warmup period, in seconds
* </pre>
*
* <code>int32 warmup_seconds = 6;</code>
*/
public function setWarmupSeconds($var)
{
GPBUtil::checkInt32($var);
$this->warmup_seconds = $var;
}
/**
* <pre>
* Benchmark time, in seconds
* </pre>
*
* <code>int32 benchmark_seconds = 7;</code>
*/
public function getBenchmarkSeconds()
{
return $this->benchmark_seconds;
}
/**
* <pre>
* Benchmark time, in seconds
* </pre>
*
* <code>int32 benchmark_seconds = 7;</code>
*/
public function setBenchmarkSeconds($var)
{
GPBUtil::checkInt32($var);
$this->benchmark_seconds = $var;
}
/**
* <pre>
* Number of workers to spawn locally (usually zero)
* </pre>
*
* <code>int32 spawn_local_worker_count = 8;</code>
*/
public function getSpawnLocalWorkerCount()
{
return $this->spawn_local_worker_count;
}
/**
* <pre>
* Number of workers to spawn locally (usually zero)
* </pre>
*
* <code>int32 spawn_local_worker_count = 8;</code>
*/
public function setSpawnLocalWorkerCount($var)
{
GPBUtil::checkInt32($var);
$this->spawn_local_worker_count = $var;
}
}

@ -0,0 +1,312 @@
<?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;
/**
* <pre>
* Results of a single benchmark scenario.
* </pre>
*
* Protobuf type <code>grpc.testing.ScenarioResult</code>
*/
class ScenarioResult extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Inputs used to run the scenario.
* </pre>
*
* <code>.grpc.testing.Scenario scenario = 1;</code>
*/
private $scenario = null;
/**
* <pre>
* Histograms from all clients merged into one histogram.
* </pre>
*
* <code>.grpc.testing.HistogramData latencies = 2;</code>
*/
private $latencies = null;
/**
* <pre>
* Client stats for each client
* </pre>
*
* <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
*/
private $client_stats;
/**
* <pre>
* Server stats for each server
* </pre>
*
* <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
*/
private $server_stats;
/**
* <pre>
* Number of cores available to each server
* </pre>
*
* <code>repeated int32 server_cores = 5;</code>
*/
private $server_cores;
/**
* <pre>
* An after-the-fact computed summary
* </pre>
*
* <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
*/
private $summary = null;
/**
* <pre>
* Information on success or failure of each worker
* </pre>
*
* <code>repeated bool client_success = 7;</code>
*/
private $client_success;
/**
* <code>repeated bool server_success = 8;</code>
*/
private $server_success;
/**
* <pre>
* Number of failed requests (one row per status code seen)
* </pre>
*
* <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
*/
private $request_results;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* Inputs used to run the scenario.
* </pre>
*
* <code>.grpc.testing.Scenario scenario = 1;</code>
*/
public function getScenario()
{
return $this->scenario;
}
/**
* <pre>
* Inputs used to run the scenario.
* </pre>
*
* <code>.grpc.testing.Scenario scenario = 1;</code>
*/
public function setScenario(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Scenario::class);
$this->scenario = $var;
}
/**
* <pre>
* Histograms from all clients merged into one histogram.
* </pre>
*
* <code>.grpc.testing.HistogramData latencies = 2;</code>
*/
public function getLatencies()
{
return $this->latencies;
}
/**
* <pre>
* Histograms from all clients merged into one histogram.
* </pre>
*
* <code>.grpc.testing.HistogramData latencies = 2;</code>
*/
public function setLatencies(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\HistogramData::class);
$this->latencies = $var;
}
/**
* <pre>
* Client stats for each client
* </pre>
*
* <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
*/
public function getClientStats()
{
return $this->client_stats;
}
/**
* <pre>
* Client stats for each client
* </pre>
*
* <code>repeated .grpc.testing.ClientStats client_stats = 3;</code>
*/
public function setClientStats(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\ClientStats::class);
$this->client_stats = $var;
}
/**
* <pre>
* Server stats for each server
* </pre>
*
* <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
*/
public function getServerStats()
{
return $this->server_stats;
}
/**
* <pre>
* Server stats for each server
* </pre>
*
* <code>repeated .grpc.testing.ServerStats server_stats = 4;</code>
*/
public function setServerStats(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\ServerStats::class);
$this->server_stats = $var;
}
/**
* <pre>
* Number of cores available to each server
* </pre>
*
* <code>repeated int32 server_cores = 5;</code>
*/
public function getServerCores()
{
return $this->server_cores;
}
/**
* <pre>
* Number of cores available to each server
* </pre>
*
* <code>repeated int32 server_cores = 5;</code>
*/
public function setServerCores(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->server_cores = $var;
}
/**
* <pre>
* An after-the-fact computed summary
* </pre>
*
* <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
*/
public function getSummary()
{
return $this->summary;
}
/**
* <pre>
* An after-the-fact computed summary
* </pre>
*
* <code>.grpc.testing.ScenarioResultSummary summary = 6;</code>
*/
public function setSummary(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ScenarioResultSummary::class);
$this->summary = $var;
}
/**
* <pre>
* Information on success or failure of each worker
* </pre>
*
* <code>repeated bool client_success = 7;</code>
*/
public function getClientSuccess()
{
return $this->client_success;
}
/**
* <pre>
* Information on success or failure of each worker
* </pre>
*
* <code>repeated bool client_success = 7;</code>
*/
public function setClientSuccess(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::BOOL);
$this->client_success = $var;
}
/**
* <code>repeated bool server_success = 8;</code>
*/
public function getServerSuccess()
{
return $this->server_success;
}
/**
* <code>repeated bool server_success = 8;</code>
*/
public function setServerSuccess(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::BOOL);
$this->server_success = $var;
}
/**
* <pre>
* Number of failed requests (one row per status code seen)
* </pre>
*
* <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
*/
public function getRequestResults()
{
return $this->request_results;
}
/**
* <pre>
* Number of failed requests (one row per status code seen)
* </pre>
*
* <code>repeated .grpc.testing.RequestResultCount request_results = 9;</code>
*/
public function setRequestResults(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\RequestResultCount::class);
$this->request_results = $var;
}
}

@ -0,0 +1,430 @@
<?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;
/**
* <pre>
* Basic summary that can be computed from ClientStats and ServerStats
* once the scenario has finished.
* </pre>
*
* Protobuf type <code>grpc.testing.ScenarioResultSummary</code>
*/
class ScenarioResultSummary extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Total number of operations per second over all clients.
* </pre>
*
* <code>double qps = 1;</code>
*/
private $qps = 0.0;
/**
* <pre>
* QPS per one server core.
* </pre>
*
* <code>double qps_per_server_core = 2;</code>
*/
private $qps_per_server_core = 0.0;
/**
* <pre>
* server load based on system_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double server_system_time = 3;</code>
*/
private $server_system_time = 0.0;
/**
* <pre>
* server load based on user_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double server_user_time = 4;</code>
*/
private $server_user_time = 0.0;
/**
* <pre>
* client load based on system_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double client_system_time = 5;</code>
*/
private $client_system_time = 0.0;
/**
* <pre>
* client load based on user_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double client_user_time = 6;</code>
*/
private $client_user_time = 0.0;
/**
* <pre>
* X% latency percentiles (in nanoseconds)
* </pre>
*
* <code>double latency_50 = 7;</code>
*/
private $latency_50 = 0.0;
/**
* <code>double latency_90 = 8;</code>
*/
private $latency_90 = 0.0;
/**
* <code>double latency_95 = 9;</code>
*/
private $latency_95 = 0.0;
/**
* <code>double latency_99 = 10;</code>
*/
private $latency_99 = 0.0;
/**
* <code>double latency_999 = 11;</code>
*/
private $latency_999 = 0.0;
/**
* <pre>
* server cpu usage percentage
* </pre>
*
* <code>double server_cpu_usage = 12;</code>
*/
private $server_cpu_usage = 0.0;
/**
* <pre>
* Number of requests that succeeded/failed
* </pre>
*
* <code>double successful_requests_per_second = 13;</code>
*/
private $successful_requests_per_second = 0.0;
/**
* <code>double failed_requests_per_second = 14;</code>
*/
private $failed_requests_per_second = 0.0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <pre>
* Total number of operations per second over all clients.
* </pre>
*
* <code>double qps = 1;</code>
*/
public function getQps()
{
return $this->qps;
}
/**
* <pre>
* Total number of operations per second over all clients.
* </pre>
*
* <code>double qps = 1;</code>
*/
public function setQps($var)
{
GPBUtil::checkDouble($var);
$this->qps = $var;
}
/**
* <pre>
* QPS per one server core.
* </pre>
*
* <code>double qps_per_server_core = 2;</code>
*/
public function getQpsPerServerCore()
{
return $this->qps_per_server_core;
}
/**
* <pre>
* QPS per one server core.
* </pre>
*
* <code>double qps_per_server_core = 2;</code>
*/
public function setQpsPerServerCore($var)
{
GPBUtil::checkDouble($var);
$this->qps_per_server_core = $var;
}
/**
* <pre>
* server load based on system_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double server_system_time = 3;</code>
*/
public function getServerSystemTime()
{
return $this->server_system_time;
}
/**
* <pre>
* server load based on system_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double server_system_time = 3;</code>
*/
public function setServerSystemTime($var)
{
GPBUtil::checkDouble($var);
$this->server_system_time = $var;
}
/**
* <pre>
* server load based on user_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double server_user_time = 4;</code>
*/
public function getServerUserTime()
{
return $this->server_user_time;
}
/**
* <pre>
* server load based on user_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double server_user_time = 4;</code>
*/
public function setServerUserTime($var)
{
GPBUtil::checkDouble($var);
$this->server_user_time = $var;
}
/**
* <pre>
* client load based on system_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double client_system_time = 5;</code>
*/
public function getClientSystemTime()
{
return $this->client_system_time;
}
/**
* <pre>
* client load based on system_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double client_system_time = 5;</code>
*/
public function setClientSystemTime($var)
{
GPBUtil::checkDouble($var);
$this->client_system_time = $var;
}
/**
* <pre>
* client load based on user_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double client_user_time = 6;</code>
*/
public function getClientUserTime()
{
return $this->client_user_time;
}
/**
* <pre>
* client load based on user_time (0.85 =&gt; 85%)
* </pre>
*
* <code>double client_user_time = 6;</code>
*/
public function setClientUserTime($var)
{
GPBUtil::checkDouble($var);
$this->client_user_time = $var;
}
/**
* <pre>
* X% latency percentiles (in nanoseconds)
* </pre>
*
* <code>double latency_50 = 7;</code>
*/
public function getLatency50()
{
return $this->latency_50;
}
/**
* <pre>
* X% latency percentiles (in nanoseconds)
* </pre>
*
* <code>double latency_50 = 7;</code>
*/
public function setLatency50($var)
{
GPBUtil::checkDouble($var);
$this->latency_50 = $var;
}
/**
* <code>double latency_90 = 8;</code>
*/
public function getLatency90()
{
return $this->latency_90;
}
/**
* <code>double latency_90 = 8;</code>
*/
public function setLatency90($var)
{
GPBUtil::checkDouble($var);
$this->latency_90 = $var;
}
/**
* <code>double latency_95 = 9;</code>
*/
public function getLatency95()
{
return $this->latency_95;
}
/**
* <code>double latency_95 = 9;</code>
*/
public function setLatency95($var)
{
GPBUtil::checkDouble($var);
$this->latency_95 = $var;
}
/**
* <code>double latency_99 = 10;</code>
*/
public function getLatency99()
{
return $this->latency_99;
}
/**
* <code>double latency_99 = 10;</code>
*/
public function setLatency99($var)
{
GPBUtil::checkDouble($var);
$this->latency_99 = $var;
}
/**
* <code>double latency_999 = 11;</code>
*/
public function getLatency999()
{
return $this->latency_999;
}
/**
* <code>double latency_999 = 11;</code>
*/
public function setLatency999($var)
{
GPBUtil::checkDouble($var);
$this->latency_999 = $var;
}
/**
* <pre>
* server cpu usage percentage
* </pre>
*
* <code>double server_cpu_usage = 12;</code>
*/
public function getServerCpuUsage()
{
return $this->server_cpu_usage;
}
/**
* <pre>
* server cpu usage percentage
* </pre>
*
* <code>double server_cpu_usage = 12;</code>
*/
public function setServerCpuUsage($var)
{
GPBUtil::checkDouble($var);
$this->server_cpu_usage = $var;
}
/**
* <pre>
* Number of requests that succeeded/failed
* </pre>
*
* <code>double successful_requests_per_second = 13;</code>
*/
public function getSuccessfulRequestsPerSecond()
{
return $this->successful_requests_per_second;
}
/**
* <pre>
* Number of requests that succeeded/failed
* </pre>
*
* <code>double successful_requests_per_second = 13;</code>
*/
public function setSuccessfulRequestsPerSecond($var)
{
GPBUtil::checkDouble($var);
$this->successful_requests_per_second = $var;
}
/**
* <code>double failed_requests_per_second = 14;</code>
*/
public function getFailedRequestsPerSecond()
{
return $this->failed_requests_per_second;
}
/**
* <code>double failed_requests_per_second = 14;</code>
*/
public function setFailedRequestsPerSecond($var)
{
GPBUtil::checkDouble($var);
$this->failed_requests_per_second = $var;
}
}

@ -0,0 +1,48 @@
<?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;
/**
* <pre>
* A set of scenarios to be run with qps_json_driver
* </pre>
*
* Protobuf type <code>grpc.testing.Scenarios</code>
*/
class Scenarios extends \Google\Protobuf\Internal\Message
{
/**
* <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
*/
private $scenarios;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
*/
public function getScenarios()
{
return $this->scenarios;
}
/**
* <code>repeated .grpc.testing.Scenario scenarios = 1;</code>
*/
public function setScenarios(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\Scenario::class);
$this->scenarios = $var;
}
}

@ -0,0 +1,69 @@
<?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;
/**
* <pre>
* presence of SecurityParams implies use of TLS
* </pre>
*
* Protobuf type <code>grpc.testing.SecurityParams</code>
*/
class SecurityParams extends \Google\Protobuf\Internal\Message
{
/**
* <code>bool use_test_ca = 1;</code>
*/
private $use_test_ca = false;
/**
* <code>string server_host_override = 2;</code>
*/
private $server_host_override = '';
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>bool use_test_ca = 1;</code>
*/
public function getUseTestCa()
{
return $this->use_test_ca;
}
/**
* <code>bool use_test_ca = 1;</code>
*/
public function setUseTestCa($var)
{
GPBUtil::checkBool($var);
$this->use_test_ca = $var;
}
/**
* <code>string server_host_override = 2;</code>
*/
public function getServerHostOverride()
{
return $this->server_host_override;
}
/**
* <code>string server_host_override = 2;</code>
*/
public function setServerHostOverride($var)
{
GPBUtil::checkString($var, True);
$this->server_host_override = $var;
}
}

@ -0,0 +1,63 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ServerArgs</code>
*/
class ServerArgs extends \Google\Protobuf\Internal\Message
{
protected $argtype;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ServerConfig setup = 1;</code>
*/
public function getSetup()
{
return $this->readOneof(1);
}
/**
* <code>.grpc.testing.ServerConfig setup = 1;</code>
*/
public function setSetup(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ServerConfig::class);
$this->writeOneof(1, $var);
}
/**
* <code>.grpc.testing.Mark mark = 2;</code>
*/
public function getMark()
{
return $this->readOneof(2);
}
/**
* <code>.grpc.testing.Mark mark = 2;</code>
*/
public function setMark(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Mark::class);
$this->writeOneof(2, $var);
}
public function getArgtype()
{
return $this->whichOneof("argtype");
}
}

@ -0,0 +1,305 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ServerConfig</code>
*/
class ServerConfig extends \Google\Protobuf\Internal\Message
{
/**
* <code>.grpc.testing.ServerType server_type = 1;</code>
*/
private $server_type = 0;
/**
* <code>.grpc.testing.SecurityParams security_params = 2;</code>
*/
private $security_params = null;
/**
* <pre>
* Port on which to listen. Zero means pick unused port.
* </pre>
*
* <code>int32 port = 4;</code>
*/
private $port = 0;
/**
* <pre>
* Only for async server. Number of threads used to serve the requests.
* </pre>
*
* <code>int32 async_server_threads = 7;</code>
*/
private $async_server_threads = 0;
/**
* <pre>
* Specify the number of cores to limit server to, if desired
* </pre>
*
* <code>int32 core_limit = 8;</code>
*/
private $core_limit = 0;
/**
* <pre>
* payload config, used in generic server.
* Note this must NOT be used in proto (non-generic) servers. For proto servers,
* 'response sizes' must be configured from the 'response_size' field of the
* 'SimpleRequest' objects in RPC requests.
* </pre>
*
* <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
*/
private $payload_config = null;
/**
* <pre>
* Specify the cores we should run the server on, if desired
* </pre>
*
* <code>repeated int32 core_list = 10;</code>
*/
private $core_list;
/**
* <pre>
* If we use an OTHER_SERVER client_type, this string gives more detail
* </pre>
*
* <code>string other_server_api = 11;</code>
*/
private $other_server_api = '';
/**
* <pre>
* Buffer pool size (no buffer pool specified if unset)
* </pre>
*
* <code>int32 resource_quota_size = 1001;</code>
*/
private $resource_quota_size = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ServerType server_type = 1;</code>
*/
public function getServerType()
{
return $this->server_type;
}
/**
* <code>.grpc.testing.ServerType server_type = 1;</code>
*/
public function setServerType($var)
{
GPBUtil::checkEnum($var, \Grpc\Testing\ServerType::class);
$this->server_type = $var;
}
/**
* <code>.grpc.testing.SecurityParams security_params = 2;</code>
*/
public function getSecurityParams()
{
return $this->security_params;
}
/**
* <code>.grpc.testing.SecurityParams security_params = 2;</code>
*/
public function setSecurityParams(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\SecurityParams::class);
$this->security_params = $var;
}
/**
* <pre>
* Port on which to listen. Zero means pick unused port.
* </pre>
*
* <code>int32 port = 4;</code>
*/
public function getPort()
{
return $this->port;
}
/**
* <pre>
* Port on which to listen. Zero means pick unused port.
* </pre>
*
* <code>int32 port = 4;</code>
*/
public function setPort($var)
{
GPBUtil::checkInt32($var);
$this->port = $var;
}
/**
* <pre>
* Only for async server. Number of threads used to serve the requests.
* </pre>
*
* <code>int32 async_server_threads = 7;</code>
*/
public function getAsyncServerThreads()
{
return $this->async_server_threads;
}
/**
* <pre>
* Only for async server. Number of threads used to serve the requests.
* </pre>
*
* <code>int32 async_server_threads = 7;</code>
*/
public function setAsyncServerThreads($var)
{
GPBUtil::checkInt32($var);
$this->async_server_threads = $var;
}
/**
* <pre>
* Specify the number of cores to limit server to, if desired
* </pre>
*
* <code>int32 core_limit = 8;</code>
*/
public function getCoreLimit()
{
return $this->core_limit;
}
/**
* <pre>
* Specify the number of cores to limit server to, if desired
* </pre>
*
* <code>int32 core_limit = 8;</code>
*/
public function setCoreLimit($var)
{
GPBUtil::checkInt32($var);
$this->core_limit = $var;
}
/**
* <pre>
* payload config, used in generic server.
* Note this must NOT be used in proto (non-generic) servers. For proto servers,
* 'response sizes' must be configured from the 'response_size' field of the
* 'SimpleRequest' objects in RPC requests.
* </pre>
*
* <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
*/
public function getPayloadConfig()
{
return $this->payload_config;
}
/**
* <pre>
* payload config, used in generic server.
* Note this must NOT be used in proto (non-generic) servers. For proto servers,
* 'response sizes' must be configured from the 'response_size' field of the
* 'SimpleRequest' objects in RPC requests.
* </pre>
*
* <code>.grpc.testing.PayloadConfig payload_config = 9;</code>
*/
public function setPayloadConfig(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\PayloadConfig::class);
$this->payload_config = $var;
}
/**
* <pre>
* Specify the cores we should run the server on, if desired
* </pre>
*
* <code>repeated int32 core_list = 10;</code>
*/
public function getCoreList()
{
return $this->core_list;
}
/**
* <pre>
* Specify the cores we should run the server on, if desired
* </pre>
*
* <code>repeated int32 core_list = 10;</code>
*/
public function setCoreList(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::INT32);
$this->core_list = $var;
}
/**
* <pre>
* If we use an OTHER_SERVER client_type, this string gives more detail
* </pre>
*
* <code>string other_server_api = 11;</code>
*/
public function getOtherServerApi()
{
return $this->other_server_api;
}
/**
* <pre>
* If we use an OTHER_SERVER client_type, this string gives more detail
* </pre>
*
* <code>string other_server_api = 11;</code>
*/
public function setOtherServerApi($var)
{
GPBUtil::checkString($var, True);
$this->other_server_api = $var;
}
/**
* <pre>
* Buffer pool size (no buffer pool specified if unset)
* </pre>
*
* <code>int32 resource_quota_size = 1001;</code>
*/
public function getResourceQuotaSize()
{
return $this->resource_quota_size;
}
/**
* <pre>
* Buffer pool size (no buffer pool specified if unset)
* </pre>
*
* <code>int32 resource_quota_size = 1001;</code>
*/
public function setResourceQuotaSize($var)
{
GPBUtil::checkInt32($var);
$this->resource_quota_size = $var;
}
}

@ -0,0 +1,191 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/stats.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.ServerStats</code>
*/
class ServerStats extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* wall clock time change in seconds since last reset
* </pre>
*
* <code>double time_elapsed = 1;</code>
*/
private $time_elapsed = 0.0;
/**
* <pre>
* change in user time (in seconds) used by the server since last reset
* </pre>
*
* <code>double time_user = 2;</code>
*/
private $time_user = 0.0;
/**
* <pre>
* change in server time (in seconds) used by the server process and all
* threads since last reset
* </pre>
*
* <code>double time_system = 3;</code>
*/
private $time_system = 0.0;
/**
* <pre>
* change in total cpu time of the server (data from proc/stat)
* </pre>
*
* <code>uint64 total_cpu_time = 4;</code>
*/
private $total_cpu_time = 0;
/**
* <pre>
* change in idle time of the server (data from proc/stat)
* </pre>
*
* <code>uint64 idle_cpu_time = 5;</code>
*/
private $idle_cpu_time = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Stats::initOnce();
parent::__construct();
}
/**
* <pre>
* wall clock time change in seconds since last reset
* </pre>
*
* <code>double time_elapsed = 1;</code>
*/
public function getTimeElapsed()
{
return $this->time_elapsed;
}
/**
* <pre>
* wall clock time change in seconds since last reset
* </pre>
*
* <code>double time_elapsed = 1;</code>
*/
public function setTimeElapsed($var)
{
GPBUtil::checkDouble($var);
$this->time_elapsed = $var;
}
/**
* <pre>
* change in user time (in seconds) used by the server since last reset
* </pre>
*
* <code>double time_user = 2;</code>
*/
public function getTimeUser()
{
return $this->time_user;
}
/**
* <pre>
* change in user time (in seconds) used by the server since last reset
* </pre>
*
* <code>double time_user = 2;</code>
*/
public function setTimeUser($var)
{
GPBUtil::checkDouble($var);
$this->time_user = $var;
}
/**
* <pre>
* change in server time (in seconds) used by the server process and all
* threads since last reset
* </pre>
*
* <code>double time_system = 3;</code>
*/
public function getTimeSystem()
{
return $this->time_system;
}
/**
* <pre>
* change in server time (in seconds) used by the server process and all
* threads since last reset
* </pre>
*
* <code>double time_system = 3;</code>
*/
public function setTimeSystem($var)
{
GPBUtil::checkDouble($var);
$this->time_system = $var;
}
/**
* <pre>
* change in total cpu time of the server (data from proc/stat)
* </pre>
*
* <code>uint64 total_cpu_time = 4;</code>
*/
public function getTotalCpuTime()
{
return $this->total_cpu_time;
}
/**
* <pre>
* change in total cpu time of the server (data from proc/stat)
* </pre>
*
* <code>uint64 total_cpu_time = 4;</code>
*/
public function setTotalCpuTime($var)
{
GPBUtil::checkUint64($var);
$this->total_cpu_time = $var;
}
/**
* <pre>
* change in idle time of the server (data from proc/stat)
* </pre>
*
* <code>uint64 idle_cpu_time = 5;</code>
*/
public function getIdleCpuTime()
{
return $this->idle_cpu_time;
}
/**
* <pre>
* change in idle time of the server (data from proc/stat)
* </pre>
*
* <code>uint64 idle_cpu_time = 5;</code>
*/
public function setIdleCpuTime($var)
{
GPBUtil::checkUint64($var);
$this->idle_cpu_time = $var;
}
}

@ -0,0 +1,110 @@
<?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;
/**
* Protobuf type <code>grpc.testing.ServerStatus</code>
*/
class ServerStatus extends \Google\Protobuf\Internal\Message
{
/**
* <code>.grpc.testing.ServerStats stats = 1;</code>
*/
private $stats = null;
/**
* <pre>
* the port bound by the server
* </pre>
*
* <code>int32 port = 2;</code>
*/
private $port = 0;
/**
* <pre>
* Number of cores available to the server
* </pre>
*
* <code>int32 cores = 3;</code>
*/
private $cores = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
/**
* <code>.grpc.testing.ServerStats stats = 1;</code>
*/
public function getStats()
{
return $this->stats;
}
/**
* <code>.grpc.testing.ServerStats stats = 1;</code>
*/
public function setStats(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\ServerStats::class);
$this->stats = $var;
}
/**
* <pre>
* the port bound by the server
* </pre>
*
* <code>int32 port = 2;</code>
*/
public function getPort()
{
return $this->port;
}
/**
* <pre>
* the port bound by the server
* </pre>
*
* <code>int32 port = 2;</code>
*/
public function setPort($var)
{
GPBUtil::checkInt32($var);
$this->port = $var;
}
/**
* <pre>
* Number of cores available to the server
* </pre>
*
* <code>int32 cores = 3;</code>
*/
public function getCores()
{
return $this->cores;
}
/**
* <pre>
* Number of cores available to the server
* </pre>
*
* <code>int32 cores = 3;</code>
*/
public function setCores($var)
{
GPBUtil::checkInt32($var);
$this->cores = $var;
}
}

@ -0,0 +1,33 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/control.proto
namespace Grpc\Testing;
/**
* Protobuf enum <code>grpc.testing.ServerType</code>
*/
class ServerType
{
/**
* <code>SYNC_SERVER = 0;</code>
*/
const SYNC_SERVER = 0;
/**
* <code>ASYNC_SERVER = 1;</code>
*/
const ASYNC_SERVER = 1;
/**
* <code>ASYNC_GENERIC_SERVER = 2;</code>
*/
const ASYNC_GENERIC_SERVER = 2;
/**
* <pre>
* used for some language-specific variants
* </pre>
*
* <code>OTHER_SERVER = 3;</code>
*/
const OTHER_SERVER = 3;
}

@ -0,0 +1,65 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/payloads.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* Protobuf type <code>grpc.testing.SimpleProtoParams</code>
*/
class SimpleProtoParams extends \Google\Protobuf\Internal\Message
{
/**
* <code>int32 req_size = 1;</code>
*/
private $req_size = 0;
/**
* <code>int32 resp_size = 2;</code>
*/
private $resp_size = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Payloads::initOnce();
parent::__construct();
}
/**
* <code>int32 req_size = 1;</code>
*/
public function getReqSize()
{
return $this->req_size;
}
/**
* <code>int32 req_size = 1;</code>
*/
public function setReqSize($var)
{
GPBUtil::checkInt32($var);
$this->req_size = $var;
}
/**
* <code>int32 resp_size = 2;</code>
*/
public function getRespSize()
{
return $this->resp_size;
}
/**
* <code>int32 resp_size = 2;</code>
*/
public function setRespSize($var)
{
GPBUtil::checkInt32($var);
$this->resp_size = $var;
}
}

@ -0,0 +1,306 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Unary request.
* </pre>
*
* Protobuf type <code>grpc.testing.SimpleRequest</code>
*/
class SimpleRequest extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* Desired payload type in the response from the server.
* If response_type is RANDOM, server randomly chooses one from other formats.
* </pre>
*
* <code>.grpc.testing.PayloadType response_type = 1;</code>
*/
private $response_type = 0;
/**
* <pre>
* Desired payload size in the response from the server.
* </pre>
*
* <code>int32 response_size = 2;</code>
*/
private $response_size = 0;
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 3;</code>
*/
private $payload = null;
/**
* <pre>
* Whether SimpleResponse should include username.
* </pre>
*
* <code>bool fill_username = 4;</code>
*/
private $fill_username = false;
/**
* <pre>
* Whether SimpleResponse should include OAuth scope.
* </pre>
*
* <code>bool fill_oauth_scope = 5;</code>
*/
private $fill_oauth_scope = false;
/**
* <pre>
* Whether to request the server to compress the response. This field is
* "nullable" in order to interoperate seamlessly with clients not able to
* implement the full compression tests by introspecting the call to verify
* the response's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue response_compressed = 6;</code>
*/
private $response_compressed = null;
/**
* <pre>
* Whether server should return a given status
* </pre>
*
* <code>.grpc.testing.EchoStatus response_status = 7;</code>
*/
private $response_status = null;
/**
* <pre>
* Whether the server should expect this request to be compressed.
* </pre>
*
* <code>.grpc.testing.BoolValue expect_compressed = 8;</code>
*/
private $expect_compressed = null;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* Desired payload type in the response from the server.
* If response_type is RANDOM, server randomly chooses one from other formats.
* </pre>
*
* <code>.grpc.testing.PayloadType response_type = 1;</code>
*/
public function getResponseType()
{
return $this->response_type;
}
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* Desired payload type in the response from the server.
* If response_type is RANDOM, server randomly chooses one from other formats.
* </pre>
*
* <code>.grpc.testing.PayloadType response_type = 1;</code>
*/
public function setResponseType($var)
{
GPBUtil::checkEnum($var, \Grpc\Testing\PayloadType::class);
$this->response_type = $var;
}
/**
* <pre>
* Desired payload size in the response from the server.
* </pre>
*
* <code>int32 response_size = 2;</code>
*/
public function getResponseSize()
{
return $this->response_size;
}
/**
* <pre>
* Desired payload size in the response from the server.
* </pre>
*
* <code>int32 response_size = 2;</code>
*/
public function setResponseSize($var)
{
GPBUtil::checkInt32($var);
$this->response_size = $var;
}
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 3;</code>
*/
public function getPayload()
{
return $this->payload;
}
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 3;</code>
*/
public function setPayload(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Payload::class);
$this->payload = $var;
}
/**
* <pre>
* Whether SimpleResponse should include username.
* </pre>
*
* <code>bool fill_username = 4;</code>
*/
public function getFillUsername()
{
return $this->fill_username;
}
/**
* <pre>
* Whether SimpleResponse should include username.
* </pre>
*
* <code>bool fill_username = 4;</code>
*/
public function setFillUsername($var)
{
GPBUtil::checkBool($var);
$this->fill_username = $var;
}
/**
* <pre>
* Whether SimpleResponse should include OAuth scope.
* </pre>
*
* <code>bool fill_oauth_scope = 5;</code>
*/
public function getFillOauthScope()
{
return $this->fill_oauth_scope;
}
/**
* <pre>
* Whether SimpleResponse should include OAuth scope.
* </pre>
*
* <code>bool fill_oauth_scope = 5;</code>
*/
public function setFillOauthScope($var)
{
GPBUtil::checkBool($var);
$this->fill_oauth_scope = $var;
}
/**
* <pre>
* Whether to request the server to compress the response. This field is
* "nullable" in order to interoperate seamlessly with clients not able to
* implement the full compression tests by introspecting the call to verify
* the response's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue response_compressed = 6;</code>
*/
public function getResponseCompressed()
{
return $this->response_compressed;
}
/**
* <pre>
* Whether to request the server to compress the response. This field is
* "nullable" in order to interoperate seamlessly with clients not able to
* implement the full compression tests by introspecting the call to verify
* the response's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue response_compressed = 6;</code>
*/
public function setResponseCompressed(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\BoolValue::class);
$this->response_compressed = $var;
}
/**
* <pre>
* Whether server should return a given status
* </pre>
*
* <code>.grpc.testing.EchoStatus response_status = 7;</code>
*/
public function getResponseStatus()
{
return $this->response_status;
}
/**
* <pre>
* Whether server should return a given status
* </pre>
*
* <code>.grpc.testing.EchoStatus response_status = 7;</code>
*/
public function setResponseStatus(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\EchoStatus::class);
$this->response_status = $var;
}
/**
* <pre>
* Whether the server should expect this request to be compressed.
* </pre>
*
* <code>.grpc.testing.BoolValue expect_compressed = 8;</code>
*/
public function getExpectCompressed()
{
return $this->expect_compressed;
}
/**
* <pre>
* Whether the server should expect this request to be compressed.
* </pre>
*
* <code>.grpc.testing.BoolValue expect_compressed = 8;</code>
*/
public function setExpectCompressed(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\BoolValue::class);
$this->expect_compressed = $var;
}
}

@ -0,0 +1,129 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Unary response, as configured by the request.
* </pre>
*
* Protobuf type <code>grpc.testing.SimpleResponse</code>
*/
class SimpleResponse extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Payload to increase message size.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
private $payload = null;
/**
* <pre>
* The user the request came from, for verifying authentication was
* successful when the client expected it.
* </pre>
*
* <code>string username = 2;</code>
*/
private $username = '';
/**
* <pre>
* OAuth scope.
* </pre>
*
* <code>string oauth_scope = 3;</code>
*/
private $oauth_scope = '';
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* Payload to increase message size.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
public function getPayload()
{
return $this->payload;
}
/**
* <pre>
* Payload to increase message size.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
public function setPayload(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Payload::class);
$this->payload = $var;
}
/**
* <pre>
* The user the request came from, for verifying authentication was
* successful when the client expected it.
* </pre>
*
* <code>string username = 2;</code>
*/
public function getUsername()
{
return $this->username;
}
/**
* <pre>
* The user the request came from, for verifying authentication was
* successful when the client expected it.
* </pre>
*
* <code>string username = 2;</code>
*/
public function setUsername($var)
{
GPBUtil::checkString($var, True);
$this->username = $var;
}
/**
* <pre>
* OAuth scope.
* </pre>
*
* <code>string oauth_scope = 3;</code>
*/
public function getOauthScope()
{
return $this->oauth_scope;
}
/**
* <pre>
* OAuth scope.
* </pre>
*
* <code>string oauth_scope = 3;</code>
*/
public function setOauthScope($var)
{
GPBUtil::checkString($var, True);
$this->oauth_scope = $var;
}
}

@ -0,0 +1,102 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Client-streaming request.
* </pre>
*
* Protobuf type <code>grpc.testing.StreamingInputCallRequest</code>
*/
class StreamingInputCallRequest extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
private $payload = null;
/**
* <pre>
* Whether the server should expect this request to be compressed. This field
* is "nullable" in order to interoperate seamlessly with servers not able to
* implement the full compression tests by introspecting the call to verify
* the request's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue expect_compressed = 2;</code>
*/
private $expect_compressed = null;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
public function getPayload()
{
return $this->payload;
}
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
public function setPayload(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Payload::class);
$this->payload = $var;
}
/**
* <pre>
* Whether the server should expect this request to be compressed. This field
* is "nullable" in order to interoperate seamlessly with servers not able to
* implement the full compression tests by introspecting the call to verify
* the request's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue expect_compressed = 2;</code>
*/
public function getExpectCompressed()
{
return $this->expect_compressed;
}
/**
* <pre>
* Whether the server should expect this request to be compressed. This field
* is "nullable" in order to interoperate seamlessly with servers not able to
* implement the full compression tests by introspecting the call to verify
* the request's compression status.
* </pre>
*
* <code>.grpc.testing.BoolValue expect_compressed = 2;</code>
*/
public function setExpectCompressed(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\BoolValue::class);
$this->expect_compressed = $var;
}
}

@ -0,0 +1,60 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Client-streaming response.
* </pre>
*
* Protobuf type <code>grpc.testing.StreamingInputCallResponse</code>
*/
class StreamingInputCallResponse extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Aggregated size of payloads received from the client.
* </pre>
*
* <code>int32 aggregated_payload_size = 1;</code>
*/
private $aggregated_payload_size = 0;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* Aggregated size of payloads received from the client.
* </pre>
*
* <code>int32 aggregated_payload_size = 1;</code>
*/
public function getAggregatedPayloadSize()
{
return $this->aggregated_payload_size;
}
/**
* <pre>
* Aggregated size of payloads received from the client.
* </pre>
*
* <code>int32 aggregated_payload_size = 1;</code>
*/
public function setAggregatedPayloadSize($var)
{
GPBUtil::checkInt32($var);
$this->aggregated_payload_size = $var;
}
}

@ -0,0 +1,171 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Server-streaming request.
* </pre>
*
* Protobuf type <code>grpc.testing.StreamingOutputCallRequest</code>
*/
class StreamingOutputCallRequest extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* Desired payload type in the response from the server.
* If response_type is RANDOM, the payload from each response in the stream
* might be of different types. This is to simulate a mixed type of payload
* stream.
* </pre>
*
* <code>.grpc.testing.PayloadType response_type = 1;</code>
*/
private $response_type = 0;
/**
* <pre>
* Configuration for each expected response message.
* </pre>
*
* <code>repeated .grpc.testing.ResponseParameters response_parameters = 2;</code>
*/
private $response_parameters;
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 3;</code>
*/
private $payload = null;
/**
* <pre>
* Whether server should return a given status
* </pre>
*
* <code>.grpc.testing.EchoStatus response_status = 7;</code>
*/
private $response_status = null;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* Desired payload type in the response from the server.
* If response_type is RANDOM, the payload from each response in the stream
* might be of different types. This is to simulate a mixed type of payload
* stream.
* </pre>
*
* <code>.grpc.testing.PayloadType response_type = 1;</code>
*/
public function getResponseType()
{
return $this->response_type;
}
/**
* <pre>
* DEPRECATED, don't use. To be removed shortly.
* Desired payload type in the response from the server.
* If response_type is RANDOM, the payload from each response in the stream
* might be of different types. This is to simulate a mixed type of payload
* stream.
* </pre>
*
* <code>.grpc.testing.PayloadType response_type = 1;</code>
*/
public function setResponseType($var)
{
GPBUtil::checkEnum($var, \Grpc\Testing\PayloadType::class);
$this->response_type = $var;
}
/**
* <pre>
* Configuration for each expected response message.
* </pre>
*
* <code>repeated .grpc.testing.ResponseParameters response_parameters = 2;</code>
*/
public function getResponseParameters()
{
return $this->response_parameters;
}
/**
* <pre>
* Configuration for each expected response message.
* </pre>
*
* <code>repeated .grpc.testing.ResponseParameters response_parameters = 2;</code>
*/
public function setResponseParameters(&$var)
{
GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Grpc\Testing\ResponseParameters::class);
$this->response_parameters = $var;
}
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 3;</code>
*/
public function getPayload()
{
return $this->payload;
}
/**
* <pre>
* Optional input payload sent along with the request.
* </pre>
*
* <code>.grpc.testing.Payload payload = 3;</code>
*/
public function setPayload(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Payload::class);
$this->payload = $var;
}
/**
* <pre>
* Whether server should return a given status
* </pre>
*
* <code>.grpc.testing.EchoStatus response_status = 7;</code>
*/
public function getResponseStatus()
{
return $this->response_status;
}
/**
* <pre>
* Whether server should return a given status
* </pre>
*
* <code>.grpc.testing.EchoStatus response_status = 7;</code>
*/
public function setResponseStatus(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\EchoStatus::class);
$this->response_status = $var;
}
}

@ -0,0 +1,60 @@
<?php
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/messages.proto
namespace Grpc\Testing;
use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;
/**
* <pre>
* Server-streaming response, as configured by the request and parameters.
* </pre>
*
* Protobuf type <code>grpc.testing.StreamingOutputCallResponse</code>
*/
class StreamingOutputCallResponse extends \Google\Protobuf\Internal\Message
{
/**
* <pre>
* Payload to increase response size.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
private $payload = null;
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Messages::initOnce();
parent::__construct();
}
/**
* <pre>
* Payload to increase response size.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
public function getPayload()
{
return $this->payload;
}
/**
* <pre>
* Payload to increase response size.
* </pre>
*
* <code>.grpc.testing.Payload payload = 1;</code>
*/
public function setPayload(&$var)
{
GPBUtil::checkMessage($var, \Grpc\Testing\Payload::class);
$this->payload = $var;
}
}

@ -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;
/**
* Protobuf type <code>grpc.testing.Void</code>
*/
class Void extends \Google\Protobuf\Internal\Message
{
public function __construct() {
\GPBMetadata\Src\Proto\Grpc\Testing\Control::initOnce();
parent::__construct();
}
}

@ -0,0 +1,111 @@
<?php
// GENERATED CODE -- DO NOT EDIT!
// Original file comments:
// Copyright 2015, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// An integration test service that covers all the method signature permutations
// of unary/streaming requests/responses.
namespace Grpc\Testing {
class WorkerServiceClient 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);
}
/**
* Start server with specified workload.
* First request sent specifies the ServerConfig followed by ServerStatus
* response. After that, a "Mark" can be sent anytime to request the latest
* stats. Closing the stream will initiate shutdown of the test server
* and once the shutdown has finished, the OK status is sent to terminate
* this RPC.
* @param array $metadata metadata
* @param array $options call options
*/
public function RunServer($metadata = [], $options = []) {
return $this->_bidiRequest('/grpc.testing.WorkerService/RunServer',
['\Grpc\Testing\ServerStatus','decode'],
$metadata, $options);
}
/**
* Start client with specified workload.
* First request sent specifies the ClientConfig followed by ClientStatus
* response. After that, a "Mark" can be sent anytime to request the latest
* stats. Closing the stream will initiate shutdown of the test client
* and once the shutdown has finished, the OK status is sent to terminate
* this RPC.
* @param array $metadata metadata
* @param array $options call options
*/
public function RunClient($metadata = [], $options = []) {
return $this->_bidiRequest('/grpc.testing.WorkerService/RunClient',
['\Grpc\Testing\ClientStatus','decode'],
$metadata, $options);
}
/**
* Just return the core count - unary call
* @param \Grpc\Testing\CoreRequest $argument input argument
* @param array $metadata metadata
* @param array $options call options
*/
public function CoreCount(\Grpc\Testing\CoreRequest $argument,
$metadata = [], $options = []) {
return $this->_simpleRequest('/grpc.testing.WorkerService/CoreCount',
$argument,
['\Grpc\Testing\CoreResponse', 'decode'],
$metadata, $options);
}
/**
* Quit this worker
* @param \Grpc\Testing\Void $argument input argument
* @param array $metadata metadata
* @param array $options call options
*/
public function QuitWorker(\Grpc\Testing\Void $argument,
$metadata = [], $options = []) {
return $this->_simpleRequest('/grpc.testing.WorkerService/QuitWorker',
$argument,
['\Grpc\Testing\Void', 'decode'],
$metadata, $options);
}
}
}

@ -0,0 +1,44 @@
// Copyright 2017, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
import "src/proto/grpc/testing/control.proto";
package grpc.testing;
message ProxyStat {
double latency = 1;
}
service ProxyClientService {
rpc GetConfig(Void) returns (ClientConfig);
rpc ReportTime(stream ProxyStat) returns (Void);
}

@ -29,4 +29,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
VERSION='1.2.0.dev0' VERSION='1.3.0.dev0'

@ -29,4 +29,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
VERSION='1.2.0.dev0' VERSION='1.3.0.dev0'

@ -29,4 +29,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
VERSION='1.2.0.dev0' VERSION='1.3.0.dev0'

@ -29,4 +29,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
VERSION='1.2.0.dev0' VERSION='1.3.0.dev0'

@ -42,6 +42,7 @@ import sys
import tempfile import tempfile
import threading import threading
import unittest import unittest
import platform
import grpc import grpc
from grpc_tools import protoc from grpc_tools import protoc
@ -150,6 +151,8 @@ class CommonTestMixin(object):
self.assertEqual(expected_response, response) self.assertEqual(expected_response, response)
@unittest.skipIf(platform.python_implementation() == "PyPy",
"Skip test if run with PyPy")
class SameSeparateTest(unittest.TestCase, SeparateTestMixin): class SameSeparateTest(unittest.TestCase, SeparateTestMixin):
def setUp(self): def setUp(self):
@ -191,6 +194,8 @@ class SameSeparateTest(unittest.TestCase, SeparateTestMixin):
shutil.rmtree(self.directory) shutil.rmtree(self.directory)
@unittest.skipIf(platform.python_implementation() == "PyPy",
"Skip test if run with PyPy")
class SameCommonTest(unittest.TestCase, CommonTestMixin): class SameCommonTest(unittest.TestCase, CommonTestMixin):
def setUp(self): def setUp(self):
@ -228,6 +233,8 @@ class SameCommonTest(unittest.TestCase, CommonTestMixin):
shutil.rmtree(self.directory) shutil.rmtree(self.directory)
@unittest.skipIf(platform.python_implementation() == "PyPy",
"Skip test if run with PyPy")
class SplitCommonTest(unittest.TestCase, CommonTestMixin): class SplitCommonTest(unittest.TestCase, CommonTestMixin):
def setUp(self): def setUp(self):
@ -277,6 +284,8 @@ class SplitCommonTest(unittest.TestCase, CommonTestMixin):
shutil.rmtree(self.directory) shutil.rmtree(self.directory)
@unittest.skipIf(platform.python_implementation() == "PyPy",
"Skip test if run with PyPy")
class SplitSeparateTest(unittest.TestCase, SeparateTestMixin): class SplitSeparateTest(unittest.TestCase, SeparateTestMixin):
def setUp(self): def setUp(self):

@ -29,5 +29,5 @@
# GRPC contains the General RPC module. # GRPC contains the General RPC module.
module GRPC module GRPC
VERSION = '1.2.0.dev' VERSION = '1.3.0.dev'
end end

@ -0,0 +1,160 @@
#!/usr/bin/env ruby
# Copyright 2017, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Proxy of worker service implementation for running a PHP client
this_dir = File.expand_path(File.dirname(__FILE__))
lib_dir = File.join(File.dirname(this_dir), 'lib')
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
$LOAD_PATH.unshift(this_dir) unless $LOAD_PATH.include?(this_dir)
require 'grpc'
require 'optparse'
require 'histogram'
require 'etc'
require 'facter'
require 'qps-common'
require 'src/proto/grpc/testing/services_services_pb'
require 'src/proto/grpc/testing/proxy-service_services_pb'
class ProxyBenchmarkClientServiceImpl < Grpc::Testing::ProxyClientService::Service
def initialize(port)
@mytarget = "localhost:" + port.to_s
end
def setup(config)
@config = config
@histres = config.histogram_params.resolution
@histmax = config.histogram_params.max_possible
@histogram = Histogram.new(@histres, @histmax)
@start_time = Time.now
# TODO(vjpai): Support multiple client channels by spawning off a PHP client per channel
command = "php " + File.expand_path(File.dirname(__FILE__)) + "/../../php/tests/qps/client.php " + @mytarget
puts "Starting command: " + command
@php_pid = spawn(command)
end
def stop
Process.kill("TERM", @php_pid)
Process.wait(@php_pid)
end
def get_config(_args, _call)
puts "Answering get_config"
@config
end
def report_time(call)
puts "Starting a time reporting stream"
call.each_remote_read do |lat|
@histogram.add((lat.latency)*1e9)
end
Grpc::Testing::Void.new
end
def mark(reset)
lat = Grpc::Testing::HistogramData.new(
bucket: @histogram.contents,
min_seen: @histogram.minimum,
max_seen: @histogram.maximum,
sum: @histogram.sum,
sum_of_squares: @histogram.sum_of_squares,
count: @histogram.count
)
elapsed = Time.now-@start_time
if reset
@start_time = Time.now
@histogram = Histogram.new(@histres, @histmax)
end
Grpc::Testing::ClientStats.new(latencies: lat, time_elapsed: elapsed)
end
end
class ProxyWorkerServiceImpl < Grpc::Testing::WorkerService::Service
def cpu_cores
Facter.value('processors')['count']
end
# Leave run_server unimplemented since this proxies for a client only.
# If the driver tries to use this as a server, it will get an unimplemented
# status return value.
def run_client(reqs)
q = EnumeratorQueue.new(self)
Thread.new {
reqs.each do |req|
case req.argtype.to_s
when 'setup'
@bmc.setup(req.setup)
q.push(Grpc::Testing::ClientStatus.new(stats: @bmc.mark(false)))
when 'mark'
q.push(Grpc::Testing::ClientStatus.new(stats:
@bmc.mark(req.mark.reset)))
end
end
@bmc.stop
q.push(self)
}
q.each_item
end
def core_count(_args, _call)
Grpc::Testing::CoreResponse.new(cores: cpu_cores)
end
def quit_worker(_args, _call)
Thread.new {
sleep 3
@server.stop
}
Grpc::Testing::Void.new
end
def initialize(s, bmc)
@server = s
@bmc = bmc
end
end
def proxymain
options = {
'driver_port' => 0
}
OptionParser.new do |opts|
opts.banner = 'Usage: [--driver_port <port>]'
opts.on('--driver_port PORT', '<port>') do |v|
options['driver_port'] = v
end
end.parse!
# Configure any errors with client or server child threads to surface
Thread.abort_on_exception = true
s = GRPC::RpcServer.new
port = s.add_http2_port("0.0.0.0:" + options['driver_port'].to_s,
:this_port_is_insecure)
bmc = ProxyBenchmarkClientServiceImpl.new(port)
s.handle(bmc)
s.handle(ProxyWorkerServiceImpl.new(s, bmc))
s.run
end
proxymain

@ -0,0 +1,17 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# source: src/proto/grpc/testing/proxy-service.proto
require 'google/protobuf'
require 'src/proto/grpc/testing/control_pb'
Google::Protobuf::DescriptorPool.generated_pool.build do
add_message "grpc.testing.ProxyStat" do
optional :latency, :double, 1
end
end
module Grpc
module Testing
ProxyStat = Google::Protobuf::DescriptorPool.generated_pool.lookup("grpc.testing.ProxyStat").msgclass
end
end

@ -0,0 +1,55 @@
# Generated by the protocol buffer compiler. DO NOT EDIT!
# Source: src/proto/grpc/testing/proxy-service.proto for package 'grpc.testing'
# Original file comments:
# Copyright 2017, Google Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
require 'grpc'
require 'src/proto/grpc/testing/proxy-service_pb'
module Grpc
module Testing
module ProxyClientService
class Service
include GRPC::GenericService
self.marshal_class_method = :encode
self.unmarshal_class_method = :decode
self.service_name = 'grpc.testing.ProxyClientService'
rpc :GetConfig, Void, ClientConfig
rpc :ReportTime, stream(ProxyStat), Void
end
Stub = Service.rpc_stub_class
end
end
end

@ -29,6 +29,6 @@
module GRPC module GRPC
module Tools module Tools
VERSION = '1.2.0.dev' VERSION = '1.3.0.dev'
end end
end end

@ -31,6 +31,9 @@
* *
*/ */
/** \file Verify that status ordering rules are obeyed.
\ref doc/status_ordering.md */
#include "test/core/end2end/end2end_tests.h" #include "test/core/end2end/end2end_tests.h"
#include <stdio.h> #include <stdio.h>

@ -29,4 +29,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
VERSION='1.2.0.dev0' VERSION='1.3.0.dev0'

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.2.0-dev PROJECT_NUMBER = 1.3.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@ -788,6 +788,7 @@ doc/server-reflection.md \
doc/server_reflection_tutorial.md \ doc/server_reflection_tutorial.md \
doc/server_side_auth.md \ doc/server_side_auth.md \
doc/service_config.md \ doc/service_config.md \
doc/status_ordering.md \
doc/statuscodes.md \ doc/statuscodes.md \
doc/stress_test_framework.md \ doc/stress_test_framework.md \
doc/wait-for-ready.md \ doc/wait-for-ready.md \

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.2.0-dev PROJECT_NUMBER = 1.3.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a
@ -788,6 +788,7 @@ doc/server-reflection.md \
doc/server_reflection_tutorial.md \ doc/server_reflection_tutorial.md \
doc/server_side_auth.md \ doc/server_side_auth.md \
doc/service_config.md \ doc/service_config.md \
doc/status_ordering.md \
doc/statuscodes.md \ doc/statuscodes.md \
doc/stress_test_framework.md \ doc/stress_test_framework.md \
doc/wait-for-ready.md \ doc/wait-for-ready.md \

@ -787,6 +787,7 @@ doc/server-reflection.md \
doc/server_reflection_tutorial.md \ doc/server_reflection_tutorial.md \
doc/server_side_auth.md \ doc/server_side_auth.md \
doc/service_config.md \ doc/service_config.md \
doc/status_ordering.md \
doc/statuscodes.md \ doc/statuscodes.md \
doc/stress_test_framework.md \ doc/stress_test_framework.md \
doc/wait-for-ready.md \ doc/wait-for-ready.md \

@ -787,6 +787,7 @@ doc/server-reflection.md \
doc/server_reflection_tutorial.md \ doc/server_reflection_tutorial.md \
doc/server_side_auth.md \ doc/server_side_auth.md \
doc/service_config.md \ doc/service_config.md \
doc/status_ordering.md \
doc/statuscodes.md \ doc/statuscodes.md \
doc/stress_test_framework.md \ doc/stress_test_framework.md \
doc/wait-for-ready.md \ doc/wait-for-ready.md \

@ -73,6 +73,14 @@ columns = [
('framing_bytes_per_iteration', 'float'), ('framing_bytes_per_iteration', 'float'),
] ]
SANITIZE = {
'integer': int,
'float': float,
'boolean': bool,
'string': str,
'timestamp': str,
}
if sys.argv[1] == '--schema': if sys.argv[1] == '--schema':
print ',\n'.join('%s:%s' % (k, t.upper()) for k, t in columns) print ',\n'.join('%s:%s' % (k, t.upper()) for k, t in columns)
sys.exit(0) sys.exit(0)
@ -89,7 +97,10 @@ else:
writer = csv.DictWriter(sys.stdout, [c for c,t in columns]) writer = csv.DictWriter(sys.stdout, [c for c,t in columns])
for row in bm_json.expand_json(js, js2): for row in bm_json.expand_json(js, js2):
if 'label' in row: sane_row = {}
del row['label'] for name, sql_type in columns:
del row['cpp_name'] if name in row:
writer.writerow(row) if row[name] == '': continue
sane_row[name] = SANITIZE[sql_type](row[name])
writer.writerow(sane_row)

@ -32,14 +32,45 @@ import sys
import json import json
import bm_json import bm_json
import tabulate import tabulate
import argparse
with open(sys.argv[1]) as f: def changed_ratio(n, o):
if float(o) <= .0001: o = 0
if float(n) <= .0001: n = 0
if o == 0 and n == 0: return 0
if o == 0: return 100
return (float(n)-float(o))/float(o)
def min_change(pct):
return lambda n, o: abs(changed_ratio(n,o)) > pct/100.0
_INTERESTING = {
'cpu_time': min_change(10),
'real_time': min_change(10),
'locks_per_iteration': min_change(5),
'allocs_per_iteration': min_change(5),
'writes_per_iteration': min_change(5),
'atm_cas_per_iteration': min_change(1),
'atm_add_per_iteration': min_change(5),
}
argp = argparse.ArgumentParser(description='Perform diff on microbenchmarks')
argp.add_argument('-t', '--track',
choices=sorted(_INTERESTING.keys()),
nargs='+',
default=sorted(_INTERESTING.keys()),
help='Which metrics to track')
argp.add_argument('files', metavar='bm_file.json', type=str, nargs=4,
help='files to diff. ')
args = argp.parse_args()
with open(args.files[0]) as f:
js_new_ctr = json.loads(f.read()) js_new_ctr = json.loads(f.read())
with open(sys.argv[2]) as f: with open(args.files[1]) as f:
js_new_opt = json.loads(f.read()) js_new_opt = json.loads(f.read())
with open(sys.argv[3]) as f: with open(args.files[2]) as f:
js_old_ctr = json.loads(f.read()) js_old_ctr = json.loads(f.read())
with open(sys.argv[4]) as f: with open(args.files[3]) as f:
js_old_opt = json.loads(f.read()) js_old_opt = json.loads(f.read())
new = {} new = {}
@ -50,24 +81,9 @@ for row in bm_json.expand_json(js_new_ctr, js_new_opt):
for row in bm_json.expand_json(js_old_ctr, js_old_opt): for row in bm_json.expand_json(js_old_ctr, js_old_opt):
old[row['cpp_name']] = row old[row['cpp_name']] = row
def changed_ratio(n, o):
return float(n-o)/float(o)
def min_change(pct):
return lambda n, o: abs(changed_ratio(n,o)) > pct/100.0
_INTERESTING = (
('cpu_time', min_change(10)),
('real_time', min_change(10)),
('locks_per_iteration', min_change(5)),
('allocs_per_iteration', min_change(5)),
('writes_per_iteration', min_change(5)),
('atm_cas_per_iteration', min_change(1)),
('atm_add_per_iteration', min_change(5)),
)
changed = [] changed = []
for fld, chk in _INTERESTING: for fld in args.track:
chk = _INTERESTING[fld]
for bm in new.keys(): for bm in new.keys():
if bm not in old: continue if bm not in old: continue
n = new[bm] n = new[bm]
@ -86,12 +102,13 @@ for bm in sorted(new.keys()):
n = new[bm] n = new[bm]
o = old[bm] o = old[bm]
details = '' details = ''
for fld, chk in _INTERESTING: for fld in args.track:
chk = _INTERESTING[fld]
if fld not in n or fld not in o: continue if fld not in n or fld not in o: continue
if chk(n[fld], o[fld]): if chk(n[fld], o[fld]):
row.append(changed_ratio(n[fld], o[fld])) row.append(changed_ratio(n[fld], o[fld]))
if details: details += ', ' if details: details += ', '
details += '%s:%r-->%r' % (fld, o[fld], n[fld]) details += '%s:%r-->%r' % (fld, float(o[fld]), float(n[fld]))
any_changed = True any_changed = True
else: else:
row.append('') row.append('')

@ -103,11 +103,11 @@ _BM_SPECS = {
def numericalize(s): def numericalize(s):
if not s: return '' if not s: return ''
if s[-1] == 'k': if s[-1] == 'k':
return int(s[:-1]) * 1024 return float(s[:-1]) * 1024
if s[-1] == 'M': if s[-1] == 'M':
return int(s[:-1]) * 1024 * 1024 return float(s[:-1]) * 1024 * 1024
if 0 <= (ord(s[-1]) - ord('0')) <= 9: if 0 <= (ord(s[-1]) - ord('0')) <= 9:
return int(s) return float(s)
assert 'not a number: %s' % s assert 'not a number: %s' % s
def parse_name(name): def parse_name(name):

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save