From 2a8ca506de246632b523819be31e751e186b0d2f Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Tue, 7 Dec 2021 14:08:24 -0500 Subject: [PATCH] tests(rq) support RQ 1.10.1 They changed the behavior for calling sync tasks, they will now no longer raise an exception. --- riotfile.py | 1 + tests/contrib/rq/test_rq.py | 10 +++- ...rib.rq.test_rq.test_queue_failing_job.json | 22 ++++----- ..._rq.test_queue_failing_job_pre_1_10_1.json | 46 +++++++++++++++++++ 4 files changed, 65 insertions(+), 14 deletions(-) create mode 100644 tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job_pre_1_10_1.json diff --git a/riotfile.py b/riotfile.py index fa1b1fc7539..57e1f53920b 100644 --- a/riotfile.py +++ b/riotfile.py @@ -1195,6 +1195,7 @@ def select_pys(min_version=MIN_PYTHON_VERSION, max_version=MAX_PYTHON_VERSION): "~=1.7.0", "~=1.8.0", "~=1.9.0", + "~=1.10.0", latest, ], # https://github.com/rq/rq/issues/1469 rq [1.0,1.8] is incompatible with click 8.0+ diff --git a/tests/contrib/rq/test_rq.py b/tests/contrib/rq/test_rq.py index 6daed5503a9..42a8ab7d68a 100644 --- a/tests/contrib/rq/test_rq.py +++ b/tests/contrib/rq/test_rq.py @@ -22,6 +22,8 @@ # Span data which isn't static to ignore in the snapshots. snapshot_ignores = ["meta.job.id", "meta.error.stack"] +rq_version = tuple(int(x) for x in rq.__version__.split(".")[:3]) + @pytest.fixture() def connection(): @@ -53,8 +55,14 @@ def test_sync_queue_enqueue(sync_queue): sync_queue.enqueue(job_add1, 1) -@snapshot(ignores=snapshot_ignores) +@snapshot(ignores=snapshot_ignores, variants={"": rq_version >= (1, 10, 1), "pre_1_10_1": rq_version < (1, 10, 1)}) def test_queue_failing_job(sync_queue): + # Exception raising behavior was changed in 1.10.1 + # https://github.com/rq/rq/commit/93f34c796f541ea4b1c156426d6524df05753826 + if rq_version >= (1, 10, 1): + sync_queue.enqueue(job_fail) + return + with pytest.raises(Exception): sync_queue.enqueue(job_fail) diff --git a/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job.json b/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job.json index 941b44f89b2..2db6e261340 100644 --- a/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job.json +++ b/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job.json @@ -7,25 +7,21 @@ "span_id": 1, "parent_id": 0, "type": "worker", - "error": 1, "meta": { - "error.msg": "error", - "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", - "error.type": "tests.contrib.rq.jobs.MyException", "job.func_name": "tests.contrib.rq.jobs.job_fail", - "job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749", + "job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63", "queue.name": "sync-q", - "runtime-id": "2fae27a28fd644a6bd2fbbd179813bd4" + "runtime-id": "5b62413a62ad44468e21e09f3dc941d6" }, "metrics": { "_dd.agent_psr": 1.0, "_dd.top_level": 1, "_dd.tracer_kr": 1.0, "_sampling_priority_v1": 1, - "system.pid": 67067 + "system.pid": 4083 }, - "duration": 8260000, - "start": 1632150770649318000 + "duration": 9563000, + "start": 1638903827586533000 }, { "name": "rq.job.perform", @@ -37,10 +33,10 @@ "error": 1, "meta": { "error.msg": "error", - "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", + "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", "error.type": "tests.contrib.rq.jobs.MyException", - "job.id": "41b97d3b-3231-4c5a-b317-6c13a6926749" + "job.id": "b916a7ab-9289-4c07-a40d-260e96c69f63" }, - "duration": 2357000, - "start": 1632150770654147000 + "duration": 2109000, + "start": 1638903827592392000 }]] diff --git a/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job_pre_1_10_1.json b/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job_pre_1_10_1.json new file mode 100644 index 00000000000..ad62b250057 --- /dev/null +++ b/tests/snapshots/tests.contrib.rq.test_rq.test_queue_failing_job_pre_1_10_1.json @@ -0,0 +1,46 @@ +[[ + { + "name": "rq.queue.enqueue_job", + "service": "rq", + "resource": "tests.contrib.rq.jobs.job_fail", + "trace_id": 0, + "span_id": 1, + "parent_id": 0, + "type": "worker", + "error": 1, + "meta": { + "error.msg": "error", + "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", + "error.type": "tests.contrib.rq.jobs.MyException", + "job.func_name": "tests.contrib.rq.jobs.job_fail", + "job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f", + "queue.name": "sync-q", + "runtime-id": "e60df3a2728d440a8398fcbd9566b7f1" + }, + "metrics": { + "_dd.agent_psr": 1.0, + "_dd.top_level": 1, + "_dd.tracer_kr": 1.0, + "_sampling_priority_v1": 1, + "system.pid": 4490 + }, + "duration": 9413000, + "start": 1638903903477358000 + }, + { + "name": "rq.job.perform", + "service": "rq", + "resource": "tests.contrib.rq.jobs.job_fail", + "trace_id": 0, + "span_id": 2, + "parent_id": 1, + "error": 1, + "meta": { + "error.msg": "error", + "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", + "error.type": "tests.contrib.rq.jobs.MyException", + "job.id": "0775ce83-6cb6-454b-aed1-77bed1a66f8f" + }, + "duration": 2844000, + "start": 1638903903483183000 + }]]