Accepting request 1119606 from home:dgarcia:branches:devel:languages:python
- Add pytest.ini source needed to run tests - Remove/disable broken tests because of suse environment - drop tox.ini. seems it does no longer exist in 5.0.1 - add support to easily disable the testsuite at build time - update to 5.0.1 - 🚀 New Features - Provide aclose() / close() for classes requiring lifetime management (#2898) - Add support for ModuleCommands in cluster (#2951) - Add support for multiple values in RPUSHX (#2949) - Add Redis.from_pool() class method, for explicitly owning and closing a ConnectionPool (#2913) - 🐛 Bug Fixes - Fixing monitor parsing for messages containing specific substrings (#2950) - Cluster determine slot command name need to be upper (#2919) - Support timeout = 0 in search query (#2934) - Fix async sentinel: add push_request keyword argument to read_response (#2922) - Fix protocol checking for search commands (#2923) - Fix: SentinelManagedConnection.read_response() got an unexpected keyword argument 'push_request' (#2894) - Fix: automatically close connection pool for async Sentinel (#2900) - Save a reference to created async tasks, to avoid tasks potentially disappearing (#2816) - Avoid reference cycling by the garbage collector during response reading (#2932) OBS-URL: https://build.opensuse.org/request/show/1119606 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-redis?expand=0&rev=76
This commit is contained in:
parent
e02d989c64
commit
d21e817fae
13
pytest.ini
Normal file
13
pytest.ini
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[pytest]
|
||||||
|
addopts = -s
|
||||||
|
markers =
|
||||||
|
redismod: run only the redis module tests
|
||||||
|
pipeline: pipeline tests
|
||||||
|
onlycluster: marks tests to be run only with cluster mode redis
|
||||||
|
onlynoncluster: marks tests to be run only with standalone redis
|
||||||
|
ssl: marker for only the ssl tests
|
||||||
|
asyncio: marker for async tests
|
||||||
|
replica: replica tests
|
||||||
|
experimental: run only experimental tests
|
||||||
|
asyncio_mode = auto
|
||||||
|
timeout = 30
|
@ -1,3 +1,114 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 23 10:42:41 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Add pytest.ini source needed to run tests
|
||||||
|
- Remove/disable broken tests because of suse environment
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 20 09:55:28 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||||
|
|
||||||
|
- drop tox.ini. seems it does no longer exist in 5.0.1
|
||||||
|
- add support to easily disable the testsuite at build time
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 20 09:38:34 UTC 2023 - Marcus Rueckert <mrueckert@suse.de>
|
||||||
|
|
||||||
|
- update to 5.0.1
|
||||||
|
- 🚀 New Features
|
||||||
|
- Provide aclose() / close() for classes requiring lifetime
|
||||||
|
management (#2898)
|
||||||
|
- Add support for ModuleCommands in cluster (#2951)
|
||||||
|
- Add support for multiple values in RPUSHX (#2949)
|
||||||
|
- Add Redis.from_pool() class method, for explicitly owning and
|
||||||
|
closing a ConnectionPool (#2913)
|
||||||
|
- 🐛 Bug Fixes
|
||||||
|
- Fixing monitor parsing for messages containing specific
|
||||||
|
substrings (#2950)
|
||||||
|
- Cluster determine slot command name need to be upper (#2919)
|
||||||
|
- Support timeout = 0 in search query (#2934)
|
||||||
|
- Fix async sentinel: add push_request keyword argument to
|
||||||
|
read_response (#2922)
|
||||||
|
- Fix protocol checking for search commands (#2923)
|
||||||
|
- Fix: SentinelManagedConnection.read_response() got an
|
||||||
|
unexpected keyword argument 'push_request' (#2894)
|
||||||
|
- Fix: automatically close connection pool for async Sentinel
|
||||||
|
(#2900)
|
||||||
|
- Save a reference to created async tasks, to avoid tasks
|
||||||
|
potentially disappearing (#2816)
|
||||||
|
- Avoid reference cycling by the garbage collector during
|
||||||
|
response reading (#2932)
|
||||||
|
- 🧰 Maintenance
|
||||||
|
- Type hint improvements (#2952)
|
||||||
|
- Replace clear_connect_callbacks with
|
||||||
|
_deregister_connect_callback (#2955)
|
||||||
|
- Async fixes, remove del and other things (#2870)
|
||||||
|
- Add pagination, sorting and grouping examples to search json
|
||||||
|
example (#2890)
|
||||||
|
- Remove process-id checks from asyncio. Asyncio and fork()
|
||||||
|
does not mix. (#2911)
|
||||||
|
- Fix resource usage and cleanup Mocks in the unit tests
|
||||||
|
(#2936)
|
||||||
|
- Remove mentions of tox (#2929)
|
||||||
|
- Add 7.2 to supported Redis versions (#2896)
|
||||||
|
- Fix resource warnings in unit tests (#2899)
|
||||||
|
- Fix typo in redis-stream-example.ipynb (#2918)
|
||||||
|
- Deprecate RedisGraph (#2927)
|
||||||
|
- Fix redis 7.2.0 tests (#2902)
|
||||||
|
- Fix test_scorer (search) (#2920)
|
||||||
|
- changes from 5.0.0
|
||||||
|
- What's new?
|
||||||
|
- Triggers and Functions support Triggers and Functions allow
|
||||||
|
you to execute server-side functions triggered when key
|
||||||
|
values are modified or created in Redis, a stream entry
|
||||||
|
arrival, or explicitly calling them. Simply put, you can
|
||||||
|
replace Lua scripts with easy-to-develop JavaScript or
|
||||||
|
TypeScript code. Move your business logic closer to the data
|
||||||
|
to ensure a lower latency, and forget about updating
|
||||||
|
dependent key values manually in your code. Try it for
|
||||||
|
yourself with Quick start
|
||||||
|
- Full Redis 7.2 and RESP3 support
|
||||||
|
- Python 3.7 End-of-Life
|
||||||
|
- Python 3.7 has reached its end-of-life (EOL) as of June
|
||||||
|
2023. This means that starting from this date, Python 3.7
|
||||||
|
will no longer receive any updates, including security
|
||||||
|
patches, bug fixes, or improvements. If you continue to use
|
||||||
|
Python 3.7 post-EOL, you may expose your projects and
|
||||||
|
systems to potential security vulnerabilities. We ended its
|
||||||
|
support in this version and strongly recommend migrating to
|
||||||
|
Python 3.10.
|
||||||
|
- 🐛 Bug Fixes
|
||||||
|
- Fix timeout retrying on pipeline execution (#2812)
|
||||||
|
- Fix socket garbage collection (#2859)
|
||||||
|
- 🧰 Maintenance
|
||||||
|
- Updating client license to clear, MIT (#2884)
|
||||||
|
- Add py.typed in accordance with PEP-561 (#2738)
|
||||||
|
- Dependabot label change (#2880)
|
||||||
|
- Fix type hints in SearchCommands (#2817)
|
||||||
|
- Add sync modules (except search) tests to cluster CI (#2850)
|
||||||
|
- Fix a duplicate word in CONTRIBUTING.md (#2848)
|
||||||
|
- Fixing doc builds (#2869)
|
||||||
|
- Change cluster docker to edge and enable debug command
|
||||||
|
(#2853)
|
||||||
|
- changes from 4.6.0
|
||||||
|
- 🧪 Experimental Features
|
||||||
|
- Support JSON.MERGE command (#2761)
|
||||||
|
- Support JSON.MSET command (#2766)
|
||||||
|
- 🚀 New Features
|
||||||
|
- Extract abstract async connection class (#2734)
|
||||||
|
- Add support for WAITAOF (#2760)
|
||||||
|
- Introduce OutOfMemoryError exception for Redis write command rejections due to OOM errors (#2778)
|
||||||
|
- Add WITHSCORE argument to ZRANK (#2758)
|
||||||
|
- 🐛 Bug Fixes
|
||||||
|
- Fix dead weakref in sentinel connection causing ReferenceError (#2767) (#2771)
|
||||||
|
- Fix Key Error in parse_xinfo_stream (#2788)
|
||||||
|
- Remove unnecessary __del__ handlers (#2755)
|
||||||
|
- Added support for missing argument to SentinelManagedConnection.read_response() (#2756)
|
||||||
|
- 🧰 Maintenance
|
||||||
|
- Fix type hint for retry_on_error in async cluster (#2804)
|
||||||
|
- Clean up documents and fix some redirects (#2801)
|
||||||
|
- Add unit tests for the connect method of all Redis connection classes (#2631)
|
||||||
|
- Docstring formatting fix (#2796)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat May 20 12:11:45 UTC 2023 - Andreas Stieger <Andreas.Stieger@gmx.de>
|
Sat May 20 12:11:45 UTC 2023 - Andreas Stieger <Andreas.Stieger@gmx.de>
|
||||||
|
|
||||||
@ -634,6 +745,11 @@ Tue Mar 26 09:36:48 UTC 2019 - John Vandenberg <jayvdb@gmail.com>
|
|||||||
* Fix SentinelConnectionPool to work in multiprocess/forked
|
* Fix SentinelConnectionPool to work in multiprocess/forked
|
||||||
environments
|
environments
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Feb 19 17:50:40 UTC 2019 - Marcus Rueckert <mrueckert@suse.de>
|
||||||
|
|
||||||
|
- downgrade requires for redis to recommends
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Feb 18 08:54:01 UTC 2019 - sebix+novell.com@sebix.at
|
Mon Feb 18 08:54:01 UTC 2019 - sebix+novell.com@sebix.at
|
||||||
|
|
||||||
|
@ -16,15 +16,17 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%bcond_without testing
|
||||||
|
|
||||||
%{?sle15_python_module_pythons}
|
%{?sle15_python_module_pythons}
|
||||||
Name: python-redis
|
Name: python-redis
|
||||||
Version: 4.5.5
|
Version: 5.0.1
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Python client for Redis key-value store
|
Summary: Python client for Redis key-value store
|
||||||
License: MIT
|
License: MIT
|
||||||
URL: https://github.com/redis/redis-py
|
URL: https://github.com/redis/redis-py
|
||||||
Source0: https://files.pythonhosted.org/packages/source/r/redis/redis-%{version}.tar.gz
|
Source0: https://files.pythonhosted.org/packages/source/r/redis/redis-%{version}.tar.gz
|
||||||
Source1: https://github.com/redis/redis-py/raw/v%{version}/tox.ini
|
Source1: https://raw.githubusercontent.com/redis/redis-py/5.0/pytest.ini
|
||||||
BuildRequires: %{python_module async-timeout >= 4.0.2}
|
BuildRequires: %{python_module async-timeout >= 4.0.2}
|
||||||
BuildRequires: %{python_module base >= 3.7}
|
BuildRequires: %{python_module base >= 3.7}
|
||||||
BuildRequires: %{python_module packaging}
|
BuildRequires: %{python_module packaging}
|
||||||
@ -35,10 +37,12 @@ BuildRequires: %{python_module setuptools}
|
|||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: psmisc
|
BuildRequires: psmisc
|
||||||
BuildRequires: python-rpm-macros
|
BuildRequires: python-rpm-macros
|
||||||
|
%if %{with testing}
|
||||||
BuildRequires: redis
|
BuildRequires: redis
|
||||||
|
%endif
|
||||||
Requires: python-async-timeout >= 4.0.2
|
Requires: python-async-timeout >= 4.0.2
|
||||||
Requires: redis
|
|
||||||
Recommends: python-hiredis >= 1.0.0
|
Recommends: python-hiredis >= 1.0.0
|
||||||
|
Recommends: redis
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
%python_subpackages
|
%python_subpackages
|
||||||
|
|
||||||
@ -47,8 +51,15 @@ The Python interface to the Redis key-value store.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -p1 -n redis-%{version}
|
%autosetup -p1 -n redis-%{version}
|
||||||
# tox.ini for pytest markers
|
# pytest.ini for pytest markers
|
||||||
cp %{SOURCE1} .
|
cp %SOURCE1 .
|
||||||
|
|
||||||
|
# The openSUSE redis json, bloom, ts and
|
||||||
|
# graph are missing in the repos
|
||||||
|
rm tests/test_bloom.py
|
||||||
|
rm tests/test_graph.py
|
||||||
|
rm tests/test_json.py
|
||||||
|
rm tests/test_timeseries.py
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%python_build
|
%python_build
|
||||||
@ -57,6 +68,7 @@ cp %{SOURCE1} .
|
|||||||
%python_install
|
%python_install
|
||||||
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||||
|
|
||||||
|
%if %{with testing}
|
||||||
%check
|
%check
|
||||||
# upstream's tox testsuite starts several servers in docker containers listening on different ports.
|
# upstream's tox testsuite starts several servers in docker containers listening on different ports.
|
||||||
# We just start two of them locally
|
# We just start two of them locally
|
||||||
@ -80,9 +92,12 @@ if [ $(getconf LONG_BIT) -ne 64 ]; then
|
|||||||
# reference precision issues on 32-bit
|
# reference precision issues on 32-bit
|
||||||
donttest=" or test_geopos"
|
donttest=" or test_geopos"
|
||||||
fi
|
fi
|
||||||
# gh#redis/redis-py#2554 and gh#redis/redis-py#2679
|
# gh#redis/redis-py#2554
|
||||||
donttest="$donttest or test_xautoclaim or test_acl_list"
|
donttest="$donttest or test_xautoclaim"
|
||||||
%pytest -m 'not (onlycluster or redismod)' -k "not (dummyprefix $donttest)" --ignore tests/test_ssl.py --ignore tests/test_asyncio/test_cluster.py --redis-url=redis://localhost:6379/
|
# gh#redis/redis-py#2679
|
||||||
|
donttest+=" or test_acl_getuser_setuser or test_acl_log"
|
||||||
|
%pytest -m 'not (onlycluster or redismod or ssl)' -k "not (dummyprefix $donttest)" --ignore tests/test_ssl.py --ignore tests/test_asyncio/test_cluster.py --redis-url=redis://localhost:6379/
|
||||||
|
%endif
|
||||||
|
|
||||||
%files %{python_files}
|
%files %{python_files}
|
||||||
%license LICENSE
|
%license LICENSE
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:dc87a0bdef6c8bfe1ef1e1c40be7034390c2ae02d92dcd0c7ca1729443899880
|
|
||||||
size 4557115
|
|
BIN
redis-5.0.1.tar.gz
(Stored with Git LFS)
Normal file
BIN
redis-5.0.1.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
379
tox.ini
379
tox.ini
@ -1,379 +0,0 @@
|
|||||||
[pytest]
|
|
||||||
addopts = -s
|
|
||||||
markers =
|
|
||||||
redismod: run only the redis module tests
|
|
||||||
pipeline: pipeline tests
|
|
||||||
onlycluster: marks tests to be run only with cluster mode redis
|
|
||||||
onlynoncluster: marks tests to be run only with standalone redis
|
|
||||||
ssl: marker for only the ssl tests
|
|
||||||
asyncio: marker for async tests
|
|
||||||
replica: replica tests
|
|
||||||
experimental: run only experimental tests
|
|
||||||
asyncio_mode = auto
|
|
||||||
|
|
||||||
[tox]
|
|
||||||
minversion = 3.2.0
|
|
||||||
requires = tox-docker
|
|
||||||
envlist = {standalone,cluster}-{plain,hiredis,ocsp}-{uvloop,asyncio}-{py37,py38,py39,pypy3},linters,docs
|
|
||||||
|
|
||||||
[docker:master]
|
|
||||||
name = master
|
|
||||||
image = redisfab/redis-py:6.2.6
|
|
||||||
ports =
|
|
||||||
6379:6379/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6379)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis6.2/master/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:replica]
|
|
||||||
name = replica
|
|
||||||
image = redisfab/redis-py:6.2.6
|
|
||||||
links =
|
|
||||||
master:master
|
|
||||||
ports =
|
|
||||||
6380:6380/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6380)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis6.2/replica/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:unstable]
|
|
||||||
name = unstable
|
|
||||||
image = redisfab/redis-py:unstable
|
|
||||||
ports =
|
|
||||||
6378:6378/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6378)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/unstable/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:unstable_cluster]
|
|
||||||
name = unstable_cluster
|
|
||||||
image = redisfab/redis-py-cluster:unstable
|
|
||||||
ports =
|
|
||||||
6372:6372/tcp
|
|
||||||
6373:6373/tcp
|
|
||||||
6374:6374/tcp
|
|
||||||
6375:6375/tcp
|
|
||||||
6376:6376/tcp
|
|
||||||
6377:6377/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(6372,6377)]) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/unstable_cluster/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:sentinel_1]
|
|
||||||
name = sentinel_1
|
|
||||||
image = redisfab/redis-py-sentinel:6.2.6
|
|
||||||
links =
|
|
||||||
master:master
|
|
||||||
ports =
|
|
||||||
26379:26379/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26379)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_1.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:sentinel_2]
|
|
||||||
name = sentinel_2
|
|
||||||
image = redisfab/redis-py-sentinel:6.2.6
|
|
||||||
links =
|
|
||||||
master:master
|
|
||||||
ports =
|
|
||||||
26380:26380/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26380)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_2.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:sentinel_3]
|
|
||||||
name = sentinel_3
|
|
||||||
image = redisfab/redis-py-sentinel:6.2.6
|
|
||||||
links =
|
|
||||||
master:master
|
|
||||||
ports =
|
|
||||||
26381:26381/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26381)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis6.2/sentinel/sentinel_3.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis_stack]
|
|
||||||
name = redis_stack
|
|
||||||
image = redis/redis-stack-server:edge
|
|
||||||
ports =
|
|
||||||
36379:6379/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',36379)) else False"
|
|
||||||
|
|
||||||
[docker:redis_cluster]
|
|
||||||
name = redis_cluster
|
|
||||||
image = redisfab/redis-py-cluster:6.2.6
|
|
||||||
ports =
|
|
||||||
16379:16379/tcp
|
|
||||||
16380:16380/tcp
|
|
||||||
16381:16381/tcp
|
|
||||||
16382:16382/tcp
|
|
||||||
16383:16383/tcp
|
|
||||||
16384:16384/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(16379,16384)]) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/cluster/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:redismod_cluster]
|
|
||||||
name = redismod_cluster
|
|
||||||
image = redisfab/redis-py-modcluster:edge
|
|
||||||
ports =
|
|
||||||
46379:46379/tcp
|
|
||||||
46380:46380/tcp
|
|
||||||
46381:46381/tcp
|
|
||||||
46382:46382/tcp
|
|
||||||
46383:46383/tcp
|
|
||||||
46384:46384/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(46379,46384)]) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redismod_cluster/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:stunnel]
|
|
||||||
name = stunnel
|
|
||||||
image = redisfab/stunnel:latest
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6666)) else False"
|
|
||||||
links =
|
|
||||||
master:master
|
|
||||||
ports =
|
|
||||||
6666:6666/tcp
|
|
||||||
volumes =
|
|
||||||
bind:ro:{toxinidir}/docker/stunnel/conf:/etc/stunnel/conf.d
|
|
||||||
bind:ro:{toxinidir}/docker/stunnel/keys:/etc/stunnel/keys
|
|
||||||
|
|
||||||
[docker:redis5_master]
|
|
||||||
name = redis5_master
|
|
||||||
image = redisfab/redis-py:5.0-buster
|
|
||||||
ports =
|
|
||||||
6382:6382/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6382)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis5/master/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:redis5_replica]
|
|
||||||
name = redis5_replica
|
|
||||||
image = redisfab/redis-py:5.0-buster
|
|
||||||
links =
|
|
||||||
redis5_master:redis5_master
|
|
||||||
ports =
|
|
||||||
6383:6383/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6383)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis5/replica/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:redis5_sentinel_1]
|
|
||||||
name = redis5_sentinel_1
|
|
||||||
image = redisfab/redis-py-sentinel:5.0-buster
|
|
||||||
links =
|
|
||||||
redis5_master:redis5_master
|
|
||||||
ports =
|
|
||||||
26382:26382/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26382)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis5/sentinel/sentinel_1.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis5_sentinel_2]
|
|
||||||
name = redis5_sentinel_2
|
|
||||||
image = redisfab/redis-py-sentinel:5.0-buster
|
|
||||||
links =
|
|
||||||
redis5_master:redis5_master
|
|
||||||
ports =
|
|
||||||
26383:26383/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26383)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis5/sentinel/sentinel_2.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis5_sentinel_3]
|
|
||||||
name = redis5_sentinel_3
|
|
||||||
image = redisfab/redis-py-sentinel:5.0-buster
|
|
||||||
links =
|
|
||||||
redis5_master:redis5_master
|
|
||||||
ports =
|
|
||||||
26384:26384/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26384)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis5/sentinel/sentinel_3.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis5_cluster]
|
|
||||||
name = redis5_cluster
|
|
||||||
image = redisfab/redis-py-cluster:5.0-buster
|
|
||||||
ports =
|
|
||||||
16385:16385/tcp
|
|
||||||
16386:16386/tcp
|
|
||||||
16387:16387/tcp
|
|
||||||
16388:16388/tcp
|
|
||||||
16389:16389/tcp
|
|
||||||
16390:16390/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(16385,16390)]) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/cluster/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:redis4_master]
|
|
||||||
name = redis4_master
|
|
||||||
image = redisfab/redis-py:4.0-buster
|
|
||||||
ports =
|
|
||||||
6381:6381/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',6381)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis4/master/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[docker:redis4_sentinel_1]
|
|
||||||
name = redis4_sentinel_1
|
|
||||||
image = redisfab/redis-py-sentinel:4.0-buster
|
|
||||||
links =
|
|
||||||
redis4_master:redis4_master
|
|
||||||
ports =
|
|
||||||
26385:26385/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26385)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis4/sentinel/sentinel_1.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis4_sentinel_2]
|
|
||||||
name = redis4_sentinel_2
|
|
||||||
image = redisfab/redis-py-sentinel:4.0-buster
|
|
||||||
links =
|
|
||||||
redis4_master:redis4_master
|
|
||||||
ports =
|
|
||||||
26386:26386/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26386)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis4/sentinel/sentinel_2.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis4_sentinel_3]
|
|
||||||
name = redis4_sentinel_3
|
|
||||||
image = redisfab/redis-py-sentinel:4.0-buster
|
|
||||||
links =
|
|
||||||
redis4_master:redis4_master
|
|
||||||
ports =
|
|
||||||
26387:26387/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if 0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',26387)) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/redis4/sentinel/sentinel_3.conf:/sentinel.conf
|
|
||||||
|
|
||||||
[docker:redis4_cluster]
|
|
||||||
name = redis4_cluster
|
|
||||||
image = redisfab/redis-py-cluster:4.0-buster
|
|
||||||
ports =
|
|
||||||
16391:16391/tcp
|
|
||||||
16392:16392/tcp
|
|
||||||
16393:16393/tcp
|
|
||||||
16394:16394/tcp
|
|
||||||
16395:16395/tcp
|
|
||||||
16396:16396/tcp
|
|
||||||
healtcheck_cmd = python -c "import socket;print(True) if all([0 == socket.socket(socket.AF_INET, socket.SOCK_STREAM).connect_ex(('127.0.0.1',port)) for port in range(16391,16396)]) else False"
|
|
||||||
volumes =
|
|
||||||
bind:rw:{toxinidir}/docker/cluster/redis.conf:/redis.conf
|
|
||||||
|
|
||||||
[isort]
|
|
||||||
profile = black
|
|
||||||
multi_line_output = 3
|
|
||||||
|
|
||||||
[testenv]
|
|
||||||
deps =
|
|
||||||
-r {toxinidir}/requirements.txt
|
|
||||||
-r {toxinidir}/dev_requirements.txt
|
|
||||||
docker =
|
|
||||||
unstable
|
|
||||||
unstable_cluster
|
|
||||||
master
|
|
||||||
replica
|
|
||||||
sentinel_1
|
|
||||||
sentinel_2
|
|
||||||
sentinel_3
|
|
||||||
redis_cluster
|
|
||||||
redis_stack
|
|
||||||
stunnel
|
|
||||||
extras =
|
|
||||||
hiredis: hiredis
|
|
||||||
ocsp: cryptography, pyopenssl, requests
|
|
||||||
setenv =
|
|
||||||
CLUSTER_URL = "redis://localhost:16379/0"
|
|
||||||
UNSTABLE_CLUSTER_URL = "redis://localhost:6372/0"
|
|
||||||
commands =
|
|
||||||
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' --junit-xml=standalone-results.xml {posargs}
|
|
||||||
standalone-uvloop: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster' --junit-xml=standalone-uvloop-results.xml --uvloop {posargs}
|
|
||||||
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} --redis-unstable-url={env:UNSTABLE_CLUSTER_URL:} --junit-xml=cluster-results.xml {posargs}
|
|
||||||
cluster-uvloop: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} --redis-unstable-url={env:UNSTABLE_CLUSTER_URL:} --junit-xml=cluster-uvloop-results.xml --uvloop {posargs}
|
|
||||||
|
|
||||||
[testenv:redis5]
|
|
||||||
deps =
|
|
||||||
-r {toxinidir}/requirements.txt
|
|
||||||
-r {toxinidir}/dev_requirements.txt
|
|
||||||
docker =
|
|
||||||
redis5_master
|
|
||||||
redis5_replica
|
|
||||||
redis5_sentinel_1
|
|
||||||
redis5_sentinel_2
|
|
||||||
redis5_sentinel_3
|
|
||||||
redis5_cluster
|
|
||||||
extras =
|
|
||||||
hiredis: hiredis
|
|
||||||
cryptography: cryptography, requests
|
|
||||||
setenv =
|
|
||||||
CLUSTER_URL = "redis://localhost:16385/0"
|
|
||||||
commands =
|
|
||||||
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster and not redismod' {posargs}
|
|
||||||
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} {posargs}
|
|
||||||
|
|
||||||
[testenv:redis4]
|
|
||||||
deps =
|
|
||||||
-r {toxinidir}/requirements.txt
|
|
||||||
-r {toxinidir}/dev_requirements.txt
|
|
||||||
docker =
|
|
||||||
redis4_master
|
|
||||||
redis4_sentinel_1
|
|
||||||
redis4_sentinel_2
|
|
||||||
redis4_sentinel_3
|
|
||||||
redis4_cluster
|
|
||||||
extras =
|
|
||||||
hiredis: hiredis
|
|
||||||
cryptography: cryptography, requests
|
|
||||||
setenv =
|
|
||||||
CLUSTER_URL = "redis://localhost:16391/0"
|
|
||||||
commands =
|
|
||||||
standalone: pytest --cov=./ --cov-report=xml:coverage_redis.xml -W always -m 'not onlycluster and not redismod' {posargs}
|
|
||||||
cluster: pytest --cov=./ --cov-report=xml:coverage_cluster.xml -W always -m 'not onlynoncluster and not redismod' --redis-url={env:CLUSTER_URL:} {posargs}
|
|
||||||
|
|
||||||
[testenv:devenv]
|
|
||||||
skipsdist = true
|
|
||||||
skip_install = true
|
|
||||||
deps = -r {toxinidir}/dev_requirements.txt
|
|
||||||
docker = {[testenv]docker}
|
|
||||||
|
|
||||||
[testenv:linters]
|
|
||||||
deps_files = dev_requirements.txt
|
|
||||||
docker =
|
|
||||||
commands =
|
|
||||||
flake8
|
|
||||||
black --target-version py37 --check --diff .
|
|
||||||
isort --check-only --diff .
|
|
||||||
vulture redis whitelist.py --min-confidence 80
|
|
||||||
flynt --fail-on-change --dry-run .
|
|
||||||
skipsdist = true
|
|
||||||
skip_install = true
|
|
||||||
|
|
||||||
[testenv:docs]
|
|
||||||
deps = -r docs/requirements.txt
|
|
||||||
docker =
|
|
||||||
changedir = {toxinidir}/docs
|
|
||||||
allowlist_externals = make
|
|
||||||
commands = make html
|
|
||||||
|
|
||||||
[flake8]
|
|
||||||
max-line-length = 88
|
|
||||||
exclude =
|
|
||||||
*.egg-info,
|
|
||||||
*.pyc,
|
|
||||||
.git,
|
|
||||||
.tox,
|
|
||||||
.venv*,
|
|
||||||
build,
|
|
||||||
docs/*,
|
|
||||||
dist,
|
|
||||||
docker,
|
|
||||||
venv*,
|
|
||||||
.venv*,
|
|
||||||
whitelist.py
|
|
||||||
ignore =
|
|
||||||
F405
|
|
||||||
W503
|
|
||||||
E203
|
|
||||||
E126
|
|
Loading…
Reference in New Issue
Block a user