diff --git a/swh/core/cli/sentry.py b/swh/core/cli/sentry.py index db121a4cd1ada28dccd0d8e2c38fd37522ed613a..d4ed2c59e7df3a4c6444d668ddba0d41434fab93 100644 --- a/swh/core/cli/sentry.py +++ b/swh/core/cli/sentry.py @@ -74,7 +74,7 @@ def _process_sentry_events_pages( ) if full_sentry_responses: sentry_issue_events_url += "?full=true" - while True: + while sentry_issue_events_url: response = requests.get( sentry_issue_events_url, headers={"Authorization": f"Bearer {sentry_token}"} ) @@ -145,7 +145,7 @@ def extract_scheduler_tasks( task_name = celery_job.get("task_name") task_param = celery_job.get("kwargs") if task_param: - key = tuple([task_name] + list(task_param.values())) + key = tuple([task_name] + list(str(v) for v in task_param.values())) task_params[key] = (task_name, task_param) _process_sentry_events_pages( diff --git a/swh/core/tests/data/https_sentry.softwareheritage.org/api_0_issues_1_events,full=true b/swh/core/tests/data/https_sentry.softwareheritage.org/api_0_issues_1_events,full=true new file mode 100644 index 0000000000000000000000000000000000000000..692bf8a4ebc4cd9c10a7fa3a5ca71bae4effa8bf --- /dev/null +++ b/swh/core/tests/data/https_sentry.softwareheritage.org/api_0_issues_1_events,full=true @@ -0,0 +1,31 @@ +[ + { + "tags": [ + { + "key": "environment", + "value": "production" + }, + { + "key": "swh.loader.origin_url", + "value": "https://github.com/pjbgf/sha1cd" + } + ], + "context": { + "celery-job": { + "args": [], + "kwargs": { + "checksum_layout": "nar", + "checksums": { + "sha256": "917f4174b876771b4635a0ef736e0d3913be0b4019ec9cdbad7aed79c09d07bc" + }, + "fallback_urls": [], + "lister_instance_name": "guix.gnu.org", + "lister_name": "nixguix", + "ref": "v0.3.0", + "url": "https://github.com/pjbgf/sha1cd" + }, + "task_name": "swh.loader.git.tasks.LoadGitCheckout" + } + } + } +] \ No newline at end of file diff --git a/swh/core/tests/test_cli_sentry.py b/swh/core/tests/test_cli_sentry.py index 14c805998712fde1aa42db194a530e196d63f7f4..164cddbde9a8b155a249ae788c6ee53468f9127a 100644 --- a/swh/core/tests/test_cli_sentry.py +++ b/swh/core/tests/test_cli_sentry.py @@ -92,3 +92,21 @@ def test_sentry_extract_scheduler_tasks_recurring_policy( csv_tasks_file = os.path.join(datadir, "sentry_expected_scheduler_tasks.csv") with open(csv_tasks_file, "r") as tasks_csv: assert result.output.strip() == tasks_csv.read().replace("oneshot", "recurring") + + +def test_sentry_extract_scheduler_tasks_dict_and_list_task_params( + swhmain, requests_mock_datadir +): + runner = CliRunner() + result = runner.invoke( + swhmain, + [ + "sentry", + "extract-scheduler-tasks", + "-t", + "sentry-token", + "-i", + "1", + ], + ) + assert_result(result)