aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Masood Malekghassemi <soltanmm@users.noreply.github.com>2015-07-28 17:39:02 -0700
committerGravatar Masood Malekghassemi <soltanmm@users.noreply.github.com>2015-07-31 14:13:11 -0700
commit2b84162bd4a515926635eb558da0207150590874 (patch)
treebbb86e52b921dde757f5d731ade00165e67c4bc7
parent791cc31a4971b0b77627044ef375e78b113475fb (diff)
Use py.test from run_tests.py
Also updates the version of grpcio_test. Now that grpcio and its tests are in different project packages, the version numbers should be kept in sync.
-rw-r--r--.gitignore3
-rw-r--r--src/python/grpcio/MANIFEST.in1
-rw-r--r--src/python/grpcio/requirements.txt (renamed from src/python/requirements.txt)0
-rw-r--r--src/python/grpcio_test/MANIFEST.in1
-rw-r--r--src/python/grpcio_test/commands.py4
-rw-r--r--src/python/grpcio_test/requirements.txt5
-rw-r--r--src/python/grpcio_test/setup.py29
-rwxr-xr-xtools/run_tests/build_python.sh21
-rwxr-xr-xtools/run_tests/python_tests.json122
-rwxr-xr-xtools/run_tests/run_python.sh9
-rwxr-xr-xtools/run_tests/run_tests.py40
11 files changed, 60 insertions, 175 deletions
diff --git a/.gitignore b/.gitignore
index 89bd1003f7..f5ca501db2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,3 +33,6 @@ coverage
# Makefile's cache
cache.mk
+
+# Temporary test reports
+report.xml
diff --git a/src/python/grpcio/MANIFEST.in b/src/python/grpcio/MANIFEST.in
index 498b55f20a..9583dc7768 100644
--- a/src/python/grpcio/MANIFEST.in
+++ b/src/python/grpcio/MANIFEST.in
@@ -1,2 +1,3 @@
graft grpc
include commands.py
+include requirements.txt
diff --git a/src/python/requirements.txt b/src/python/grpcio/requirements.txt
index 43395df03b..43395df03b 100644
--- a/src/python/requirements.txt
+++ b/src/python/grpcio/requirements.txt
diff --git a/src/python/grpcio_test/MANIFEST.in b/src/python/grpcio_test/MANIFEST.in
index 66bb3c6f17..c9327307dc 100644
--- a/src/python/grpcio_test/MANIFEST.in
+++ b/src/python/grpcio_test/MANIFEST.in
@@ -1,3 +1,4 @@
graft grpc_interop
graft grpc_test
include commands.py
+include requirements.txt
diff --git a/src/python/grpcio_test/commands.py b/src/python/grpcio_test/commands.py
index 24d6241c43..c796d94c76 100644
--- a/src/python/grpcio_test/commands.py
+++ b/src/python/grpcio_test/commands.py
@@ -52,4 +52,6 @@ class RunTests(setuptools.Command):
# We import here to ensure that setup.py has had a chance to install the
# relevant package eggs first.
import pytest
- pytest.main(self.pytest_args)
+ result = pytest.main(self.pytest_args)
+ if result != 0:
+ raise SystemExit(result)
diff --git a/src/python/grpcio_test/requirements.txt b/src/python/grpcio_test/requirements.txt
new file mode 100644
index 0000000000..856198def5
--- /dev/null
+++ b/src/python/grpcio_test/requirements.txt
@@ -0,0 +1,5 @@
+pytest>=2.6
+pytest-cov>=2.0
+pytest-xdist>=1.11
+oauth2client>=1.4.7
+grpcio>=0.10.0a0
diff --git a/src/python/grpcio_test/setup.py b/src/python/grpcio_test/setup.py
index 798710393d..925c32720f 100644
--- a/src/python/grpcio_test/setup.py
+++ b/src/python/grpcio_test/setup.py
@@ -52,21 +52,28 @@ _PACKAGE_DATA = {
'credentials/server1.pem',]
}
-_INSTALL_REQUIRES = ['oauth2client>=1.4.7', 'grpcio>=0.10.0a0']
+_SETUP_REQUIRES = (
+ 'pytest>=2.6',
+ 'pytest-cov>=2.0',
+ 'pytest-xdist>=1.11',
+)
+
+_INSTALL_REQUIRES = (
+ 'oauth2client>=1.4.7',
+ 'grpcio>=0.10.0a0',
+)
+
+_COMMAND_CLASS = {
+ 'test': commands.RunTests
+}
setuptools.setup(
name='grpcio_test',
- version='0.0.1',
+ version='0.10.0a0',
packages=_PACKAGES,
package_dir=_PACKAGE_DIRECTORIES,
package_data=_PACKAGE_DATA,
- install_requires=_INSTALL_REQUIRES,
- setup_requires=(
- 'pytest>=2.6',
- 'pytest-cov>=2.0',
- 'pytest-xdist>=1.11',
- ),
- cmdclass={
- 'test': commands.RunTests
- }
+ install_requires=_INSTALL_REQUIRES + _SETUP_REQUIRES,
+ setup_requires=_SETUP_REQUIRES,
+ cmdclass=_COMMAND_CLASS
)
diff --git a/tools/run_tests/build_python.sh b/tools/run_tests/build_python.sh
index 265a542e3a..203c8b7720 100755
--- a/tools/run_tests/build_python.sh
+++ b/tools/run_tests/build_python.sh
@@ -33,7 +33,9 @@ set -ex
# change to grpc repo root
cd $(dirname $0)/../..
-root=`pwd`
+ROOT=`pwd`
+GRPCIO=$ROOT/src/python/grpcio
+GRPCIO_TEST=$ROOT/src/python/grpcio_test
make_virtualenv() {
virtualenv_name="python"$1"_virtual_environment"
@@ -42,9 +44,16 @@ make_virtualenv() {
# Build the entire virtual environment
virtualenv -p `which "python"$1` $virtualenv_name
source $virtualenv_name/bin/activate
- pip install -r src/python/requirements.txt
- CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/grpcio
- pip install src/python/grpcio_test
+
+ # Install grpcio
+ cd $GRPCIO
+ pip install -r requirements.txt
+ CFLAGS="-I$ROOT/include -std=c89" LDFLAGS=-L$ROOT/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install $GRPCIO
+
+ # Install grpcio_test
+ cd $GRPCIO_TEST
+ pip install -r requirements.txt
+ pip install $GRPCIO_TEST
else
source $virtualenv_name/bin/activate
# Uninstall and re-install the packages we care about. Don't use
@@ -53,12 +62,12 @@ make_virtualenv() {
# dependency upgrades.
(yes | pip uninstall grpcio) || true
(yes | pip uninstall grpcio_test) || true
- (CFLAGS="-I$root/include -std=c89" LDFLAGS=-L$root/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install src/python/grpcio) || (
+ (CFLAGS="-I$ROOT/include -std=c89" LDFLAGS=-L$ROOT/libs/$CONFIG GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install $GRPCIO) || (
# Fall back to rebuilding the entire environment
rm -rf $virtualenv_name
make_virtualenv $1
)
- pip install src/python/grpcio_test
+ pip install $GRPCIO_TEST
fi
}
diff --git a/tools/run_tests/python_tests.json b/tools/run_tests/python_tests.json
deleted file mode 100755
index 426b93fe3a..0000000000
--- a/tools/run_tests/python_tests.json
+++ /dev/null
@@ -1,122 +0,0 @@
-[
- {
- "module": "grpc_test._adapter._c_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._low_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._intermediary_low_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._links_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._lonely_rear_link_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._blocking_invocation_inline_service_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._event_invocation_synchronous_event_service_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._adapter._future_invocation_asynchronous_event_service_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._links._lonely_invocation_link_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test._links._transmission_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.early_adopter.implementations_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.framework.base.implementations_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.framework.face.blocking_invocation_inline_service_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.framework.face.event_invocation_synchronous_event_service_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.framework.face.future_invocation_asynchronous_event_service_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.framework.foundation._later_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_test.framework.foundation._logging_pool_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_interop._insecure_interop_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "module": "grpc_interop._secure_interop_test",
- "pythonVersions": [
- "2.7"
- ]
- },
- {
- "file": "test/compiler/python_plugin_test.py",
- "pythonVersions": [
- "2.7"
- ]
- }
-]
diff --git a/tools/run_tests/run_python.sh b/tools/run_tests/run_python.sh
index 4959c0241c..5ffd4460b9 100755
--- a/tools/run_tests/run_python.sh
+++ b/tools/run_tests/run_python.sh
@@ -33,8 +33,9 @@ set -ex
# change to grpc repo root
cd $(dirname $0)/../..
-root=`pwd`
-export LD_LIBRARY_PATH=$root/libs/$CONFIG
-export DYLD_LIBRARY_PATH=$root/libs/$CONFIG
+ROOT=`pwd`
+GRPCIO_TEST=$ROOT/src/python/grpcio_test
+export LD_LIBRARY_PATH=$ROOT/libs/$CONFIG
+export DYLD_LIBRARY_PATH=$ROOT/libs/$CONFIG
source "python"$PYVER"_virtual_environment"/bin/activate
-"python"$PYVER -B $*
+"python"$PYVER $GRPCIO_TEST/setup.py test -a "-n8 --cov=grpc --junitxml=./report.xml"
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 50d88e66de..fa749498d2 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -187,40 +187,18 @@ class PhpLanguage(object):
class PythonLanguage(object):
def __init__(self):
- with open('tools/run_tests/python_tests.json') as f:
- self._tests = json.load(f)
- self._build_python_versions = set([
- python_version
- for test in self._tests
- for python_version in test['pythonVersions']])
+ self._build_python_versions = ['2.7']
self._has_python_versions = []
def test_specs(self, config, travis):
- job_specifications = []
- for test in self._tests:
- command = None
- short_name = None
- if 'module' in test:
- command = ['tools/run_tests/run_python.sh', '-m', test['module']]
- short_name = test['module']
- elif 'file' in test:
- command = ['tools/run_tests/run_python.sh', test['file']]
- short_name = test['file']
- else:
- raise ValueError('expected input to be a module or file to run '
- 'unittests from')
- for python_version in test['pythonVersions']:
- if python_version in self._has_python_versions:
- environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
- environment['PYVER'] = python_version
- job_specifications.append(config.job_spec(
- command, None, environ=environment, shortname=short_name))
- else:
- jobset.message(
- 'WARNING',
- 'Could not find Python {}; skipping test'.format(python_version),
- '{}\n'.format(command), do_newline=True)
- return job_specifications
+ environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
+ environment['PYVER'] = '2.7'
+ return [config.job_spec(
+ ['tools/run_tests/run_python.sh'],
+ None,
+ environ=environment,
+ shortname='py.test',
+ )]
def make_targets(self):
return ['static_c', 'grpc_python_plugin', 'shared_c']