Use tox and pifpaf for testing
This sets up a tox environment that conditionally runs tests for either redis, memcached, or dbm, using pifpaf to install ad-hoc redis and/or memcached servers on private ports. This will allow concurrent test runs against separate memcached / redis instances. Additionally, the tox environment is split out so that we can easily use a jenkins matrix build for parallelism. Change-Id: I56b98e2b2b023b4178d77203a07c72b8fa5dfd3d
This commit is contained in:
parent
76245bcc50
commit
a923e7ee09
18
setup.cfg
18
setup.cfg
|
@ -10,24 +10,10 @@ universal = 1
|
|||
sign = 1
|
||||
identity = C4DAFEE1
|
||||
|
||||
[nosetests]
|
||||
cover-package = dogpile.cache
|
||||
with-coverage = 1
|
||||
cover-erase = 1
|
||||
nologcapture = 1
|
||||
where = tests
|
||||
|
||||
[flake8]
|
||||
exclude = docs/*
|
||||
|
||||
[pytest]
|
||||
addopts =
|
||||
--verbose
|
||||
--tb=short
|
||||
--capture=no
|
||||
# show extra test summary info as specified by chars (f)ailed, (E)error,
|
||||
# (s)skipped, (x)failed, (X)passed.
|
||||
-rfEsxX
|
||||
--cov=dogpile.cache --cov-report=xml --cov-report=term-missing
|
||||
|
||||
addopts= --tb native -v -r fxX
|
||||
python_files=tests/*test_*.py
|
||||
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
Mako
|
||||
mock
|
||||
pylibmc
|
||||
redis
|
||||
python-binary-memcached
|
||||
python-memcached
|
||||
pytest
|
||||
pytest-cov
|
|
@ -5,6 +5,11 @@ from threading import Thread
|
|||
import time
|
||||
import pytest
|
||||
from dogpile.cache import compat
|
||||
import os
|
||||
|
||||
|
||||
MEMCACHED_PORT = os.getenv('DOGPILE_MEMCACHED_PORT', '11211')
|
||||
MEMCACHED_URL = "127.0.0.1:%s" % MEMCACHED_PORT
|
||||
|
||||
LOCK_TIMEOUT = 1
|
||||
|
||||
|
@ -29,7 +34,7 @@ class _NonDistributedMemcachedTest(_TestMemcachedConn, _GenericBackendTest):
|
|||
}
|
||||
config_args = {
|
||||
"arguments": {
|
||||
"url": "127.0.0.1:11211"
|
||||
"url": MEMCACHED_URL
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,7 +45,7 @@ class _DistributedMemcachedWithTimeoutTest(_TestMemcachedConn, _GenericBackendTe
|
|||
}
|
||||
config_args = {
|
||||
"arguments": {
|
||||
"url": "127.0.0.1:11211",
|
||||
"url": MEMCACHED_URL,
|
||||
"distributed_lock": True,
|
||||
"lock_timeout": LOCK_TIMEOUT,
|
||||
}
|
||||
|
@ -53,7 +58,7 @@ class _DistributedMemcachedTest(_TestMemcachedConn, _GenericBackendTest):
|
|||
}
|
||||
config_args = {
|
||||
"arguments": {
|
||||
"url": "127.0.0.1:11211",
|
||||
"url": MEMCACHED_URL,
|
||||
"distributed_lock": True,
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +67,7 @@ class _DistributedMemcachedTest(_TestMemcachedConn, _GenericBackendTest):
|
|||
class _DistributedMemcachedMutexTest(_TestMemcachedConn, _GenericMutexTest):
|
||||
config_args = {
|
||||
"arguments": {
|
||||
"url": "127.0.0.1:11211",
|
||||
"url": MEMCACHED_URL,
|
||||
"distributed_lock": True
|
||||
}
|
||||
}
|
||||
|
@ -71,7 +76,7 @@ class _DistributedMemcachedMutexTest(_TestMemcachedConn, _GenericMutexTest):
|
|||
class _DistributedMemcachedMutexWithTimeoutTest(_TestMemcachedConn, _GenericMutexTest):
|
||||
config_args = {
|
||||
"arguments": {
|
||||
"url": "127.0.0.1:11211",
|
||||
"url": MEMCACHED_URL,
|
||||
"distributed_lock": True,
|
||||
"lock_timeout": LOCK_TIMEOUT,
|
||||
}
|
||||
|
|
|
@ -3,6 +3,10 @@ from ._fixtures import _GenericBackendTest, _GenericMutexTest
|
|||
from unittest import TestCase
|
||||
from mock import patch, Mock
|
||||
import pytest
|
||||
import os
|
||||
|
||||
REDIS_HOST = '127.0.0.1'
|
||||
REDIS_PORT = int(os.getenv('DOGPILE_REDIS_PORT', '6379'))
|
||||
|
||||
|
||||
class _TestRedisConn(object):
|
||||
|
@ -25,8 +29,8 @@ class RedisTest(_TestRedisConn, _GenericBackendTest):
|
|||
backend = 'dogpile.cache.redis'
|
||||
config_args = {
|
||||
"arguments": {
|
||||
'host': '127.0.0.1',
|
||||
'port': 6379,
|
||||
'host': REDIS_HOST,
|
||||
'port': REDIS_PORT,
|
||||
'db': 0,
|
||||
}
|
||||
}
|
||||
|
@ -36,8 +40,8 @@ class RedisDistributedMutexTest(_TestRedisConn, _GenericMutexTest):
|
|||
backend = 'dogpile.cache.redis'
|
||||
config_args = {
|
||||
"arguments": {
|
||||
'host': '127.0.0.1',
|
||||
'port': 6379,
|
||||
'host': REDIS_HOST,
|
||||
'port': REDIS_PORT,
|
||||
'db': 0,
|
||||
'distributed_lock': True,
|
||||
}
|
||||
|
|
65
tox.ini
65
tox.ini
|
@ -1,17 +1,58 @@
|
|||
[tox]
|
||||
envlist = py26, py27, py33, py34, flake8
|
||||
minversion=1.8.dev1
|
||||
envlist = py{27,33,34,35}
|
||||
|
||||
[testenv]
|
||||
commands =
|
||||
pip install -r test-requirements.txt
|
||||
pip install -e .
|
||||
py.test {posargs}
|
||||
cov_args=--cov=dogpile --cov-report term --cov-report xml
|
||||
|
||||
|
||||
setenv=
|
||||
BASECOMMAND=python -m pytest
|
||||
|
||||
{generic}: RUNTESTS=-k 'not test_dbm_backend and not test_memcached_backend and not test_redis_backend'
|
||||
|
||||
{memcached}: PIFPAF=pifpaf --env-prefix DOGPILE run memcached --
|
||||
{memcached}: RUNTESTS=tests/cache/test_memcached_backend.py
|
||||
|
||||
{redis}: PIFPAF=pifpaf --env-prefix DOGPILE run redis --
|
||||
{redis}: RUNTESTS=tests/cache/test_redis_backend.py
|
||||
|
||||
{dbm}: RUNTESTS=tests/cache/test_dbm_backend.py
|
||||
|
||||
{cov}: COVERAGE={[testenv]cov_args}
|
||||
|
||||
deps=
|
||||
pytest
|
||||
mock
|
||||
Mako
|
||||
{memcached}: pylibmc
|
||||
|
||||
# the py3k python-memcached fails for multiple
|
||||
# delete
|
||||
{py27-memcached}: python-memcached
|
||||
{memcached}: python-binary-memcached
|
||||
{memcached}: pifpaf
|
||||
{redis}: redis
|
||||
{redis}: pifpaf
|
||||
{cov}: pytest-cov
|
||||
|
||||
commands=
|
||||
{env:PIFPAF:} {env:BASECOMMAND} {env:COVERAGE:} {env:RUNTESTS:} {posargs}
|
||||
|
||||
sitepackages=True
|
||||
usedevelop=True
|
||||
|
||||
|
||||
[testenv:pep8]
|
||||
deps=flake8
|
||||
commands = python -m flake8 {posargs}
|
||||
|
||||
|
||||
[flake8]
|
||||
|
||||
show-source = True
|
||||
ignore = E711,E712,E721,D,N
|
||||
# F841,F811,F401
|
||||
exclude=.venv,.git,.tox,dist,doc,*egg,build
|
||||
|
||||
[testenv:py26]
|
||||
# mock dropped 2.6 support for a few releases
|
||||
deps = mock==1.0.1
|
||||
|
||||
[testenv:flake8]
|
||||
commands =
|
||||
pip install flake8
|
||||
flake8 .
|
||||
|
|
Loading…
Reference in New Issue