@@ -717,6 +717,7 @@ mod tests {
717
717
use crate :: core:: peer:: Peer ;
718
718
use crate :: core:: services:: { initialize_tracker, initialize_whitelist_manager} ;
719
719
use crate :: core:: torrent:: manager:: TorrentsManager ;
720
+ use crate :: core:: torrent:: repository:: in_memory:: InMemoryTorrentRepository ;
720
721
use crate :: core:: whitelist:: manager:: WhiteListManager ;
721
722
use crate :: core:: { whitelist, Tracker } ;
722
723
@@ -741,6 +742,29 @@ mod tests {
741
742
)
742
743
}
743
744
745
+ fn public_tracker_and_in_memory_torrents_repository ( ) -> ( Arc < Tracker > , Arc < InMemoryTorrentRepository > ) {
746
+ let config = configuration:: ephemeral_public ( ) ;
747
+
748
+ let (
749
+ _database,
750
+ _in_memory_whitelist,
751
+ whitelist_authorization,
752
+ _authentication_service,
753
+ in_memory_torrent_repository,
754
+ db_torrent_repository,
755
+ _torrents_manager,
756
+ ) = initialize_tracker_dependencies ( & config) ;
757
+
758
+ let tracker = Arc :: new ( initialize_tracker (
759
+ & config,
760
+ & whitelist_authorization,
761
+ & in_memory_torrent_repository,
762
+ & db_torrent_repository,
763
+ ) ) ;
764
+
765
+ ( tracker, in_memory_torrent_repository)
766
+ }
767
+
744
768
fn whitelisted_tracker ( ) -> ( Tracker , Arc < whitelist:: authorization:: Authorization > , Arc < WhiteListManager > ) {
745
769
let config = configuration:: ephemeral_listed ( ) ;
746
770
@@ -766,7 +790,7 @@ mod tests {
766
790
( tracker, whitelist_authorization, whitelist_manager)
767
791
}
768
792
769
- pub fn tracker_persisting_torrents_in_database ( ) -> ( Tracker , Arc < TorrentsManager > ) {
793
+ pub fn tracker_persisting_torrents_in_database ( ) -> ( Tracker , Arc < TorrentsManager > , Arc < InMemoryTorrentRepository > ) {
770
794
let mut config = configuration:: ephemeral_listed ( ) ;
771
795
config. core . tracker_policy . persistent_torrent_completed_stat = true ;
772
796
@@ -787,7 +811,7 @@ mod tests {
787
811
& db_torrent_repository,
788
812
) ;
789
813
790
- ( tracker, torrents_manager)
814
+ ( tracker, torrents_manager, in_memory_torrent_repository )
791
815
}
792
816
793
817
fn sample_info_hash ( ) -> InfoHash {
@@ -876,14 +900,14 @@ mod tests {
876
900
877
901
#[ tokio:: test]
878
902
async fn it_should_return_the_peers_for_a_given_torrent ( ) {
879
- let tracker = public_tracker ( ) ;
903
+ let ( tracker, in_memory_torrent_repository ) = public_tracker_and_in_memory_torrents_repository ( ) ;
880
904
881
905
let info_hash = sample_info_hash ( ) ;
882
906
let peer = sample_peer ( ) ;
883
907
884
908
let _ = tracker. upsert_peer_and_get_stats ( & info_hash, & peer) ;
885
909
886
- let peers = tracker . in_memory_torrent_repository . get_torrent_peers ( & info_hash) ;
910
+ let peers = in_memory_torrent_repository. get_torrent_peers ( & info_hash) ;
887
911
888
912
assert_eq ! ( peers, vec![ Arc :: new( peer) ] ) ;
889
913
}
@@ -908,7 +932,7 @@ mod tests {
908
932
909
933
#[ tokio:: test]
910
934
async fn it_should_return_74_peers_at_the_most_for_a_given_torrent ( ) {
911
- let tracker = public_tracker ( ) ;
935
+ let ( tracker, in_memory_torrent_repository ) = public_tracker_and_in_memory_torrents_repository ( ) ;
912
936
913
937
let info_hash = sample_info_hash ( ) ;
914
938
@@ -926,7 +950,7 @@ mod tests {
926
950
let _ = tracker. upsert_peer_and_get_stats ( & info_hash, & peer) ;
927
951
}
928
952
929
- let peers = tracker . in_memory_torrent_repository . get_torrent_peers ( & info_hash) ;
953
+ let peers = in_memory_torrent_repository. get_torrent_peers ( & info_hash) ;
930
954
931
955
assert_eq ! ( peers. len( ) , 74 ) ;
932
956
}
@@ -981,11 +1005,11 @@ mod tests {
981
1005
982
1006
#[ tokio:: test]
983
1007
async fn it_should_return_the_torrent_metrics ( ) {
984
- let tracker = public_tracker ( ) ;
1008
+ let ( tracker, in_memory_torrent_repository ) = public_tracker_and_in_memory_torrents_repository ( ) ;
985
1009
986
1010
let _ = tracker. upsert_peer_and_get_stats ( & sample_info_hash ( ) , & leecher ( ) ) ;
987
1011
988
- let torrent_metrics = tracker . in_memory_torrent_repository . get_torrents_metrics ( ) ;
1012
+ let torrent_metrics = in_memory_torrent_repository. get_torrents_metrics ( ) ;
989
1013
990
1014
assert_eq ! (
991
1015
torrent_metrics,
@@ -1000,7 +1024,7 @@ mod tests {
1000
1024
1001
1025
#[ tokio:: test]
1002
1026
async fn it_should_get_many_the_torrent_metrics ( ) {
1003
- let tracker = public_tracker ( ) ;
1027
+ let ( tracker, in_memory_torrent_repository ) = public_tracker_and_in_memory_torrents_repository ( ) ;
1004
1028
1005
1029
let start_time = std:: time:: Instant :: now ( ) ;
1006
1030
for i in 0 ..1_000_000 {
@@ -1009,7 +1033,7 @@ mod tests {
1009
1033
let result_a = start_time. elapsed ( ) ;
1010
1034
1011
1035
let start_time = std:: time:: Instant :: now ( ) ;
1012
- let torrent_metrics = tracker . in_memory_torrent_repository . get_torrents_metrics ( ) ;
1036
+ let torrent_metrics = in_memory_torrent_repository. get_torrents_metrics ( ) ;
1013
1037
let result_b = start_time. elapsed ( ) ;
1014
1038
1015
1039
assert_eq ! (
@@ -1434,7 +1458,7 @@ mod tests {
1434
1458
1435
1459
#[ tokio:: test]
1436
1460
async fn it_should_persist_the_number_of_completed_peers_for_all_torrents_into_the_database ( ) {
1437
- let ( tracker, torrents_manager) = tracker_persisting_torrents_in_database ( ) ;
1461
+ let ( tracker, torrents_manager, in_memory_torrent_repository ) = tracker_persisting_torrents_in_database ( ) ;
1438
1462
1439
1463
let info_hash = sample_info_hash ( ) ;
1440
1464
@@ -1449,7 +1473,7 @@ mod tests {
1449
1473
assert_eq ! ( swarm_stats. downloaded, 1 ) ;
1450
1474
1451
1475
// Remove the newly updated torrent from memory
1452
- let _unused = tracker . in_memory_torrent_repository . remove ( & info_hash) ;
1476
+ let _unused = in_memory_torrent_repository. remove ( & info_hash) ;
1453
1477
1454
1478
torrents_manager. load_torrents_from_database ( ) . unwrap ( ) ;
1455
1479
0 commit comments