From f9da3a7bc40171c249fd1ffe56ed09d330520b38 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Wed, 8 Mar 2017 00:12:50 -0800 Subject: [PATCH 1/7] Start setting up files for autorun of php_to_cpp qps tests --- tools/gce/linux_performance_worker_init.sh | 6 +++ tools/run_tests/performance/run_worker_php.sh | 37 +++++++++++++++++++ .../run_tests/performance/scenario_config.py | 28 ++++++++++++++ 3 files changed, 71 insertions(+) create mode 100755 tools/run_tests/performance/run_worker_php.sh diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh index 8f0a0f65c34..04844506c9d 100755 --- a/tools/gce/linux_performance_worker_init.sh +++ b/tools/gce/linux_performance_worker_init.sh @@ -128,6 +128,12 @@ ruby -v # Install bundler (prerequisite for gRPC Ruby) gem install bundler +# PHP dependencies + +sudo apt-get install -y php5 php5-dev phpunit php-pear zlib1g-dev +curl -sS https://getcomposer.org/installer | php +sudo mv composer.phar /usr/local/bin/composer + # Java dependencies - nothing as we already have Java JDK 8 # Go dependencies diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh new file mode 100755 index 00000000000..b4d1a1cccd1 --- /dev/null +++ b/tools/run_tests/performance/run_worker_php.sh @@ -0,0 +1,37 @@ +#!/bin/bash +# 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. + +source ~/.rvm/scripts/rvm +set -ex + +cd $(dirname $0)/../../.. + +# The proxy worker for PHP is implemented in Ruby +ruby src/ruby/qps/proxy-worker.rb $@ diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py index cbcc4d0ecc4..15bce80fa4b 100644 --- a/tools/run_tests/performance/scenario_config.py +++ b/tools/run_tests/performance/scenario_config.py @@ -798,6 +798,33 @@ class RubyLanguage: return 'ruby' +class PhpLanguage: + + def __init__(self): + pass + self.safename = str(self) + + def worker_cmdline(self): + return ['tools/run_tests/performance/run_worker_php.sh'] + + def worker_port_offset(self): + return 800 + + def scenarios(self): + yield _ping_pong_scenario( + 'php_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY', + client_type='SYNC_CLIENT', server_type='SYNC_SERVER', + server_language='c++', async_server_threads=1) + + yield _ping_pong_scenario( + 'php_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING', + client_type='SYNC_CLIENT', server_type='SYNC_SERVER', + server_language='c++', async_server_threads=1) + + def __str__(self): + return 'ruby' + + class JavaLanguage: def __init__(self): @@ -995,6 +1022,7 @@ LANGUAGES = { 'node' : NodeLanguage(), 'node_express': NodeExpressLanguage(), 'ruby' : RubyLanguage(), + 'php' : PhpLanguage(), 'java' : JavaLanguage(), 'python' : PythonLanguage(), 'go' : GoLanguage(), From 649c95eadc313e211b54f1abb7f9826f15a2ac36 Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Mon, 13 Mar 2017 03:40:02 -0700 Subject: [PATCH 2/7] Make sure to get all PHP dependences set up properly --- tools/gce/linux_performance_worker_init.sh | 2 +- tools/run_tests/performance/run_worker_php.sh | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh index 04844506c9d..b952fd1b35c 100755 --- a/tools/gce/linux_performance_worker_init.sh +++ b/tools/gce/linux_performance_worker_init.sh @@ -130,7 +130,7 @@ gem install bundler # PHP dependencies -sudo apt-get install -y php5 php5-dev phpunit php-pear zlib1g-dev +sudo apt-get install -y php5 php5-dev phpunit php-pear unzip zlib1g-dev curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh index b4d1a1cccd1..ebedae8795d 100755 --- a/tools/run_tests/performance/run_worker_php.sh +++ b/tools/run_tests/performance/run_worker_php.sh @@ -31,7 +31,14 @@ source ~/.rvm/scripts/rvm set -ex -cd $(dirname $0)/../../.. +repo=$(dirname $0)/../../.. + +# First set up all dependences needed for PHP QPS test +cd $repo +cd src/php/tests/qps +curl -sS https://getcomposer.org/installer | php +php composer.phar install # The proxy worker for PHP is implemented in Ruby +cd $repo ruby src/ruby/qps/proxy-worker.rb $@ From 644676fb12f756a7efa34c27dd42809da8cbf311 Mon Sep 17 00:00:00 2001 From: ZhouyihaiDing Date: Sun, 10 Sep 2017 19:06:56 -0700 Subject: [PATCH 3/7] vjpai's PR --- tools/gce/linux_performance_worker_init.sh | 5 +++ tools/run_tests/performance/run_worker_php.sh | 45 +++++++++++++++++++ .../run_tests/performance/scenario_config.py | 28 ++++++++++++ 3 files changed, 78 insertions(+) create mode 100755 tools/run_tests/performance/run_worker_php.sh diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh index 8f0a0f65c34..88d8de74028 100755 --- a/tools/gce/linux_performance_worker_init.sh +++ b/tools/gce/linux_performance_worker_init.sh @@ -128,6 +128,11 @@ ruby -v # Install bundler (prerequisite for gRPC Ruby) gem install bundler +# PHP dependencies +sudo apt-get install -y php php-dev phpunit php-pear unzip zlib1g-dev +curl -sS https://getcomposer.org/installer | php +sudo mv composer.phar /usr/local/bin/composer + # Java dependencies - nothing as we already have Java JDK 8 # Go dependencies diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh new file mode 100755 index 00000000000..ba26f38a77a --- /dev/null +++ b/tools/run_tests/performance/run_worker_php.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# 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. + +source ~/.rvm/scripts/rvm +set -ex + +repo=$(dirname $0)/../../.. + +# First set up all dependences needed for PHP QPS test +cd $repo +cd src/php/tests/qps +curl -sS https://getcomposer.org/installer | php +php composer.phar install + +# The proxy worker for PHP is implemented in Ruby +cd $repo +ruby src/ruby/qps/proxy-worker.rb $@ + diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py index 86236b19bf3..329b9f8c470 100644 --- a/tools/run_tests/performance/scenario_config.py +++ b/tools/run_tests/performance/scenario_config.py @@ -797,6 +797,33 @@ class RubyLanguage: return 'ruby' +class PhpLanguage: + + def __init__(self): + pass + self.safename = str(self) + + def worker_cmdline(self): + return ['tools/run_tests/performance/run_worker_php.sh'] + + def worker_port_offset(self): + return 800 + + def scenarios(self): + yield _ping_pong_scenario( + 'php_to_cpp_protobuf_sync_unary_ping_pong', rpc_type='UNARY', + client_type='SYNC_CLIENT', server_type='SYNC_SERVER', + server_language='c++', async_server_threads=1) + + yield _ping_pong_scenario( + 'php_to_cpp_protobuf_sync_streaming_ping_pong', rpc_type='STREAMING', + client_type='SYNC_CLIENT', server_type='SYNC_SERVER', + server_language='c++', async_server_threads=1) + + def __str__(self): + return 'php' + + class JavaLanguage: def __init__(self): @@ -994,6 +1021,7 @@ LANGUAGES = { 'node' : NodeLanguage(), 'node_express': NodeExpressLanguage(), 'ruby' : RubyLanguage(), + 'php' : PhpLanguage(), 'java' : JavaLanguage(), 'python' : PythonLanguage(), 'go' : GoLanguage(), From 3c77ee8ad1e1c864c86d51126d9a74a62899133e Mon Sep 17 00:00:00 2001 From: ZhouyihaiDing Date: Tue, 12 Sep 2017 11:45:03 -0700 Subject: [PATCH 4/7] dir bug --- tools/run_tests/performance/run_worker_php.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh index ba26f38a77a..1da74cd0dbd 100755 --- a/tools/run_tests/performance/run_worker_php.sh +++ b/tools/run_tests/performance/run_worker_php.sh @@ -36,10 +36,8 @@ repo=$(dirname $0)/../../.. # First set up all dependences needed for PHP QPS test cd $repo cd src/php/tests/qps -curl -sS https://getcomposer.org/installer | php -php composer.phar install - +composer install # The proxy worker for PHP is implemented in Ruby -cd $repo +cd ../../../.. ruby src/ruby/qps/proxy-worker.rb $@ From 9b2a91306beafe5829ecfcf658988657e0eff1af Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Mon, 13 Mar 2017 04:05:33 -0700 Subject: [PATCH 5/7] php7 is new default for ubuntu 16.04 --- tools/gce/linux_performance_worker_init.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/gce/linux_performance_worker_init.sh b/tools/gce/linux_performance_worker_init.sh index b952fd1b35c..210bbbd3a26 100755 --- a/tools/gce/linux_performance_worker_init.sh +++ b/tools/gce/linux_performance_worker_init.sh @@ -130,7 +130,7 @@ gem install bundler # PHP dependencies -sudo apt-get install -y php5 php5-dev phpunit php-pear unzip zlib1g-dev +sudo apt-get install -y php php-dev phpunit php-pear unzip zlib1g-dev curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer From 11b48c766e00290bd7481132fd20806f5317d2fe Mon Sep 17 00:00:00 2001 From: Vijay Pai Date: Mon, 13 Mar 2017 04:26:19 -0700 Subject: [PATCH 6/7] typo --- tools/run_tests/performance/scenario_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/run_tests/performance/scenario_config.py b/tools/run_tests/performance/scenario_config.py index 15bce80fa4b..262001d23eb 100644 --- a/tools/run_tests/performance/scenario_config.py +++ b/tools/run_tests/performance/scenario_config.py @@ -822,7 +822,7 @@ class PhpLanguage: server_language='c++', async_server_threads=1) def __str__(self): - return 'ruby' + return 'php' class JavaLanguage: From d5e390b509221ef1574b6b02d91155efd459c30b Mon Sep 17 00:00:00 2001 From: ZhouyihaiDing Date: Tue, 12 Sep 2017 11:56:59 -0700 Subject: [PATCH 7/7] No newline at the end of file --- tools/run_tests/performance/run_worker_php.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/run_tests/performance/run_worker_php.sh b/tools/run_tests/performance/run_worker_php.sh index 15cee151f88..1da74cd0dbd 100755 --- a/tools/run_tests/performance/run_worker_php.sh +++ b/tools/run_tests/performance/run_worker_php.sh @@ -39,4 +39,5 @@ cd src/php/tests/qps composer install # The proxy worker for PHP is implemented in Ruby cd ../../../.. -ruby src/ruby/qps/proxy-worker.rb $@ \ No newline at end of file +ruby src/ruby/qps/proxy-worker.rb $@ +