Skip to content

Commit 8cd71af

Browse files
authored
tests(rq) support RQ 1.10.1 (DataDog#3053)
They changed the behavior for calling sync tasks, they will now no longer raise an exception.
1 parent 585ca47 commit 8cd71af

4 files changed

+65
-14
lines changed

riotfile.py

+1
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION):
11951195
"~=1.7.0",
11961196
"~=1.8.0",
11971197
"~=1.9.0",
1198+
"~=1.10.0",
11981199
latest,
11991200
],
12001201
# https://github.com/rq/rq/issues/1469 rq [1.0,1.8] is incompatible with click 8.0+

tests/contrib/rq/test_rq.py

+9-1
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

+9-13
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,21 @@
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.top_level": 1,
2319
"_dd.tracer_kr": 1.0,
2420
"_sampling_priority_v1": 1,
25-
"system.pid": 67067
21+
"system.pid": 4083
2622
},
27-
"duration": 8260000,
28-
"start": 1632150770649318000
23+
"duration": 9563000,
24+
"start": 1638903827586533000
2925
},
3026
{
3127
"name": "rq.job.perform",
@@ -37,10 +33,10 @@
3733
"error": 1,
3834
"meta": {
3935
"error.msg": "error",
40-
"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",
36+
"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",
4137
"error.type": "tests.contrib.rq.jobs.MyException",
42-
"job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749"
38+
"job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63"
4339
},
44-
"duration": 2357000,
45-
"start": 1632150770654147000
40+
"duration": 2109000,
41+
"start": 1638903827592392000
4642
}]]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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.top_level": 1,
23+
"_dd.tracer_kr": 1.0,
24+
"_sampling_priority_v1": 1,
25+
"system.pid": 4490
26+
},
27+
"duration": 9413000,
28+
"start": 1638903903477358000
29+
},
30+
{
31+
"name": "rq.job.perform",
32+
"service": "rq",
33+
"resource": "tests.contrib.rq.jobs.job_fail",
34+
"trace_id": 0,
35+
"span_id": 2,
36+
"parent_id": 1,
37+
"error": 1,
38+
"meta": {
39+
"error.msg": "error",
40+
"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",
41+
"error.type": "tests.contrib.rq.jobs.MyException",
42+
"job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f"
43+
},
44+
"duration": 2844000,
45+
"start": 1638903903483183000
46+
}]]

0 commit comments

Comments
 (0)