mirror of
https://github.com/django-q2/django-q2.git
synced 2026-10-08 03:08:12 +08:00
Replace global Conf mangling with monkeypatch
The test suite, especially for the brokers, was heavily dependant on the success of the tests preceeding it to pass. This commit should eliminate that dependency and allow tests to fail without affecting others. It also removes the need to cleanup globals manually after a test.
This commit is contained in:
@@ -9,7 +9,7 @@ from django_q.conf import Conf
|
||||
from django_q.humanhash import uuid
|
||||
|
||||
|
||||
def test_broker():
|
||||
def test_broker(monkeypatch):
|
||||
broker = Broker()
|
||||
broker.enqueue('test')
|
||||
broker.dequeue()
|
||||
@@ -27,39 +27,35 @@ def test_broker():
|
||||
assert broker.get_stat('test_1') == 'test'
|
||||
assert broker.get_stats('test:*')[0] == 'test'
|
||||
# stats with no cache
|
||||
Conf.CACHE = 'not_configured'
|
||||
monkeypatch.setattr(Conf, 'CACHE', 'not_configured')
|
||||
broker.cache = broker.get_cache()
|
||||
assert broker.get_stat('test_1') is None
|
||||
broker.set_stat('test_1', 'test', 3)
|
||||
assert broker.get_stat('test_1') is None
|
||||
assert broker.get_stats('test:*') is None
|
||||
Conf.CACHE = 'default'
|
||||
|
||||
|
||||
def test_redis():
|
||||
Conf.DJANGO_REDIS = None
|
||||
def test_redis(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'DJANGO_REDIS', None)
|
||||
broker = get_broker()
|
||||
assert broker.ping() is True
|
||||
assert broker.info() is not None
|
||||
Conf.REDIS = {'host': '127.0.0.1', 'port': 7799}
|
||||
monkeypatch.setattr(Conf, 'REDIS', {'host': '127.0.0.1', 'port': 7799})
|
||||
broker = get_broker()
|
||||
with pytest.raises(Exception):
|
||||
broker.ping()
|
||||
Conf.REDIS = None
|
||||
Conf.DJANGO_REDIS = 'default'
|
||||
|
||||
|
||||
def test_custom():
|
||||
Conf.BROKER_CLASS = 'brokers.redis_broker.Redis'
|
||||
def test_custom(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'BROKER_CLASS', 'brokers.redis_broker.Redis')
|
||||
broker = get_broker()
|
||||
assert broker.ping() is True
|
||||
assert broker.info() is not None
|
||||
assert broker.__class__.__name__ == 'Redis'
|
||||
Conf.BROKER_CLASS = None
|
||||
|
||||
|
||||
def test_disque():
|
||||
Conf.DISQUE_NODES = ['127.0.0.1:7711']
|
||||
def test_disque(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'DISQUE_NODES', ['127.0.0.1:7711'])
|
||||
# check broker
|
||||
broker = get_broker(list_key='disque_test')
|
||||
assert broker.ping() is True
|
||||
@@ -75,7 +71,7 @@ def test_disque():
|
||||
broker.acknowledge(task[0])
|
||||
assert broker.queue_size() == 0
|
||||
# Retry test
|
||||
Conf.RETRY = 1
|
||||
monkeypatch.setattr(Conf, 'RETRY', 1)
|
||||
broker.enqueue('test')
|
||||
assert broker.queue_size() == 1
|
||||
broker.dequeue()
|
||||
@@ -97,8 +93,8 @@ def test_disque():
|
||||
# bulk test
|
||||
for i in range(5):
|
||||
broker.enqueue('test')
|
||||
Conf.BULK = 5
|
||||
Conf.DISQUE_FASTACK = True
|
||||
monkeypatch.setattr(Conf, 'BULK', 5)
|
||||
monkeypatch.setattr(Conf, 'DISQUE_FASTACK', True)
|
||||
tasks = broker.dequeue()
|
||||
for task in tasks:
|
||||
assert task is not None
|
||||
@@ -111,21 +107,16 @@ def test_disque():
|
||||
broker.delete_queue()
|
||||
assert broker.queue_size() == 0
|
||||
# connection test
|
||||
Conf.DISQUE_NODES = ['127.0.0.1:7798', '127.0.0.1:7799']
|
||||
monkeypatch.setattr(Conf, 'DISQUE_NODES', ['127.0.0.1:7798', '127.0.0.1:7799'])
|
||||
with pytest.raises(redis.exceptions.ConnectionError):
|
||||
broker.get_connection()
|
||||
# back to django-redis
|
||||
Conf.DISQUE_NODES = None
|
||||
Conf.DISQUE_FASTACK = False
|
||||
|
||||
|
||||
@pytest.mark.skipif(not os.getenv('IRON_MQ_TOKEN'),
|
||||
reason="requires IronMQ credentials")
|
||||
def test_ironmq():
|
||||
Conf.DISQUE_NODES = None
|
||||
Conf.SQS = None
|
||||
Conf.IRON_MQ = {'token': os.getenv('IRON_MQ_TOKEN'),
|
||||
'project_id': os.getenv('IRON_MQ_PROJECT_ID')}
|
||||
def test_ironmq(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'IRON_MQ', {'token': os.getenv('IRON_MQ_TOKEN'),
|
||||
'project_id': os.getenv('IRON_MQ_PROJECT_ID')})
|
||||
# check broker
|
||||
broker = get_broker(list_key=uuid()[0])
|
||||
assert broker.ping() is True
|
||||
@@ -143,7 +134,7 @@ def test_ironmq():
|
||||
broker.acknowledge(task[0])
|
||||
assert broker.dequeue() is None
|
||||
# Retry test
|
||||
# Conf.RETRY = 1
|
||||
# monkeypatch.setattr(Conf, 'RETRY', 1)
|
||||
# broker.enqueue('test')
|
||||
# assert broker.dequeue() is not None
|
||||
# sleep(3)
|
||||
@@ -162,7 +153,7 @@ def test_ironmq():
|
||||
# bulk test
|
||||
for i in range(5):
|
||||
broker.enqueue('test')
|
||||
Conf.BULK = 5
|
||||
monkeypatch.setattr(Conf, 'BULK', 5)
|
||||
tasks = broker.dequeue()
|
||||
for task in tasks:
|
||||
assert task is not None
|
||||
@@ -175,19 +166,14 @@ def test_ironmq():
|
||||
broker.purge_queue()
|
||||
assert broker.dequeue() is None
|
||||
broker.delete_queue()
|
||||
# back to django-redis
|
||||
Conf.IRON_MQ = None
|
||||
Conf.DJANGO_REDIS = 'default'
|
||||
|
||||
|
||||
@pytest.mark.skipif(not os.getenv('AWS_ACCESS_KEY_ID'),
|
||||
reason="requires AWS credentials")
|
||||
def test_sqs():
|
||||
Conf.IRON_MQ = None
|
||||
Conf.DISQUE_NODES = None
|
||||
Conf.SQS = {'aws_region': os.getenv('AWS_REGION'),
|
||||
'aws_access_key_id': os.getenv('AWS_ACCESS_KEY_ID'),
|
||||
'aws_secret_access_key': os.getenv('AWS_SECRET_ACCESS_KEY')}
|
||||
def test_sqs(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'SQS', {'aws_region': os.getenv('AWS_REGION'),
|
||||
'aws_access_key_id': os.getenv('AWS_ACCESS_KEY_ID'),
|
||||
'aws_secret_access_key': os.getenv('AWS_SECRET_ACCESS_KEY')})
|
||||
# check broker
|
||||
broker = get_broker(list_key=uuid()[0])
|
||||
assert broker.ping() is True
|
||||
@@ -201,7 +187,7 @@ def test_sqs():
|
||||
broker.acknowledge(task[0])
|
||||
assert broker.dequeue() is None
|
||||
# Retry test
|
||||
Conf.RETRY = 1
|
||||
monkeypatch.setattr(Conf, 'RETRY', 1)
|
||||
broker.enqueue('test')
|
||||
assert broker.dequeue() is not None
|
||||
sleep(2)
|
||||
@@ -222,7 +208,7 @@ def test_sqs():
|
||||
# bulk test
|
||||
for i in range(10):
|
||||
broker.enqueue('test')
|
||||
Conf.BULK = 12
|
||||
monkeypatch.setattr(Conf, 'BULK', 12)
|
||||
tasks = broker.dequeue()
|
||||
for task in tasks:
|
||||
assert task is not None
|
||||
@@ -234,15 +220,11 @@ def test_sqs():
|
||||
broker.enqueue('test')
|
||||
broker.purge_queue()
|
||||
broker.delete_queue()
|
||||
# back to django-redis
|
||||
Conf.SQS = None
|
||||
Conf.BULK = 1
|
||||
Conf.DJANGO_REDIS = 'default'
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_orm():
|
||||
Conf.ORM = 'default'
|
||||
def test_orm(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'ORM', 'default')
|
||||
# check broker
|
||||
broker = get_broker(list_key='orm_test')
|
||||
assert broker.ping() is True
|
||||
@@ -258,7 +240,7 @@ def test_orm():
|
||||
broker.acknowledge(task[0])
|
||||
assert broker.queue_size() == 0
|
||||
# Retry test
|
||||
Conf.RETRY = 1
|
||||
monkeypatch.setattr(Conf, 'RETRY', 1)
|
||||
broker.enqueue('test')
|
||||
assert broker.queue_size() == 1
|
||||
broker.dequeue()
|
||||
@@ -280,7 +262,7 @@ def test_orm():
|
||||
# bulk test
|
||||
for i in range(5):
|
||||
broker.enqueue('test')
|
||||
Conf.BULK = 5
|
||||
monkeypatch.setattr(Conf, 'BULK', 5)
|
||||
tasks = broker.dequeue()
|
||||
assert broker.lock_size() == Conf.BULK
|
||||
for task in tasks:
|
||||
@@ -295,13 +277,11 @@ def test_orm():
|
||||
broker.enqueue('test')
|
||||
broker.delete_queue()
|
||||
assert broker.queue_size() == 0
|
||||
# back to django-redis
|
||||
Conf.ORM = None
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_mongo():
|
||||
Conf.MONGO = {'host': '127.0.0.1', 'port': 27017}
|
||||
def test_mongo(monkeypatch):
|
||||
monkeypatch.setattr(Conf, 'MONGO', {'host': '127.0.0.1', 'port': 27017})
|
||||
# check broker
|
||||
broker = get_broker(list_key='mongo_test')
|
||||
assert broker.ping() is True
|
||||
@@ -317,7 +297,7 @@ def test_mongo():
|
||||
broker.acknowledge(task[0])
|
||||
assert broker.queue_size() == 0
|
||||
# Retry test
|
||||
Conf.RETRY = 1
|
||||
monkeypatch.setattr(Conf, 'RETRY', 1)
|
||||
broker.enqueue('test')
|
||||
assert broker.queue_size() == 1
|
||||
broker.dequeue()
|
||||
@@ -356,5 +336,3 @@ def test_mongo():
|
||||
broker.purge_queue()
|
||||
broker.delete_queue()
|
||||
assert broker.queue_size() == 0
|
||||
# back to django-redis
|
||||
Conf.ORM = None
|
||||
|
||||
Reference in New Issue
Block a user