summaryrefslogtreecommitdiff
path: root/tests/test_worker.py
diff options
context:
space:
mode:
authorVladimir Protasov <eoranged@users.noreply.github.com>2019-10-08 05:46:06 +0300
committerSelwin Ong <selwin.ong@gmail.com>2019-10-08 09:46:06 +0700
commit8c34e2b353a53971c2390f0ab84ffeba3cb2b8b3 (patch)
tree8018b12e1a5278eff6aac7425be28fda0f8eeab7 /tests/test_worker.py
parent68276e725277f83d1cf7ab164b6b59a7d5d3cf19 (diff)
downloadrq-8c34e2b353a53971c2390f0ab84ffeba3cb2b8b3.tar.gz
Store worker's RQ and Python versions (#1125)
* Store worker version to Redis * Store worker's Python version to Redis * Store worker version in __init__ body as suggested in review
Diffstat (limited to 'tests/test_worker.py')
-rw-r--r--tests/test_worker.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/test_worker.py b/tests/test_worker.py
index 8f27223..25fde13 100644
--- a/tests/test_worker.py
+++ b/tests/test_worker.py
@@ -33,6 +33,7 @@ from rq.job import Job, JobStatus
from rq.registry import StartedJobRegistry, FailedJobRegistry, FinishedJobRegistry
from rq.suspension import resume, suspend
from rq.utils import utcnow
+from rq.version import VERSION
from rq.worker import HerokuWorker, WorkerStatus
@@ -140,6 +141,7 @@ class TestWorker(RQTestCase):
self.assertEqual(worker.get_state(), WorkerStatus.STARTED)
self.assertEqual(worker._job_id, None)
self.assertTrue(worker.key in Worker.all_keys(worker.connection))
+ self.assertEqual(worker.version, VERSION)
# If worker is gone, its keys should also be removed
worker.connection.delete(worker.key)
@@ -920,6 +922,35 @@ class TestWorker(RQTestCase):
w.dequeue_job_and_maintain_ttl(10)
self.assertNotIn("Frank", mock_logger_info.call_args[0][2])
+ def test_worker_version(self):
+ q = Queue()
+ w = Worker([q])
+ w.version = '0.0.0'
+ w.register_birth()
+ self.assertEqual(w.version, '0.0.0')
+ w.refresh()
+ self.assertEqual(w.version, '0.0.0')
+ # making sure that version is preserved when worker is retrieved by key
+ worker = Worker.find_by_key(w.key)
+ self.assertEqual(worker.version, '0.0.0')
+
+ def test_python_version(self):
+ python_version = sys.version
+ q = Queue()
+ w = Worker([q])
+ w.register_birth()
+ self.assertEqual(w.python_version, python_version)
+ # now patching version
+ python_version = 'X.Y.Z.final' # dummy version
+ self.assertNotEqual(python_version, sys.version) # otherwise tests are pointless
+ w2 = Worker([q])
+ w2.python_version = python_version
+ w2.register_birth()
+ self.assertEqual(w2.python_version, python_version)
+ # making sure that version is preserved when worker is retrieved by key
+ worker = Worker.find_by_key(w2.key)
+ self.assertEqual(worker.python_version, python_version)
+
def kill_worker(pid, double_kill):
# wait for the worker to be started over on the main process