Skip to content

Commit be1380e

Browse files
tests(rq) support RQ 1.10.1 (backport #3053) (#3054)
* tests(rq) support RQ 1.10.1 (#3053) They changed the behavior for calling sync tasks, they will now no longer raise an exception. (cherry picked from commit 8cd71af) * Update tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job_pre_1_10_1.json Co-authored-by: Brett Langdon <[email protected]>
1 parent fe83cee commit be1380e

File tree

4 files changed

+64
-14
lines changed

4 files changed

+64
-14
lines changed

riotfile.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1138,6 +1138,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION):
11381138
"~=1.7.0",
11391139
"~=1.8.0",
11401140
"~=1.9.0",
1141+
"~=1.10.0",
11411142
latest,
11421143
],
11431144
# https://github.com/rq/rq/issues/1469 rq [1.0,1.8] is incompatible with click 8.0+

tests/contrib/rq/test_rq.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
# Span data which isn't static to ignore in the snapshots.
2323
snapshot_ignores = ["meta.job.id", "meta.error.stack"]
2424

25+
rq_version = tuple(int(x) for x in rq.__version__.split(".")[:3])
26+
2527

2628
@pytest.fixture()
2729
def connection():
@@ -53,8 +55,14 @@ def test_sync_queue_enqueue(sync_queue):
5355
sync_queue.enqueue(job_add1, 1)
5456

5557

56-
@snapshot(ignores=snapshot_ignores)
58+
@snapshot(ignores=snapshot_ignores, variants={"": rq_version >= (1, 10, 1), "pre_1_10_1": rq_version < (1, 10, 1)})
5759
def test_queue_failing_job(sync_queue):
60+
# Exception raising behavior was changed in 1.10.1
61+
# https://github.com/rq/rq/commit/93f34c796f541ea4b1c156426d6524df05753826
62+
if rq_version >= (1, 10, 1):
63+
sync_queue.enqueue(job_fail)
64+
return
65+
5866
with pytest.raises(Exception):
5967
sync_queue.enqueue(job_fail)
6068

tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job.json

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,20 @@
77
"span_id": 1,
88
"parent_id": 0,
99
"type": "worker",
10-
"error": 1,
1110
"meta": {
12-
"error.msg": "error",
13-
"error.stack": "Traceback (most recent call last):\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 140, in traced_queue_enqueue_job\n return func(*args, **kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/queue.py\", line 356, in enqueue_job\n job = self.run_job(job)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/queue.py\", line 282, in run_job\n job.perform()\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/trace_utils.py\", line 162, in wrapper\n return func(mod, pin, wrapped, instance, args, kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 588, in perform\n self._result = self._execute()\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 594, in _execute\n return self.func(*self.args, **self.kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
14-
"error.type": "tests.contrib.rq.jobs.MyException",
1511
"job.func_name": "tests.contrib.rq.jobs.job_fail",
16-
"job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749",
12+
"job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63",
1713
"queue.name": "sync-q",
18-
"runtime-id": "2fae27a28fd644a6bd2fbbd179813bd4"
14+
"runtime-id": "5b62413a62ad44468e21e09f3dc941d6"
1915
},
2016
"metrics": {
2117
"_dd.agent_psr": 1.0,
2218
"_dd.tracer_kr": 1.0,
2319
"_sampling_priority_v1": 1,
24-
"system.pid": 67067
20+
"system.pid": 4083
2521
},
26-
"duration": 8260000,
27-
"start": 1632150770649318000
22+
"duration": 9563000,
23+
"start": 1638903827586533000
2824
},
2925
{
3026
"name": "rq.job.perform",
@@ -36,10 +32,10 @@
3632
"error": 1,
3733
"meta": {
3834
"error.msg": "error",
39-
"error.stack": "Traceback (most recent call last):\n File \"/Users/kyle.verhoog/dev/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 588, in perform\n self._result = self._execute()\n File \"/Users/kyle.verhoog/dev/dd-trace-py/.riot/venv_py395_click712_rq~100/lib/python3.9/site-packages/rq/job.py\", line 594, in _execute\n return self.func(*self.args, **self.kwargs)\n File \"/Users/kyle.verhoog/dev/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
35+
"error.stack": "Traceback (most recent call last):\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq_click712/lib/python3.10/site-packages/rq/job.py\", line 821, in perform\n self._result = self._execute()\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq_click712/lib/python3.10/site-packages/rq/job.py\", line 844, in _execute\n result = self.func(*self.args, **self.kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
4036
"error.type": "tests.contrib.rq.jobs.MyException",
41-
"job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749"
37+
"job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63"
4238
},
43-
"duration": 2357000,
44-
"start": 1632150770654147000
39+
"duration": 2109000,
40+
"start": 1638903827592392000
4541
}]]
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
[[
2+
{
3+
"name": "rq.queue.enqueue_job",
4+
"service": "rq",
5+
"resource": "tests.contrib.rq.jobs.job_fail",
6+
"trace_id": 0,
7+
"span_id": 1,
8+
"parent_id": 0,
9+
"type": "worker",
10+
"error": 1,
11+
"meta": {
12+
"error.msg": "error",
13+
"error.stack": "Traceback (most recent call last):\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 140, in traced_queue_enqueue_job\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/queue.py\", line 570, in enqueue_job\n job = self.run_job(job)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/queue.py\", line 448, in run_job\n job.perform()\n File \"/root/project/ddtrace/contrib/trace_utils.py\", line 162, in wrapper\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 749, in perform\n self._result = self._execute()\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 772, in _execute\n result = self.func(*self.args, **self.kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
14+
"error.type": "tests.contrib.rq.jobs.MyException",
15+
"job.func_name": "tests.contrib.rq.jobs.job_fail",
16+
"job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f",
17+
"queue.name": "sync-q",
18+
"runtime-id": "e60df3a2728d440a8398fcbd9566b7f1"
19+
},
20+
"metrics": {
21+
"_dd.agent_psr": 1.0,
22+
"_dd.tracer_kr": 1.0,
23+
"_sampling_priority_v1": 1,
24+
"system.pid": 4490
25+
},
26+
"duration": 9413000,
27+
"start": 1638903903477358000
28+
},
29+
{
30+
"name": "rq.job.perform",
31+
"service": "rq",
32+
"resource": "tests.contrib.rq.jobs.job_fail",
33+
"trace_id": 0,
34+
"span_id": 2,
35+
"parent_id": 1,
36+
"error": 1,
37+
"meta": {
38+
"error.msg": "error",
39+
"error.stack": "Traceback (most recent call last):\n File \"/Users/brett.langdon/datadog/dd-trace-py/ddtrace/contrib/rq/__init__.py\", line 193, in traced_job_perform\n return func(*args, **kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 749, in perform\n self._result = self._execute()\n File \"/Users/brett.langdon/datadog/dd-trace-py/.riot/venv_py3100_rq~190_click712/lib/python3.10/site-packages/rq/job.py\", line 772, in _execute\n result = self.func(*self.args, **self.kwargs)\n File \"/Users/brett.langdon/datadog/dd-trace-py/tests/contrib/rq/jobs.py\", line 10, in job_fail\n raise MyException(\"error\")\ntests.contrib.rq.jobs.MyException: error\n",
40+
"error.type": "tests.contrib.rq.jobs.MyException",
41+
"job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f"
42+
},
43+
"duration": 2844000,
44+
"start": 1638903903483183000
45+
}]]

0 commit comments

Comments
 (0)