Skip to content

Commit 15c14c5

Browse files
committed
refactor: [#1495] rename PeerList to Swarm
1 parent cb51ec9 commit 15c14c5

4 files changed

Lines changed: 63 additions & 61 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
pub mod peer_list;
1+
pub mod swarm;
22
pub mod torrent;

packages/torrent-repository/src/entry/peer_list.rs renamed to packages/torrent-repository/src/entry/swarm.rs

Lines changed: 57 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
//! A peer list.
2+
use std::collections::BTreeMap;
23
use std::net::SocketAddr;
34
use std::sync::Arc;
45

56
use aquatic_udp_protocol::PeerId;
6-
use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch};
7+
use torrust_tracker_primitives::peer::{self, Peer};
8+
use torrust_tracker_primitives::DurationSinceUnixEpoch;
79

810
// code-review: the current implementation uses the peer Id as the ``BTreeMap``
911
// key. That would allow adding two identical peers except for the Id.
1012
// For example, two peers with the same socket address but a different peer Id
1113
// would be allowed. That would lead to duplicated peers in the tracker responses.
1214

1315
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
14-
pub struct PeerList {
15-
peers: std::collections::BTreeMap<PeerId, Arc<peer::Peer>>,
16+
pub struct Swarm {
17+
peers: BTreeMap<PeerId, Arc<Peer>>,
1618
}
1719

18-
impl PeerList {
20+
impl Swarm {
1921
#[must_use]
2022
pub fn len(&self) -> usize {
2123
self.peers.len()
@@ -94,193 +96,193 @@ mod tests {
9496
use torrust_tracker_primitives::peer::fixture::PeerBuilder;
9597
use torrust_tracker_primitives::DurationSinceUnixEpoch;
9698

97-
use crate::entry::peer_list::PeerList;
99+
use crate::entry::swarm::Swarm;
98100

99101
#[test]
100102
fn be_empty_when_no_peers_have_been_inserted() {
101-
let peer_list = PeerList::default();
103+
let swarm = Swarm::default();
102104

103-
assert!(peer_list.is_empty());
105+
assert!(swarm.is_empty());
104106
}
105107

106108
#[test]
107109
fn have_zero_length_when_no_peers_have_been_inserted() {
108-
let peer_list = PeerList::default();
110+
let swarm = Swarm::default();
109111

110-
assert_eq!(peer_list.len(), 0);
112+
assert_eq!(swarm.len(), 0);
111113
}
112114

113115
#[test]
114116
fn allow_inserting_a_new_peer() {
115-
let mut peer_list = PeerList::default();
117+
let mut swarm = Swarm::default();
116118

117119
let peer = PeerBuilder::default().build();
118120

119-
assert_eq!(peer_list.upsert(peer.into()), None);
121+
assert_eq!(swarm.upsert(peer.into()), None);
120122
}
121123

122124
#[test]
123125
fn allow_updating_a_preexisting_peer() {
124-
let mut peer_list = PeerList::default();
126+
let mut swarm = Swarm::default();
125127

126128
let peer = PeerBuilder::default().build();
127129

128-
peer_list.upsert(peer.into());
130+
swarm.upsert(peer.into());
129131

130-
assert_eq!(peer_list.upsert(peer.into()), Some(Arc::new(peer)));
132+
assert_eq!(swarm.upsert(peer.into()), Some(Arc::new(peer)));
131133
}
132134

133135
#[test]
134136
fn allow_getting_all_peers() {
135-
let mut peer_list = PeerList::default();
137+
let mut swarm = Swarm::default();
136138

137139
let peer = PeerBuilder::default().build();
138140

139-
peer_list.upsert(peer.into());
141+
swarm.upsert(peer.into());
140142

141-
assert_eq!(peer_list.get_all(None), [Arc::new(peer)]);
143+
assert_eq!(swarm.get_all(None), [Arc::new(peer)]);
142144
}
143145

144146
#[test]
145147
fn allow_getting_one_peer_by_id() {
146-
let mut peer_list = PeerList::default();
148+
let mut swarm = Swarm::default();
147149

148150
let peer = PeerBuilder::default().build();
149151

150-
peer_list.upsert(peer.into());
152+
swarm.upsert(peer.into());
151153

152-
assert_eq!(peer_list.get(&peer.peer_id), Some(Arc::new(peer)).as_ref());
154+
assert_eq!(swarm.get(&peer.peer_id), Some(Arc::new(peer)).as_ref());
153155
}
154156

155157
#[test]
156158
fn increase_the_number_of_peers_after_inserting_a_new_one() {
157-
let mut peer_list = PeerList::default();
159+
let mut swarm = Swarm::default();
158160

159161
let peer = PeerBuilder::default().build();
160162

161-
peer_list.upsert(peer.into());
163+
swarm.upsert(peer.into());
162164

163-
assert_eq!(peer_list.len(), 1);
165+
assert_eq!(swarm.len(), 1);
164166
}
165167

166168
#[test]
167169
fn decrease_the_number_of_peers_after_removing_one() {
168-
let mut peer_list = PeerList::default();
170+
let mut swarm = Swarm::default();
169171

170172
let peer = PeerBuilder::default().build();
171173

172-
peer_list.upsert(peer.into());
174+
swarm.upsert(peer.into());
173175

174-
peer_list.remove(&peer.peer_id);
176+
swarm.remove(&peer.peer_id);
175177

176-
assert!(peer_list.is_empty());
178+
assert!(swarm.is_empty());
177179
}
178180

179181
#[test]
180182
fn allow_removing_an_existing_peer() {
181-
let mut peer_list = PeerList::default();
183+
let mut swarm = Swarm::default();
182184

183185
let peer = PeerBuilder::default().build();
184186

185-
peer_list.upsert(peer.into());
187+
swarm.upsert(peer.into());
186188

187-
peer_list.remove(&peer.peer_id);
189+
swarm.remove(&peer.peer_id);
188190

189-
assert_eq!(peer_list.get(&peer.peer_id), None);
191+
assert_eq!(swarm.get(&peer.peer_id), None);
190192
}
191193

192194
#[test]
193195
fn allow_getting_all_peers_excluding_peers_with_a_given_address() {
194-
let mut peer_list = PeerList::default();
196+
let mut swarm = Swarm::default();
195197

196198
let peer1 = PeerBuilder::default()
197199
.with_peer_id(&PeerId(*b"-qB00000000000000001"))
198200
.with_peer_addr(&SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 6969))
199201
.build();
200-
peer_list.upsert(peer1.into());
202+
swarm.upsert(peer1.into());
201203

202204
let peer2 = PeerBuilder::default()
203205
.with_peer_id(&PeerId(*b"-qB00000000000000002"))
204206
.with_peer_addr(&SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 2)), 6969))
205207
.build();
206-
peer_list.upsert(peer2.into());
208+
swarm.upsert(peer2.into());
207209

208-
assert_eq!(peer_list.get_peers_excluding_addr(&peer2.peer_addr, None), [Arc::new(peer1)]);
210+
assert_eq!(swarm.get_peers_excluding_addr(&peer2.peer_addr, None), [Arc::new(peer1)]);
209211
}
210212

211213
#[test]
212214
fn return_the_number_of_seeders_in_the_list() {
213-
let mut peer_list = PeerList::default();
215+
let mut swarm = Swarm::default();
214216

215217
let seeder = PeerBuilder::seeder().build();
216218
let leecher = PeerBuilder::leecher().build();
217219

218-
peer_list.upsert(seeder.into());
219-
peer_list.upsert(leecher.into());
220+
swarm.upsert(seeder.into());
221+
swarm.upsert(leecher.into());
220222

221-
let (seeders, _leechers) = peer_list.seeders_and_leechers();
223+
let (seeders, _leechers) = swarm.seeders_and_leechers();
222224

223225
assert_eq!(seeders, 1);
224226
}
225227

226228
#[test]
227229
fn return_the_number_of_leechers_in_the_list() {
228-
let mut peer_list = PeerList::default();
230+
let mut swarm = Swarm::default();
229231

230232
let seeder = PeerBuilder::seeder().build();
231233
let leecher = PeerBuilder::leecher().build();
232234

233-
peer_list.upsert(seeder.into());
234-
peer_list.upsert(leecher.into());
235+
swarm.upsert(seeder.into());
236+
swarm.upsert(leecher.into());
235237

236-
let (_seeders, leechers) = peer_list.seeders_and_leechers();
238+
let (_seeders, leechers) = swarm.seeders_and_leechers();
237239

238240
assert_eq!(leechers, 1);
239241
}
240242

241243
#[test]
242244
fn remove_inactive_peers() {
243-
let mut peer_list = PeerList::default();
245+
let mut swarm = Swarm::default();
244246
let one_second = DurationSinceUnixEpoch::new(1, 0);
245247

246248
// Insert the peer
247249
let last_update_time = DurationSinceUnixEpoch::new(1_669_397_478_934, 0);
248250
let peer = PeerBuilder::default().last_updated_on(last_update_time).build();
249-
peer_list.upsert(peer.into());
251+
swarm.upsert(peer.into());
250252

251253
// Remove peers not updated since one second after inserting the peer
252-
peer_list.remove_inactive_peers(last_update_time + one_second);
254+
swarm.remove_inactive_peers(last_update_time + one_second);
253255

254-
assert_eq!(peer_list.len(), 0);
256+
assert_eq!(swarm.len(), 0);
255257
}
256258

257259
#[test]
258260
fn not_remove_active_peers() {
259-
let mut peer_list = PeerList::default();
261+
let mut swarm = Swarm::default();
260262
let one_second = DurationSinceUnixEpoch::new(1, 0);
261263

262264
// Insert the peer
263265
let last_update_time = DurationSinceUnixEpoch::new(1_669_397_478_934, 0);
264266
let peer = PeerBuilder::default().last_updated_on(last_update_time).build();
265-
peer_list.upsert(peer.into());
267+
swarm.upsert(peer.into());
266268

267269
// Remove peers not updated since one second before inserting the peer.
268-
peer_list.remove_inactive_peers(last_update_time - one_second);
270+
swarm.remove_inactive_peers(last_update_time - one_second);
269271

270-
assert_eq!(peer_list.len(), 1);
272+
assert_eq!(swarm.len(), 1);
271273
}
272274

273275
#[test]
274276
fn allow_inserting_two_identical_peers_except_for_the_id() {
275-
let mut peer_list = PeerList::default();
277+
let mut swarm = Swarm::default();
276278

277279
let peer1 = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000001")).build();
278-
peer_list.upsert(peer1.into());
280+
swarm.upsert(peer1.into());
279281

280282
let peer2 = PeerBuilder::default().with_peer_id(&PeerId(*b"-qB00000000000000002")).build();
281-
peer_list.upsert(peer2.into());
283+
swarm.upsert(peer2.into());
282284

283-
assert_eq!(peer_list.len(), 2);
285+
assert_eq!(swarm.len(), 2);
284286
}
285287
}
286288
}

