From 2c4ff52c47b71af4c216e54c7eb2ce6abbfbfef7 Mon Sep 17 00:00:00 2001 From: gmega Date: Tue, 28 Jan 2025 18:20:28 -0300 Subject: [PATCH] fix: remove pointless retry of removals, add test --- benchmarks/deluge/deluge_node.py | 14 ++------------ benchmarks/deluge/tests/test_deluge_node.py | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/benchmarks/deluge/deluge_node.py b/benchmarks/deluge/deluge_node.py index 64ed9f4..77e32eb 100644 --- a/benchmarks/deluge/deluge_node.py +++ b/benchmarks/deluge/deluge_node.py @@ -206,12 +206,9 @@ class ResilientCallWrapper: class DelugeDownloadHandle(DownloadHandle): - def __init__( - self, torrent: Torrent, node: DelugeNode, missing_retries: int = 10 - ) -> None: + def __init__(self, torrent: Torrent, node: DelugeNode) -> None: self._node = node self.torrent = torrent - self.missing_retries = missing_retries @property def node(self) -> DelugeNode: @@ -228,16 +225,9 @@ class DelugeDownloadHandle(DownloadHandle): ) if len(response) == 0: - if self.missing_retries == 0: - raise ValueError( - f"Client {self._node.name} has no torrents matching name {name}." - ) - - logger.warning( + raise ValueError( f"Client {self._node.name} has no torrents matching name {name}." ) - self.missing_retries -= 1 - return False status = list(response.values())[0] return status[b"is_seed"] diff --git a/benchmarks/deluge/tests/test_deluge_node.py b/benchmarks/deluge/tests/test_deluge_node.py index f0d6650..dd862a6 100644 --- a/benchmarks/deluge/tests/test_deluge_node.py +++ b/benchmarks/deluge/tests/test_deluge_node.py @@ -90,6 +90,27 @@ def test_should_return_false_when_file_does_not_exist( assert not deluge_node2.remove(torrent) +@pytest.mark.integration +def test_should_raise_value_error_when_awaiting_on_non_existing_file( + deluge_node1: DelugeNode, tracker: Tracker +): + # XXX This is a bit convoluted, but the easiest way I could find to do this. + torrent = deluge_node1.genseed( + size=megabytes(1), + seed=1234, + meta=DelugeMeta(name="dataset1", announce_url=tracker.announce_url), + ) + + deluge_node1.remove(torrent) + + handle = deluge_node1.leech(torrent) + + deluge_node1.remove(torrent) + + with pytest.raises(ValueError): + handle.await_for_completion(5) + + class FlakyClient: def __init__(self): self.count = 0