From 0f24d1f6dbae1965315a579d0cd46d08213ac600 Mon Sep 17 00:00:00 2001 From: Philipp Wolfer Date: Wed, 1 May 2024 11:57:55 +0200 Subject: [PATCH] PICARD-2880: Ensure ratecontrol.set_minimum_delay stores the delay as int --- picard/webservice/ratecontrol.py | 4 +-- test/test_ratecontrol.py | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 test/test_ratecontrol.py diff --git a/picard/webservice/ratecontrol.py b/picard/webservice/ratecontrol.py index 2544a894f1..51b7042086 100644 --- a/picard/webservice/ratecontrol.py +++ b/picard/webservice/ratecontrol.py @@ -6,7 +6,7 @@ # Copyright (C) 2009 Carlin Mangar # Copyright (C) 2017 Sambhav Kothari # Copyright (C) 2018, 2020-2021, 2023-2024 Laurent Monin -# Copyright (C) 2019, 2022 Philipp Wolfer +# Copyright (C) 2019, 2022, 2024 Philipp Wolfer # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -83,7 +83,7 @@ def set_minimum_delay(hostkey, delay_ms): hostkey is an unique key, for example (host, port) delay_ms is the delay in milliseconds """ - REQUEST_DELAY_MINIMUM[hostkey] = delay_ms + REQUEST_DELAY_MINIMUM[hostkey] = int(delay_ms) def set_minimum_delay_for_url(url, delay_ms): diff --git a/test/test_ratecontrol.py b/test/test_ratecontrol.py new file mode 100644 index 0000000000..d185c853e4 --- /dev/null +++ b/test/test_ratecontrol.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +# +# Picard, the next-generation MusicBrainz tagger +# +# Copyright (C) 2024 Philipp Wolfer +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +from collections import defaultdict + +from test.picardtestcase import PicardTestCase + +from picard.webservice import ratecontrol + + +class RateControlTest(PicardTestCase): + + def setUp(self): + super().setUp() + ratecontrol.REQUEST_DELAY_MINIMUM = defaultdict(lambda: 1000) + + def test_set_minimum_delay(self): + hostkey = ('example.com', 80) + ratecontrol.set_minimum_delay(hostkey, 200) + self.assertEqual(200, ratecontrol.REQUEST_DELAY_MINIMUM[hostkey]) + + def test_set_minimum_delay_with_float(self): + hostkey = ('example.com', 80) + ratecontrol.set_minimum_delay(hostkey, 33.8) + self.assertEqual(33, ratecontrol.REQUEST_DELAY_MINIMUM[hostkey]) + + def test_set_minimum_delay_for_url(self): + hostkey = ('example.com', 443) + ratecontrol.set_minimum_delay_for_url('https://example.com', 300) + self.assertEqual(300, ratecontrol.REQUEST_DELAY_MINIMUM[hostkey])