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.
pull/2699/head
Masood Malekghassemi 9 years ago
parent 791cc31a49
commit 2b84162bd4
  1. 3
      .gitignore
  2. 1
      src/python/grpcio/MANIFEST.in
  3. 0
      src/python/grpcio/requirements.txt
  4. 1
      src/python/grpcio_test/MANIFEST.in
  5. 4
      src/python/grpcio_test/commands.py
  6. 5
      src/python/grpcio_test/requirements.txt
  7. 29
      src/python/grpcio_test/setup.py
  8. 21
      tools/run_tests/build_python.sh
  9. 122
      tools/run_tests/python_tests.json
  10. 9
      tools/run_tests/run_python.sh
  11. 40
      tools/run_tests/run_tests.py

3
.gitignore vendored

@ -33,3 +33,6 @@ coverage
# Makefile's cache
cache.mk
# Temporary test reports
report.xml

@ -1,2 +1,3 @@
graft grpc
include commands.py
include requirements.txt

@ -1,3 +1,4 @@
graft grpc_interop
graft grpc_test
include commands.py
include requirements.txt

@ -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)

@ -0,0 +1,5 @@
pytest>=2.6
pytest-cov>=2.0
pytest-xdist>=1.11
oauth2client>=1.4.7
grpcio>=0.10.0a0

@ -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
)

@ -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
}

@ -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"
]
}
]

@ -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"

@ -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']

Loading…
Cancel
Save