Make clearer what are fixture functions

main
Vincent Driessen 10 years ago
parent df4d4c8d5d
commit f651a72a50

@ -5,8 +5,6 @@ from __future__ import (absolute_import, division, print_function,
from datetime import datetime from datetime import datetime
from tests import RQTestCase from tests import RQTestCase
from tests.fixtures import (CallableObject, Number, access_self,
long_running_job, say_hello, some_calculation)
from tests.helpers import strip_microseconds from tests.helpers import strip_microseconds
from rq.compat import PY2, as_text from rq.compat import PY2, as_text
@ -17,6 +15,8 @@ from rq.registry import DeferredJobRegistry
from rq.utils import utcformat from rq.utils import utcformat
from rq.worker import Worker from rq.worker import Worker
from . import fixtures
try: try:
from cPickle import loads, dumps from cPickle import loads, dumps
except ImportError: except ImportError:
@ -70,7 +70,7 @@ class TestJob(RQTestCase):
def test_create_typical_job(self): def test_create_typical_job(self):
"""Creation of jobs for function calls.""" """Creation of jobs for function calls."""
job = Job.create(func=some_calculation, args=(3, 4), kwargs=dict(z=2)) job = Job.create(func=fixtures.some_calculation, args=(3, 4), kwargs=dict(z=2))
# Jobs have a random UUID # Jobs have a random UUID
self.assertIsNotNone(job.id) self.assertIsNotNone(job.id)
@ -79,7 +79,7 @@ class TestJob(RQTestCase):
self.assertIsNone(job.instance) self.assertIsNone(job.instance)
# Job data is set... # Job data is set...
self.assertEquals(job.func, some_calculation) self.assertEquals(job.func, fixtures.some_calculation)
self.assertEquals(job.args, (3, 4)) self.assertEquals(job.args, (3, 4))
self.assertEquals(job.kwargs, {'z': 2}) self.assertEquals(job.kwargs, {'z': 2})
@ -90,7 +90,7 @@ class TestJob(RQTestCase):
def test_create_instance_method_job(self): def test_create_instance_method_job(self):
"""Creation of jobs for instance methods.""" """Creation of jobs for instance methods."""
n = Number(2) n = fixtures.Number(2)
job = Job.create(func=n.div, args=(4,)) job = Job.create(func=n.div, args=(4,))
# Job data is set # Job data is set
@ -103,13 +103,13 @@ class TestJob(RQTestCase):
job = Job.create(func='tests.fixtures.say_hello', args=('World',)) job = Job.create(func='tests.fixtures.say_hello', args=('World',))
# Job data is set # Job data is set
self.assertEquals(job.func, say_hello) self.assertEquals(job.func, fixtures.say_hello)
self.assertIsNone(job.instance) self.assertIsNone(job.instance)
self.assertEquals(job.args, ('World',)) self.assertEquals(job.args, ('World',))
def test_create_job_from_callable_class(self): def test_create_job_from_callable_class(self):
"""Creation of jobs using a callable class specifier.""" """Creation of jobs using a callable class specifier."""
kallable = CallableObject() kallable = fixtures.CallableObject()
job = Job.create(func=kallable) job = Job.create(func=kallable)
self.assertEquals(job.func, kallable.__call__) self.assertEquals(job.func, kallable.__call__)
@ -138,7 +138,7 @@ class TestJob(RQTestCase):
def test_save(self): # noqa def test_save(self): # noqa
"""Storing jobs.""" """Storing jobs."""
job = Job.create(func=some_calculation, args=(3, 4), kwargs=dict(z=2)) job = Job.create(func=fixtures.some_calculation, args=(3, 4), kwargs=dict(z=2))
# Saving creates a Redis hash # Saving creates a Redis hash
self.assertEquals(self.testconn.exists(job.key), False) self.assertEquals(self.testconn.exists(job.key), False)
@ -174,7 +174,7 @@ class TestJob(RQTestCase):
def test_persistence_of_typical_jobs(self): def test_persistence_of_typical_jobs(self):
"""Storing typical jobs.""" """Storing typical jobs."""
job = Job.create(func=some_calculation, args=(3, 4), kwargs=dict(z=2)) job = Job.create(func=fixtures.some_calculation, args=(3, 4), kwargs=dict(z=2))
job.save() job.save()
expected_date = strip_microseconds(job.created_at) expected_date = strip_microseconds(job.created_at)
@ -190,15 +190,15 @@ class TestJob(RQTestCase):
def test_persistence_of_parent_job(self): def test_persistence_of_parent_job(self):
"""Storing jobs with parent job, either instance or key.""" """Storing jobs with parent job, either instance or key."""
parent_job = Job.create(func=some_calculation) parent_job = Job.create(func=fixtures.some_calculation)
parent_job.save() parent_job.save()
job = Job.create(func=some_calculation, depends_on=parent_job) job = Job.create(func=fixtures.some_calculation, depends_on=parent_job)
job.save() job.save()
stored_job = Job.fetch(job.id) stored_job = Job.fetch(job.id)
self.assertEqual(stored_job._dependency_id, parent_job.id) self.assertEqual(stored_job._dependency_id, parent_job.id)
self.assertEqual(stored_job.dependency, parent_job) self.assertEqual(stored_job.dependency, parent_job)
job = Job.create(func=some_calculation, depends_on=parent_job.id) job = Job.create(func=fixtures.some_calculation, depends_on=parent_job.id)
job.save() job.save()
stored_job = Job.fetch(job.id) stored_job = Job.fetch(job.id)
self.assertEqual(stored_job._dependency_id, parent_job.id) self.assertEqual(stored_job._dependency_id, parent_job.id)
@ -206,7 +206,7 @@ class TestJob(RQTestCase):
def test_store_then_fetch(self): def test_store_then_fetch(self):
"""Store, then fetch.""" """Store, then fetch."""
job = Job.create(func=some_calculation, args=(3, 4), kwargs=dict(z=2)) job = Job.create(func=fixtures.some_calculation, args=(3, 4), kwargs=dict(z=2))
job.save() job.save()
job2 = Job.fetch(job.id) job2 = Job.fetch(job.id)
@ -225,7 +225,7 @@ class TestJob(RQTestCase):
def test_fetching_unreadable_data(self): def test_fetching_unreadable_data(self):
"""Fetching succeeds on unreadable data, but lazy props fail.""" """Fetching succeeds on unreadable data, but lazy props fail."""
# Set up # Set up
job = Job.create(func=some_calculation, args=(3, 4), kwargs=dict(z=2)) job = Job.create(func=fixtures.some_calculation, args=(3, 4), kwargs=dict(z=2))
job.save() job.save()
# Just replace the data hkey with some random noise # Just replace the data hkey with some random noise
@ -238,7 +238,7 @@ class TestJob(RQTestCase):
def test_job_is_unimportable(self): def test_job_is_unimportable(self):
"""Jobs that cannot be imported throw exception on access.""" """Jobs that cannot be imported throw exception on access."""
job = Job.create(func=say_hello, args=('Lionel',)) job = Job.create(func=fixtures.say_hello, args=('Lionel',))
job.save() job.save()
# Now slightly modify the job to make it unimportable (this is # Now slightly modify the job to make it unimportable (this is
@ -254,7 +254,7 @@ class TestJob(RQTestCase):
def test_custom_meta_is_persisted(self): def test_custom_meta_is_persisted(self):
"""Additional meta data on jobs are stored persisted correctly.""" """Additional meta data on jobs are stored persisted correctly."""
job = Job.create(func=say_hello, args=('Lionel',)) job = Job.create(func=fixtures.say_hello, args=('Lionel',))
job.meta['foo'] = 'bar' job.meta['foo'] = 'bar'
job.save() job.save()
@ -266,25 +266,25 @@ class TestJob(RQTestCase):
def test_result_ttl_is_persisted(self): def test_result_ttl_is_persisted(self):
"""Ensure that job's result_ttl is set properly""" """Ensure that job's result_ttl is set properly"""
job = Job.create(func=say_hello, args=('Lionel',), result_ttl=10) job = Job.create(func=fixtures.say_hello, args=('Lionel',), result_ttl=10)
job.save() job.save()
Job.fetch(job.id, connection=self.testconn) Job.fetch(job.id, connection=self.testconn)
self.assertEqual(job.result_ttl, 10) self.assertEqual(job.result_ttl, 10)
job = Job.create(func=say_hello, args=('Lionel',)) job = Job.create(func=fixtures.say_hello, args=('Lionel',))
job.save() job.save()
Job.fetch(job.id, connection=self.testconn) Job.fetch(job.id, connection=self.testconn)
self.assertEqual(job.result_ttl, None) self.assertEqual(job.result_ttl, None)
def test_description_is_persisted(self): def test_description_is_persisted(self):
"""Ensure that job's custom description is set properly""" """Ensure that job's custom description is set properly"""
job = Job.create(func=say_hello, args=('Lionel',), description='Say hello!') job = Job.create(func=fixtures.say_hello, args=('Lionel',), description='Say hello!')
job.save() job.save()
Job.fetch(job.id, connection=self.testconn) Job.fetch(job.id, connection=self.testconn)
self.assertEqual(job.description, 'Say hello!') self.assertEqual(job.description, 'Say hello!')
# Ensure job description is constructed from function call string # Ensure job description is constructed from function call string
job = Job.create(func=say_hello, args=('Lionel',)) job = Job.create(func=fixtures.say_hello, args=('Lionel',))
job.save() job.save()
Job.fetch(job.id, connection=self.testconn) Job.fetch(job.id, connection=self.testconn)
if PY2: if PY2:
@ -299,23 +299,23 @@ class TestJob(RQTestCase):
def test_job_access_within_job_function(self): def test_job_access_within_job_function(self):
"""The current job is accessible within the job function.""" """The current job is accessible within the job function."""
q = Queue() q = Queue()
q.enqueue(access_self) # access_self calls get_current_job() and asserts q.enqueue(fixtures.access_self) # access_self calls get_current_job() and asserts
w = Worker([q]) w = Worker([q])
w.work(burst=True) w.work(burst=True)
def test_job_access_within_synchronous_job_function(self): def test_job_access_within_synchronous_job_function(self):
queue = Queue(async=False) queue = Queue(async=False)
queue.enqueue(access_self) queue.enqueue(fixtures.access_self)
def test_get_result_ttl(self): def test_get_result_ttl(self):
"""Getting job result TTL.""" """Getting job result TTL."""
job_result_ttl = 1 job_result_ttl = 1
default_ttl = 2 default_ttl = 2
job = Job.create(func=say_hello, result_ttl=job_result_ttl) job = Job.create(func=fixtures.say_hello, result_ttl=job_result_ttl)
job.save() job.save()
self.assertEqual(job.get_result_ttl(default_ttl=default_ttl), job_result_ttl) self.assertEqual(job.get_result_ttl(default_ttl=default_ttl), job_result_ttl)
self.assertEqual(job.get_result_ttl(), job_result_ttl) self.assertEqual(job.get_result_ttl(), job_result_ttl)
job = Job.create(func=say_hello) job = Job.create(func=fixtures.say_hello)
job.save() job.save()
self.assertEqual(job.get_result_ttl(default_ttl=default_ttl), default_ttl) self.assertEqual(job.get_result_ttl(default_ttl=default_ttl), default_ttl)
self.assertEqual(job.get_result_ttl(), None) self.assertEqual(job.get_result_ttl(), None)
@ -323,24 +323,24 @@ class TestJob(RQTestCase):
def test_get_job_ttl(self): def test_get_job_ttl(self):
"""Getting job TTL.""" """Getting job TTL."""
ttl = 1 ttl = 1
job = Job.create(func=say_hello, ttl=ttl) job = Job.create(func=fixtures.say_hello, ttl=ttl)
job.save() job.save()
self.assertEqual(job.get_ttl(), ttl) self.assertEqual(job.get_ttl(), ttl)
job = Job.create(func=say_hello) job = Job.create(func=fixtures.say_hello)
job.save() job.save()
self.assertEqual(job.get_ttl(), None) self.assertEqual(job.get_ttl(), None)
def test_ttl_via_enqueue(self): def test_ttl_via_enqueue(self):
ttl = 1 ttl = 1
queue = Queue(connection=self.testconn) queue = Queue(connection=self.testconn)
job = queue.enqueue(say_hello, ttl=ttl) job = queue.enqueue(fixtures.say_hello, ttl=ttl)
self.assertEqual(job.get_ttl(), ttl) self.assertEqual(job.get_ttl(), ttl)
def test_never_expire_during_execution(self): def test_never_expire_during_execution(self):
"""Test what happens when job expires during execution""" """Test what happens when job expires during execution"""
ttl = 1 ttl = 1
queue = Queue(connection=self.testconn) queue = Queue(connection=self.testconn)
job = queue.enqueue(long_running_job, args=(2,), ttl=ttl) job = queue.enqueue(fixtures.long_running_job, args=(2,), ttl=ttl)
self.assertEqual(job.get_ttl(), ttl) self.assertEqual(job.get_ttl(), ttl)
job.save() job.save()
job.perform() job.perform()
@ -350,7 +350,7 @@ class TestJob(RQTestCase):
def test_cleanup(self): def test_cleanup(self):
"""Test that jobs and results are expired properly.""" """Test that jobs and results are expired properly."""
job = Job.create(func=say_hello) job = Job.create(func=fixtures.say_hello)
job.save() job.save()
# Jobs with negative TTLs don't expire # Jobs with negative TTLs don't expire
@ -370,7 +370,7 @@ class TestJob(RQTestCase):
origin = 'some_queue' origin = 'some_queue'
registry = DeferredJobRegistry(origin, self.testconn) registry = DeferredJobRegistry(origin, self.testconn)
job = Job.create(func=say_hello, origin=origin) job = Job.create(func=fixtures.say_hello, origin=origin)
job._dependency_id = 'id' job._dependency_id = 'id'
job.save() job.save()
@ -382,8 +382,8 @@ class TestJob(RQTestCase):
def test_cancel(self): def test_cancel(self):
"""job.cancel() deletes itself & dependents mapping from Redis.""" """job.cancel() deletes itself & dependents mapping from Redis."""
queue = Queue(connection=self.testconn) queue = Queue(connection=self.testconn)
job = queue.enqueue(say_hello) job = queue.enqueue(fixtures.say_hello)
job2 = Job.create(func=say_hello, depends_on=job) job2 = Job.create(func=fixtures.say_hello, depends_on=job)
job2.register_dependency() job2.register_dependency()
job.cancel() job.cancel()
self.assertFalse(self.testconn.exists(job.key)) self.assertFalse(self.testconn.exists(job.key))
@ -394,8 +394,8 @@ class TestJob(RQTestCase):
def test_create_job_with_id(self): def test_create_job_with_id(self):
"""test creating jobs with a custom ID""" """test creating jobs with a custom ID"""
queue = Queue(connection=self.testconn) queue = Queue(connection=self.testconn)
job = queue.enqueue(say_hello, job_id="1234") job = queue.enqueue(fixtures.say_hello, job_id="1234")
self.assertEqual(job.id, "1234") self.assertEqual(job.id, "1234")
job.perform() job.perform()
self.assertRaises(TypeError, queue.enqueue, say_hello, job_id=1234) self.assertRaises(TypeError, queue.enqueue, fixtures.say_hello, job_id=1234)

Loading…
Cancel
Save