diff options
| author | Dirk Engling <erdgeist@erdgeist.org> | 2026-11-03 06:02:47 +0100 |
|---|---|---|
| committer | Dirk Engling <erdgeist@erdgeist.org> | 2026-11-03 06:02:47 +0100 |
| commit | f16ea39889c0fd65f3e533cf40cc3a0a33ac1c33 (patch) | |
| tree | ce43369ece6303d35737b95ed203936f1cb2eb73 /tests/integration/test_livesync.py | |
| parent | b142979a036ac53c4e59e1906fed01a76198ba84 (diff) | |
Diffstat (limited to 'tests/integration/test_livesync.py')
| -rw-r--r-- | tests/integration/test_livesync.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/integration/test_livesync.py b/tests/integration/test_livesync.py index 3a9ee58..52e871f 100644 --- a/tests/integration/test_livesync.py +++ b/tests/integration/test_livesync.py | |||
| @@ -164,3 +164,45 @@ class LiveSyncUnconfigured(TrackerTestCase): | |||
| 164 | for i in range(200): | 164 | for i in range(200): |
| 165 | self.tracker.announce(self.hash_for("no-cluster-%d" % i), port=6881 + i, left=0) | 165 | self.tracker.announce(self.hash_for("no-cluster-%d" % i), port=6881 + i, left=0) |
| 166 | self.assertEqual(self.tracker.torrent_count(), 200) | 166 | self.assertEqual(self.tracker.torrent_count(), 200) |
| 167 | |||
| 168 | |||
| 169 | # RFC 2365 sets 239.192.0.0/14 aside for exactly this kind of use | ||
| 170 | OWN_GROUP = "239.192.0.7" | ||
| 171 | |||
| 172 | |||
| 173 | @unittest.skipUnless(has_livesync(), "this build has no WANT_SYNC_LIVE") | ||
| 174 | class LiveSyncGroup(TrackerTestCase): | ||
| 175 | config = ("livesync.cluster.group %s\n" | ||
| 176 | "livesync.cluster.listen 127.0.0.1:{livesync_port}\n" | ||
| 177 | "livesync.cluster.node_ip 127.0.0.1\n" % OWN_GROUP) | ||
| 178 | |||
| 179 | def test_the_configured_group_is_joined(self): | ||
| 180 | info_hash = self.hash_for("own-group") | ||
| 181 | self.tracker.livesync_send(packet(SYNC_PEER4, [(info_hash, peer4("10.1.3.1", 6881, FLAG_SEEDING))]), | ||
| 182 | group=OWN_GROUP) | ||
| 183 | self.assertTrue(self.tracker.wait_until(lambda: self.tracker.torrent_count() == 1)) | ||
| 184 | |||
| 185 | def test_the_default_group_is_left_alone(self): | ||
| 186 | """A cluster that picked its own group should not hear the one every | ||
| 187 | other opentracker is on.""" | ||
| 188 | info_hash = self.hash_for("not-our-group") | ||
| 189 | self.tracker.livesync_send(packet(SYNC_PEER4, [(info_hash, peer4("10.1.3.2", 6881, FLAG_SEEDING))])) | ||
| 190 | self.assertFalse(self.tracker.wait_until(lambda: self.tracker.torrent_count() != 0, timeout=1)) | ||
| 191 | |||
| 192 | |||
| 193 | @unittest.skipUnless(has_livesync(), "this build has no WANT_SYNC_LIVE") | ||
| 194 | class LiveSyncGroupRefused(TrackerTestCase): | ||
| 195 | """A unicast address is not a group. The line is refused like any other | ||
| 196 | bad config line, which leaves the default standing.""" | ||
| 197 | |||
| 198 | config = ("livesync.cluster.group 10.0.0.1\n" | ||
| 199 | "livesync.cluster.listen 127.0.0.1:{livesync_port}\n" | ||
| 200 | "livesync.cluster.node_ip 127.0.0.1\n") | ||
| 201 | |||
| 202 | def test_the_line_is_refused(self): | ||
| 203 | self.assertIn("Parse error", self.tracker.output()) | ||
| 204 | |||
| 205 | def test_and_the_default_group_still_works(self): | ||
| 206 | info_hash = self.hash_for("fallback-group") | ||
| 207 | self.tracker.livesync_send(packet(SYNC_PEER4, [(info_hash, peer4("10.1.3.3", 6881, FLAG_SEEDING))])) | ||
| 208 | self.assertTrue(self.tracker.wait_until(lambda: self.tracker.torrent_count() == 1)) | ||