packages/torrent-repository/src/entry/torrent.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use torrust_tracker_primitives::peer::{self};
88
use torrust_tracker_primitives::swarm_metadata::SwarmMetadata;
99
use torrust_tracker_primitives::DurationSinceUnixEpoch;
1010

11-
use super::peer_list::PeerList;
11+
use super::swarm::Swarm;
1212

1313
/// A data structure containing all the information about a torrent in the tracker.
1414
///
@@ -18,7 +18,7 @@ use super::peer_list::PeerList;
1818
#[derive(Clone, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
1919
pub struct TrackedTorrent {
2020
/// A network of peers that are all trying to download the torrent associated to this entry
21-
pub(crate) swarm: PeerList,
21+
pub(crate) swarm: Swarm,
2222

2323
/// The number of peers that have ever completed downloading the torrent associated to this entry
2424
pub(crate) downloaded: u32,

packages/torrent-repository/src/repository.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use torrust_tracker_primitives::pagination::Pagination;
77
use torrust_tracker_primitives::swarm_metadata::{AggregateSwarmMetadata, SwarmMetadata};
88
use torrust_tracker_primitives::{peer, DurationSinceUnixEpoch, PersistentTorrent, PersistentTorrents};
99

10-
use crate::entry::peer_list::PeerList;
10+
use crate::entry::swarm::Swarm;
1111
use crate::entry::torrent::TrackedTorrent;
1212
use crate::{LockTrackedTorrent, TrackedTorrentHandle};
1313

@@ -53,7 +53,7 @@ impl TorrentRepository {
5353
let new_entry = if let Some(number_of_downloads) = opt_persistent_torrent {
5454
TrackedTorrentHandle::new(
5555
TrackedTorrent {
56-
swarm: PeerList::default(),
56+
swarm: Swarm::default(),
5757
downloaded: number_of_downloads,
5858
}
5959
.into(),
@@ -237,7 +237,7 @@ impl TorrentRepository {
237237

238238
let entry = TrackedTorrentHandle::new(
239239
TrackedTorrent {
240-
swarm: PeerList::default(),
240+
swarm: Swarm::default(),
241241
downloaded: *completed,
242242
}
243243
.into(),

0 commit comments

Comments
 (0)