Accepting request 1119872 from 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) - 🧰 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) OBS-URL: https://build.opensuse.org/request/show/1119872 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-redis?expand=0&rev=35
This commit is contained in:
commit
49aaaad2c8
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>
|
||||
|
||||
@ -634,6 +745,11 @@ Tue Mar 26 09:36:48 UTC 2019 - John Vandenberg <jayvdb@gmail.com>
|
||||
* Fix SentinelConnectionPool to work in multiprocess/forked
|
||||
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
|
||||
|
||||
|
@ -16,15 +16,17 @@
|
||||
#
|
||||
|
||||
|
||||
%bcond_without testing
|
||||
|
||||
%{?sle15_python_module_pythons}
|
||||
Name: python-redis
|
||||
Version: 4.5.5
|
||||
Version: 5.0.1
|
||||
Release: 0
|
||||
Summary: Python client for Redis key-value store
|
||||
License: MIT
|
||||
URL: https://github.com/redis/redis-py
|
||||
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 base >= 3.7}
|
||||
BuildRequires: %{python_module packaging}
|
||||
@ -35,10 +37,12 @@ BuildRequires: %{python_module setuptools}
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: psmisc
|
||||
BuildRequires: python-rpm-macros
|
||||
%if %{with testing}
|
||||
BuildRequires: redis
|
||||
%endif
|
||||
Requires: python-async-timeout >= 4.0.2
|
||||
Requires: redis
|
||||
Recommends: python-hiredis >= 1.0.0
|
||||
Recommends: redis
|
||||
BuildArch: noarch
|
||||
%python_subpackages
|
||||
|
||||
@ -47,8 +51,18 @@ The Python interface to the Redis key-value store.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n redis-%{version}
|
||||
# tox.ini for pytest markers
|
||||
cp %{SOURCE1} .
|
||||
# pytest.ini for pytest markers
|
||||
cp %SOURCE1 .
|
||||
|
||||
# This test passes locally but fails in obs with different
|
||||
# environment, like ALP build...
|
||||
rm tests/test_commands.py*
|
||||
# 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
|
||||
%python_build
|
||||
@ -57,6 +71,7 @@ cp %{SOURCE1} .
|
||||
%python_install
|
||||
%python_expand %fdupes %{buildroot}%{$python_sitelib}
|
||||
|
||||
%if %{with testing}
|
||||
%check
|
||||
# upstream's tox testsuite starts several servers in docker containers listening on different ports.
|
||||
# We just start two of them locally
|
||||
@ -80,9 +95,12 @@ if [ $(getconf LONG_BIT) -ne 64 ]; then
|
||||
# reference precision issues on 32-bit
|
||||
donttest=" or test_geopos"
|
||||
fi
|
||||
# gh#redis/redis-py#2554 and gh#redis/redis-py#2679
|
||||
donttest="$donttest or test_xautoclaim or test_acl_list"
|
||||
%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#2554
|
||||
donttest="$donttest or test_xautoclaim"
|
||||
# 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}
|
||||
%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