Merge pull request #2780 from soltanmm/compiler-tests

Move Python protoc plugin tests to grpcio_test.
pull/2885/head
Nathaniel Manista 9 years ago
commit aeb7a4f30c
  1. 30
      src/python/grpcio_test/grpc_protoc_plugin/__init__.py
  2. 20
      src/python/grpcio_test/grpc_protoc_plugin/python_plugin_test.py
  3. 0
      src/python/grpcio_test/grpc_protoc_plugin/test.proto
  4. 11
      src/python/grpcio_test/setup.py
  5. 1
      tools/run_tests/run_python.sh

@ -0,0 +1,30 @@
# 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.

@ -29,9 +29,11 @@
import argparse import argparse
import contextlib import contextlib
import distutils.spawn
import errno import errno
import itertools import itertools
import os import os
import pkg_resources
import shutil import shutil
import subprocess import subprocess
import sys import sys
@ -58,9 +60,6 @@ SHORT_TIMEOUT = 2
LONG_TIMEOUT = 600 LONG_TIMEOUT = 600
NO_DELAY = 0 NO_DELAY = 0
# Build mode environment variable set by tools/run_tests/run_tests.py.
_build_mode = os.environ['CONFIG']
class _ServicerMethods(object): class _ServicerMethods(object):
@ -228,9 +227,13 @@ class PythonPluginTest(unittest.TestCase):
""" """
def setUp(self): def setUp(self):
protoc_command = '../../bins/%s/protobuf/protoc' % _build_mode # Assume that the appropriate protoc and grpc_python_plugins are on the
protoc_plugin_filename = '../../bins/%s/grpc_python_plugin' % _build_mode # path.
test_proto_filename = './test.proto' protoc_command = 'protoc'
protoc_plugin_filename = distutils.spawn.find_executable(
'grpc_python_plugin')
test_proto_filename = pkg_resources.resource_filename(
'grpc_protoc_plugin', 'test.proto')
if not os.path.isfile(protoc_command): if not os.path.isfile(protoc_command):
# Assume that if we haven't built protoc that it's on the system. # Assume that if we haven't built protoc that it's on the system.
protoc_command = 'protoc' protoc_command = 'protoc'
@ -242,12 +245,13 @@ class PythonPluginTest(unittest.TestCase):
cmd = [ cmd = [
protoc_command, protoc_command,
'--plugin=protoc-gen-python-grpc=%s' % protoc_plugin_filename, '--plugin=protoc-gen-python-grpc=%s' % protoc_plugin_filename,
'-I %s' % os.path.dirname(test_proto_filename), '-I .',
'--python_out=%s' % self.outdir, '--python_out=%s' % self.outdir,
'--python-grpc_out=%s' % self.outdir, '--python-grpc_out=%s' % self.outdir,
os.path.basename(test_proto_filename), os.path.basename(test_proto_filename),
] ]
subprocess.call(' '.join(cmd), shell=True) subprocess.check_call(' '.join(cmd), shell=True, env=os.environ,
cwd=os.path.dirname(test_proto_filename))
sys.path.append(self.outdir) sys.path.append(self.outdir)
def tearDown(self): def tearDown(self):

@ -48,8 +48,13 @@ _PACKAGE_DIRECTORIES = {
_PACKAGE_DATA = { _PACKAGE_DATA = {
'grpc_interop': [ 'grpc_interop': [
'credentials/ca.pem', 'credentials/server1.key', 'credentials/ca.pem',
'credentials/server1.pem',] 'credentials/server1.key',
'credentials/server1.pem',
],
'grpc_protoc_plugin': [
'test.proto',
],
} }
_SETUP_REQUIRES = ( _SETUP_REQUIRES = (
@ -75,5 +80,5 @@ setuptools.setup(
package_data=_PACKAGE_DATA, package_data=_PACKAGE_DATA,
install_requires=_INSTALL_REQUIRES + _SETUP_REQUIRES, install_requires=_INSTALL_REQUIRES + _SETUP_REQUIRES,
setup_requires=_SETUP_REQUIRES, setup_requires=_SETUP_REQUIRES,
cmdclass=_COMMAND_CLASS cmdclass=_COMMAND_CLASS,
) )

@ -37,5 +37,6 @@ ROOT=`pwd`
GRPCIO_TEST=$ROOT/src/python/grpcio_test GRPCIO_TEST=$ROOT/src/python/grpcio_test
export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG
export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG
export PATH=$ROOT/bins/$CONFIG:$ROOT/bins/$CONFIG/protobuf:$PATH
source "python"$PYVER"_virtual_environment"/bin/activate source "python"$PYVER"_virtual_environment"/bin/activate
"python"$PYVER $GRPCIO_TEST/setup.py test -a "-n8 --cov=grpc --junitxml=./report.xml" "python"$PYVER $GRPCIO_TEST/setup.py test -a "-n8 --cov=grpc --junitxml=./report.xml"

Loading…
Cancel
Save