diff options
author | Josh Cohen <joshuasteelers@me.com> | 2021-08-23 20:40:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-24 07:40:29 +0700 |
commit | b80045d615d539cf4c565c5541694efe13ea648e (patch) | |
tree | 7957b9aea90eca368d2623ebb31a4da80fb36081 /tests/test_cli.py | |
parent | 246d52b977275e1ae4848a56a07bac0266e6595a (diff) | |
download | rq-b80045d615d539cf4c565c5541694efe13ea648e.tar.gz |
Respect serializer (#1538)
* Add serializer where missing in code
* Fix cli
* Pass option to command
* Add tests for serializer option
* Merge branch 'master' into respect-serializer
- Update enqueue cli to resp. serializer
* Address @selwin's review
Diffstat (limited to 'tests/test_cli.py')
-rw-r--r-- | tests/test_cli.py | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/test_cli.py b/tests/test_cli.py index e653355..72fc510 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -168,6 +168,45 @@ class TestRQCli(RQTestCase): self.assertNotIn(job2, registry) self.assertNotIn(job3, registry) + def test_requeue_with_serializer(self): + """rq requeue -u <url> -S <serializer> --all""" + connection = Redis.from_url(self.redis_url) + queue = Queue('requeue', connection=connection, serializer=JSONSerializer) + registry = queue.failed_job_registry + + runner = CliRunner() + + job = queue.enqueue(div_by_zero) + job2 = queue.enqueue(div_by_zero) + job3 = queue.enqueue(div_by_zero) + + worker = Worker([queue], serializer=JSONSerializer) + worker.work(burst=True) + + self.assertIn(job, registry) + self.assertIn(job2, registry) + self.assertIn(job3, registry) + + result = runner.invoke( + main, + ['requeue', '-u', self.redis_url, '--queue', 'requeue', '-S', 'rq.serializers.JSONSerializer', job.id] + ) + self.assert_normal_execution(result) + + # Only the first specified job is requeued + self.assertNotIn(job, registry) + self.assertIn(job2, registry) + self.assertIn(job3, registry) + + result = runner.invoke( + main, + ['requeue', '-u', self.redis_url, '--queue', 'requeue', '-S', 'rq.serializers.JSONSerializer', '--all'] + ) + self.assert_normal_execution(result) + # With --all flag, all failed jobs are requeued + self.assertNotIn(job2, registry) + self.assertNotIn(job3, registry) + def test_info(self): """rq info -u <url>""" runner = CliRunner() @@ -398,6 +437,32 @@ class TestRQCli(RQTestCase): worker.work(True) self.assertEqual(Job(job_id).result, 'Hi there, Stranger!') + def test_cli_enqueue_with_serializer(self): + """rq enqueue -u <url> -S rq.serializers.JSONSerializer tests.fixtures.say_hello""" + queue = Queue(connection=self.connection, serializer=JSONSerializer) + self.assertTrue(queue.is_empty()) + + runner = CliRunner() + result = runner.invoke(main, ['enqueue', '-u', self.redis_url, '-S', 'rq.serializers.JSONSerializer', 'tests.fixtures.say_hello']) + self.assert_normal_execution(result) + + prefix = 'Enqueued tests.fixtures.say_hello() with job-id \'' + suffix = '\'.\n' + + print(result.stdout) + + self.assertTrue(result.stdout.startswith(prefix)) + self.assertTrue(result.stdout.endswith(suffix)) + + job_id = result.stdout[len(prefix):-len(suffix)] + queue_key = 'rq:queue:default' + self.assertEqual(self.connection.llen(queue_key), 1) + self.assertEqual(self.connection.lrange(queue_key, 0, -1)[0].decode('ascii'), job_id) + + worker = Worker(queue, serializer=JSONSerializer) + worker.work(True) + self.assertEqual(Job(job_id, serializer=JSONSerializer).result, 'Hi there, Stranger!') + def test_cli_enqueue_args(self): """rq enqueue -u <url> tests.fixtures.echo hello ':[1, {"key": "value"}]' json:=["abc"] nojson=def""" queue = Queue(connection=self.connection) |