Skip to content

Commit

Permalink
Use py.test from run_tests.py
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
soltanmm committed Jul 31, 2015
1 parent 791cc31 commit 2b84162
Show file tree
Hide file tree
Showing 11 changed files with 60 additions and 175 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,6 @@ coverage

# Makefile's cache
cache.mk

# Temporary test reports
report.xml
1 change: 1 addition & 0 deletions src/python/grpcio/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
graft grpc
include commands.py
include requirements.txt
File renamed without changes.
1 change: 1 addition & 0 deletions src/python/grpcio_test/MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
graft grpc_interop
graft grpc_test
include commands.py
include requirements.txt
4 changes: 3 additions & 1 deletion src/python/grpcio_test/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,6 @@ def run(self):
# 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)
5 changes: 5 additions & 0 deletions src/python/grpcio_test/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
pytest>=2.6
pytest-cov>=2.0
pytest-xdist>=1.11
oauth2client>=1.4.7
grpcio>=0.10.0a0
29 changes: 18 additions & 11 deletions src/python/grpcio_test/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,28 @@
'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
)
21 changes: 15 additions & 6 deletions tools/run_tests/build_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand All @@ -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
}

Expand Down
122 changes: 0 additions & 122 deletions tools/run_tests/python_tests.json

This file was deleted.

9 changes: 5 additions & 4 deletions tools/run_tests/run_python.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
40 changes: 9 additions & 31 deletions tools/run_tests/run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,40 +187,18 @@ def __str__(self):
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']
Expand Down

0 comments on commit 2b84162

Please sign in to comment.