running 265 tests test servers::apis::v1::context::stats::resources::tests::stats_resource_should_be_converted_from_tracker_metrics ... ok test servers::apis::v1::context::auth_key::resources::tests::it_should_be_convertible_from_an_auth_key ... ok test servers::apis::v1::context::auth_key::resources::tests::it_should_be_convertible_into_an_auth_key ... ok test servers::apis::v1::context::torrent::resources::torrent::tests::torrent_resource_list_item_should_be_converted_from_the_basic_torrent_info ... ok test servers::http::percent_encoding::tests::it_should_decode_a_percent_encoded_info_hash ... ok test servers::apis::v1::context::auth_key::resources::tests::it_should_be_convertible_into_json ... ok test servers::http::percent_encoding::tests::it_should_decode_a_percent_encoded_peer_id ... ok test servers::http::percent_encoding::tests::it_should_fail_decoding_an_invalid_percent_encoded_info_hash ... ok test servers::apis::v1::context::torrent::resources::torrent::tests::torrent_resource_should_be_converted_from_torrent_info ... ok test servers::http::percent_encoding::tests::it_should_fail_decoding_an_invalid_percent_encoded_peer_id ... ok test bootstrap::config::tests::it_should_load_with_default_config ... ok test servers::http::v1::extractors::announce_request::tests::it_should_reject_a_request_with_a_query_that_cannot_be_parsed ... ok test servers::http::v1::extractors::announce_request::tests::it_should_extract_the_announce_request_from_the_url_query_params ... ok test servers::http::v1::extractors::announce_request::tests::it_should_reject_a_request_with_a_query_that_cannot_be_parsed_into_an_announce_request ... ok test servers::http::v1::extractors::announce_request::tests::it_should_reject_a_request_without_query_params ... ok test servers::http::v1::extractors::scrape_request::tests::it_should_extract_the_scrape_request_from_the_url_query_params ... ok test servers::http::v1::extractors::authentication_key::tests::it_should_return_an_authentication_error_if_the_key_cannot_be_parsed ... ok test servers::http::v1::extractors::scrape_request::tests::it_should_extract_the_scrape_request_from_the_url_query_params_with_more_than_one_info_hash ... ok test servers::http::v1::extractors::scrape_request::tests::it_should_reject_a_request_with_a_query_that_cannot_be_parsed ... ok test servers::http::v1::extractors::scrape_request::tests::it_should_reject_a_request_with_a_query_that_cannot_be_parsed_into_a_scrape_request ... ok test servers::http::v1::extractors::scrape_request::tests::it_should_reject_a_request_without_query_params ... ok test servers::http::v1::handlers::common::peer_ip::tests::it_should_map_a_peer_ip_resolution_error_into_an_error_response ... ok test servers::http::v1::query::tests::url_query::param_name_value_pair::should_parse_a_single_query_param ... ok test servers::http::v1::query::tests::url_query::param_name_value_pair::should_fail_parsing_an_invalid_query_param ... ok test servers::http::v1::query::tests::url_query::param_name_value_pair::should_be_displayed ... ok test servers::http::v1::query::tests::url_query::should_allow_more_than_one_value_for_the_same_param::parsed_from_an_string ... ok test servers::http::v1::query::tests::url_query::should_allow_more_than_one_value_for_the_same_param::instantiated_from_a_vector ... ok test servers::http::v1::query::tests::url_query::should_be_displayed::with_multiple_params ... ok test servers::http::v1::query::tests::url_query::should_fail_parsing_an_invalid_query_string ... ok test servers::http::v1::query::tests::url_query::should_ignore_the_preceding_question_mark_if_it_exists ... ok test servers::http::v1::query::tests::url_query::should_parse_the_query_params_from_an_url_query_string ... ok test servers::http::v1::query::tests::url_query::should_trim_whitespaces ... ok test servers::http::v1::query::tests::url_query::should_be_displayed::with_multiple_values_for_the_same_param ... ok test servers::http::v1::query::tests::url_query::should_be_displayed::with_one_param ... ok test servers::http::v1::query::tests::url_query::should_be_instantiated_from_a_string_pair_vector ... ok test servers::http::v1::requests::announce::tests::announce_request::should_be_instantiated_from_the_url_query_with_only_the_mandatory_params ... ok test servers::http::v1::requests::announce::tests::announce_request::should_be_instantiated_from_the_url_query_params ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_compact_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_downloaded_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_event_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_info_hash_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_peer_id_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_left_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_port_param_is_invalid ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_query_does_not_include_all_the_mandatory_params ... ok test servers::http::v1::requests::announce::tests::announce_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_uploaded_param_is_invalid ... ok test servers::http::v1::requests::scrape::tests::scrape_request::should_be_instantiated_from_the_url_query_with_only_one_infohash ... ok test servers::http::v1::requests::scrape::tests::scrape_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_info_hash_param_is_invalid ... ok test servers::http::v1::requests::scrape::tests::scrape_request::when_it_is_instantiated_from_the_url_query_params::it_should_fail_if_the_query_does_not_include_the_info_hash_param ... ok test servers::http::v1::responses::announce::tests::compact_announce_response_can_be_bencoded ... ok test servers::http::v1::responses::error::tests::http_tracker_errors_can_be_bencoded ... ok test servers::http::v1::responses::announce::tests::non_compact_announce_response_can_be_bencoded ... ok test servers::http::v1::responses::scrape::tests::scrape_response::should_be_bencoded ... ok test servers::http::v1::responses::scrape::tests::scrape_response::should_be_converted_from_scrape_data ... ok test servers::http::v1::services::peer_ip_resolver::tests::working_on_reverse_proxy::it_should_get_the_peer_ip_from_the_right_most_ip_in_the_x_forwarded_for_header ... ok test servers::http::v1::services::peer_ip_resolver::tests::working_on_reverse_proxy::it_should_return_an_error_if_it_cannot_get_the_right_most_ip_from_the_x_forwarded_for_header ... ok test servers::http::v1::services::peer_ip_resolver::tests::working_without_reverse_proxy::it_should_get_the_peer_ip_from_the_connection_info ... ok test servers::http::v1::services::peer_ip_resolver::tests::working_without_reverse_proxy::it_should_return_an_error_if_it_cannot_get_the_peer_ip_from_the_connection_info ... ok test servers::udp::connection_cookie::tests::it_should_be_valid_for_the_last_time_extent ... ok test servers::udp::connection_cookie::tests::it_should_be_valid_for_the_next_time_extent ... ok test servers::udp::connection_cookie::tests::it_should_be_valid_for_this_time_extent ... ok test servers::udp::connection_cookie::tests::it_should_make_different_cookies_for_the_next_time_extent ... ok test servers::udp::connection_cookie::tests::it_should_make_a_connection_cookie ... ok test servers::udp::connection_cookie::tests::it_should_make_the_different_connection_cookie_for_different_ip_version ... ok test servers::udp::connection_cookie::tests::it_should_be_not_valid_after_their_last_time_extent - should panic ... ok test servers::udp::connection_cookie::tests::it_should_make_the_different_connection_cookie_for_different_ip ... ok test servers::udp::connection_cookie::tests::it_should_make_the_different_connection_cookie_for_different_socket ... ok test servers::udp::connection_cookie::tests::it_should_make_the_different_connection_cookie_for_different_time_extents ... ok test servers::udp::connection_cookie::tests::it_should_make_the_same_connection_cookie_for_the_same_input_data ... ok test servers::apis::server::tests::it_should_be_able_to_start_from_stopped_state_and_then_stop_again ... ok test servers::http::v1::handlers::announce::tests::with_tracker_in_private_mode::it_should_fail_when_the_authentication_key_is_invalid ... ok test servers::http::v1::handlers::announce::tests::with_tracker_not_on_reverse_proxy::it_should_fail_when_the_client_ip_from_the_connection_info_is_not_available ... ok test servers::http::v1::handlers::scrape::tests::with_tracker_in_private_mode::it_should_return_zeroed_swarm_metadata_when_the_authentication_key_is_missing ... ok test servers::http::v1::handlers::scrape::tests::with_tracker_in_private_mode::it_should_return_zeroed_swarm_metadata_when_the_authentication_key_is_invalid ... ok test servers::http::v1::handlers::scrape::tests::with_tracker_in_listed_mode::it_should_return_zeroed_swarm_metadata_when_the_torrent_is_not_whitelisted ... ok test servers::http::v1::handlers::announce::tests::with_tracker_in_private_mode::it_should_fail_when_the_authentication_key_is_missing ... ok test servers::udp::handlers::tests::announce_request::using_ipv4::an_announced_peer_should_be_added_to_the_tracker ... ok test servers::http::v1::handlers::announce::tests::with_tracker_in_listed_mode::it_should_fail_when_the_announced_torrent_is_not_whitelisted ... ok test servers::udp::handlers::tests::announce_request::using_ipv6::the_tracker_should_always_use_the_remote_client_ip_but_not_the_port_in_the_udp_request_header_instead_of_the_peer_address_in_the_announce_request ... ok test servers::http::v1::services::scrape::tests::with_zeroed_data::it_should_send_the_tcp_4_scrape_event_when_the_peer_uses_ipv4 ... ok test servers::http::v1::services::scrape::tests::with_zeroed_data::it_should_always_return_the_zeroed_scrape_data_for_a_torrent ... ok test servers::http::v1::services::announce::tests::with_tracker_in_any_mode::it_should_send_the_tcp_4_announce_event_when_the_peer_uses_ipv4_even_if_the_tracker_changes_the_peer_ip_to_ipv6 ... ok test servers::http::v1::services::announce::tests::with_tracker_in_any_mode::it_should_return_the_announce_data ... ok test servers::http::v1::handlers::scrape::tests::with_tracker_on_reverse_proxy::it_should_fail_when_the_right_most_x_forwarded_for_header_ip_is_not_available ... ok test servers::http::v1::handlers::announce::tests::with_tracker_on_reverse_proxy::it_should_fail_when_the_right_most_x_forwarded_for_header_ip_is_not_available ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_be_created_from_a_byte_vector ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_be_created_from_a_valid_20_byte_array ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_be_created_from_a_valid_20_byte_array_slice ... ok test servers::http::v1::handlers::scrape::tests::with_tracker_not_on_reverse_proxy::it_should_fail_when_the_client_ip_from_the_connection_info_is_not_available ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_be_created_from_a_valid_40_utf8_char_string_representing_an_hexadecimal_value ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_be_deserialized ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_be_serialized ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_not_be_created_from_a_utf8_string_representing_a_not_valid_hexadecimal_value ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_can_only_be_created_from_a_40_utf8_char_string ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_should_by_displayed_like_a_40_utf8_lowercased_char_hex_string ... ok test shared::bit_torrent::info_hash::tests::it_should_fail_trying_to_create_an_info_hash_from_a_byte_vector_with_less_than_20_bytes ... ok test shared::bit_torrent::info_hash::tests::it_should_fail_trying_to_create_an_info_hash_from_a_byte_vector_with_more_than_20_bytes ... ok test shared::clock::stopped_clock::detail::tests::it_should_get_app_start_time ... ok test shared::clock::stopped_clock::detail::tests::it_should_get_the_zero_start_time_when_testing ... ok test shared::bit_torrent::info_hash::tests::an_info_hash_should_return_its_a_40_utf8_lowercased_char_hex_representations_as_string ... ok test servers::udp::handlers::tests::announce_request::using_ipv6::an_announced_peer_should_be_added_to_the_tracker ... ok test shared::clock::stopped_clock::tests::it_should_default_to_zero_when_testing ... ok test shared::clock::stopped_clock::tests::it_should_default_to_zero_on_thread_exit ... ok test servers::http::v1::services::scrape::tests::with_real_data::it_should_send_the_tcp_6_scrape_event_when_the_peer_uses_ipv6 ... ok test shared::clock::stopped_clock::tests::it_should_possible_to_set_the_time ... ok test shared::clock::tests::it_should_be_the_stopped_clock_as_default_when_testing ... ok test shared::clock::tests::timestamp::should_be_converted_from_datetime_utc_in_iso_8601 ... ok test shared::clock::tests::it_should_have_different_times ... ok test shared::clock::tests::timestamp::should_be_converted_to_datetime_utc ... ok test shared::clock::tests::timestamp::should_be_converted_from_datetime_utc ... ok test servers::udp::handlers::tests::announce_request::using_ipv6::the_announced_peer_should_not_be_included_in_the_response ... ok test shared::clock::time_extent::test::fn_checked_duration_from_nanos::it_should_be_the_same_as_duration_implementation_for_u64_numbers ... ok test shared::clock::time_extent::test::fn_checked_duration_from_nanos::it_should_fail_for_numbers_that_are_too_large ... ok test shared::clock::time_extent::test::fn_checked_duration_from_nanos::it_should_give_zero_for_zero_input ... ok test shared::clock::time_extent::test::fn_checked_duration_from_nanos::it_should_work_for_some_numbers_larger_than_u64 ... ok test shared::clock::time_extent::test::make_time_extent::fn_now::it_should_fail_for_zero ... ok test shared::clock::time_extent::test::make_time_extent::fn_now::it_should_fail_if_amount_exceeds_bounds ... ok test shared::clock::time_extent::test::make_time_extent::fn_now::it_should_give_a_time_extent ... ok test shared::clock::time_extent::test::make_time_extent::fn_now_after::it_should_fail_for_zero ... ok test shared::clock::time_extent::test::make_time_extent::fn_now_after::it_should_fail_if_amount_exceeds_bounds ... ok test servers::http::v1::services::announce::tests::with_tracker_in_any_mode::it_should_send_the_tcp_6_announce_event_when_the_peer_uses_ipv6_even_if_the_tracker_changes_the_peer_ip_to_ipv4 ... ok test shared::clock::time_extent::test::make_time_extent::fn_now_before::it_should_fail_for_zero ... ok test shared::clock::time_extent::test::make_time_extent::fn_now_after::it_should_give_a_time_extent ... ok test shared::clock::time_extent::test::time_extent::fn_decrease::it_should_decrease ... ok test shared::clock::time_extent::test::make_time_extent::fn_now_before::it_should_fail_if_amount_exceeds_bounds ... ok test shared::clock::time_extent::test::make_time_extent::fn_now_before::it_should_give_a_time_extent ... ok test shared::clock::time_extent::test::time_extent::fn_decrease::it_should_fail_when_attempting_to_decrease_beyond_bounds ... ok test servers::udp::handlers::tests::announce_request::using_ipv4::when_the_announce_request_comes_from_a_client_using_ipv4_the_response_should_not_include_peers_using_ipv6 ... ok test shared::clock::time_extent::test::time_extent::fn_decrease::it_should_not_decrease_for_zero ... ok test shared::clock::time_extent::test::time_extent::fn_default::it_should_default_initialize_to_zero ... ok test shared::clock::time_extent::test::time_extent::fn_from_sec::it_should_make_empty_for_zero ... ok test servers::http::v1::services::scrape::tests::with_zeroed_data::it_should_send_the_tcp_6_scrape_event_when_the_peer_uses_ipv6 ... ok test shared::clock::time_extent::test::time_extent::fn_increase::it_should_fail_when_attempting_to_increase_beyond_bounds ... ok test shared::clock::time_extent::test::time_extent::fn_from_sec::it_should_make_from_seconds ... ok test shared::clock::time_extent::test::time_extent::fn_increase::it_should_increase ... ok test shared::clock::time_extent::test::time_extent::fn_increase::it_should_not_increase_for_zero ... ok test shared::clock::time_extent::test::time_extent::fn_new::it_should_make_empty_for_zero ... ok test shared::clock::time_extent::test::time_extent::fn_new::it_should_make_new ... ok test shared::clock::time_extent::test::time_extent::fn_total::it_should_fail_when_product_is_too_large ... ok test shared::clock::time_extent::test::time_extent::fn_total::it_should_be_zero_for_zero ... ok test shared::clock::time_extent::test::time_extent::fn_total::it_should_fail_when_too_large ... ok test shared::clock::time_extent::test::time_extent::fn_total_next::it_should_be_zero_for_zero ... ok test shared::clock::time_extent::test::time_extent::fn_total::it_should_give_a_total ... ok test servers::udp::handlers::tests::announce_request::using_ipv4::the_announced_peer_should_not_be_included_in_the_response ... ok test shared::clock::time_extent::test::time_extent::fn_total_next::it_should_fail_when_product_is_too_large ... ok test shared::clock::time_extent::test::time_extent::fn_total_next::it_should_give_a_total ... ok test servers::http::v1::services::scrape::tests::with_real_data::it_should_send_the_tcp_4_scrape_event_when_the_peer_uses_ipv4 ... ok test servers::udp::handlers::tests::announce_request::using_ipv6::when_the_announce_request_comes_from_a_client_using_ipv6_the_response_should_not_include_peers_using_ipv4 ... ok test shared::clock::time_extent::test::time_extent::fn_total_next::it_should_fail_when_too_large ... ok test shared::crypto::keys::seeds::detail::tests::it_should_default_to_zeroed_seed_when_testing ... ok test shared::crypto::keys::seeds::detail::tests::it_should_have_a_zero_test_seed ... ok test servers::udp::handlers::tests::announce_request::using_ipv6::should_send_the_upd6_announce_event ... ok test shared::crypto::keys::seeds::detail::tests::it_should_have_a_large_random_seed ... ok test shared::crypto::keys::seeds::tests::the_default_seed_and_the_instance_seed_should_be_different_when_testing ... ok test shared::crypto::keys::seeds::tests::the_default_seed_and_the_zeroed_seed_should_be_the_same_when_testing ... ok test tracker::auth::tests::expiring_auth_key::should_be_displayed ... ok test tracker::auth::tests::expiring_auth_key::should_be_generate_and_verified ... ok test tracker::auth::tests::expiring_auth_key::should_be_parsed_from_an_string ... ok test tracker::auth::tests::key::should_be_parsed_from_an_string ... ok test tracker::auth::tests::expiring_auth_key::should_be_generated_with_a_expiration_time ... ok test tracker::peer::test::torrent_peer::it_should_be_serializable ... ok test tracker::peer::test::torrent_peer_id::should_be_converted_from_a_20_byte_array ... ok test tracker::peer::test::torrent_peer_id::should_be_converted_from_a_byte_vector ... ok test tracker::peer::test::torrent_peer_id::should_be_converted_to_hex_string ... ok test tracker::peer::test::torrent_peer_id::should_be_converted_into_string_type_using_the_hex_string_format ... ok test tracker::peer::test::torrent_peer_id::should_be_instantiated_from_a_byte_slice ... ok test tracker::peer::test::torrent_peer_id::should_be_instantiated_from_a_string ... ok test servers::udp::handlers::tests::announce_request::using_ipv4::from_a_loopback_ip::the_peer_ip_should_be_changed_to_the_external_ip_in_the_tracker_configuration_if_defined ... ok test servers::udp::handlers::tests::announce_request::using_ipv6::from_a_loopback_ip::the_peer_ip_should_be_changed_to_the_external_ip_in_the_tracker_configuration ... ok test tracker::peer::test::torrent_peer_id::should_fail_trying_to_instantiate_from_a_byte_slice_with_more_than_20_bytes - should panic ... ok test tracker::peer::test::torrent_peer_id::should_fail_trying_to_convert_from_a_byte_vector_with_more_than_20_bytes - should panic ... ok test tracker::peer::test::torrent_peer_id::should_fail_trying_to_convert_from_a_byte_vector_with_less_than_20_bytes - should panic ... ok test tracker::peer::test::torrent_peer_id::should_return_the_inner_bytes ... ok test tracker::services::statistics::setup::test::should_not_send_any_event_when_statistics_are_disabled ... ok test tracker::peer::test::torrent_peer_id::should_fail_trying_to_instantiate_from_a_byte_slice_with_less_than_20_bytes - should panic ... ok test tracker::services::statistics::setup::test::should_send_events_when_statistics_are_enabled ... ok test servers::http::v1::services::announce::tests::with_tracker_in_any_mode::it_should_send_the_tcp_4_announce_event_when_the_peer_uses_ipv4 ... ok test servers::http::v1::services::scrape::tests::with_real_data::it_should_return_the_scrape_data_for_a_torrent ... ok test tracker::statistics::tests::event_handler::should_increase_the_udp4_announces_counter_when_it_receives_a_udp4_announce_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp4_announces_counter_when_it_receives_a_tcp4_announce_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp4_scrapes_counter_when_it_receives_a_tcp4_scrape_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp4_connections_counter_when_it_receives_a_tcp4_announce_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp4_connections_counter_when_it_receives_a_tcp4_scrape_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp6_announces_counter_when_it_receives_a_tcp6_announce_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp6_scrapes_counter_when_it_receives_a_tcp6_scrape_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_udp4_connections_counter_when_it_receives_a_udp4_connect_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp6_connections_counter_when_it_receives_a_tcp6_announce_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_tcp6_connections_counter_when_it_receives_a_tcp6_scrape_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_udp4_scrapes_counter_when_it_receives_a_udp4_scrape_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_udp6_connections_counter_when_it_receives_a_udp6_connect_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_udp6_announces_counter_when_it_receives_a_udp6_announce_event ... ok test tracker::statistics::tests::event_handler::should_increase_the_udp6_scrapes_counter_when_it_receives_a_udp6_scrape_event ... ok test tracker::statistics::tests::stats_tracker::should_contain_the_tracker_statistics ... ok test tracker::statistics::tests::stats_tracker::should_create_an_event_sender_to_send_statistical_events ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_an_scrape_request::it_should_be_able_to_build_a_zeroed_scrape_data_for_a_list_of_info_hashes ... ok test servers::udp::handlers::tests::announce_request::using_ipv4::the_tracker_should_always_use_the_remote_client_ip_but_not_the_port_in_the_udp_request_header_instead_of_the_peer_address_in_the_announce_request ... ok test servers::udp::handlers::tests::announce_request::using_ipv4::should_send_the_upd4_announce_event ... ok test servers::udp::handlers::tests::connect_request::it_should_send_the_upd4_connect_event_when_a_client_tries_to_connect_using_a_ip4_socket_address ... ok test servers::udp::handlers::tests::connect_request::a_connect_response_should_contain_a_new_connection_id ... ok test servers::udp::handlers::tests::scrape_request::with_a_private_tracker::should_return_zeroed_statistics_when_the_tracker_does_not_have_the_requested_torrent ... ok test servers::udp::handlers::tests::connect_request::a_connect_response_should_contain_the_same_transaction_id_as_the_connect_request ... ok test servers::udp::handlers::tests::scrape_request::should_return_no_stats_when_the_tracker_does_not_have_any_torrent ... ok test servers::udp::handlers::tests::scrape_request::using_ipv6::should_send_the_upd6_scrape_event ... ok test servers::udp::handlers::tests::connect_request::it_should_send_the_upd6_connect_event_when_a_client_tries_to_connect_using_a_ip6_socket_address ... ok test servers::udp::handlers::tests::scrape_request::using_ipv4::should_send_the_upd4_scrape_event ... ok test servers::udp::handlers::tests::scrape_request::with_a_whitelisted_tracker::should_return_the_torrent_statistics_when_the_requested_torrent_is_whitelisted ... ok test servers::udp::handlers::tests::scrape_request::with_a_public_tracker::should_return_torrent_statistics_when_the_tracker_has_the_requested_torrent ... ok test servers::udp::handlers::tests::scrape_request::with_a_private_tracker::should_return_zeroed_statistics_when_the_tracker_has_the_requested_torrent_because_authenticated_requests_are_not_supported_in_udp_tracker ... ok test servers::udp::handlers::tests::scrape_request::with_a_whitelisted_tracker::should_return_zeroed_statistics_when_the_requested_torrent_is_not_whitelisted ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::and_when_client_ip_is_a_ipv6_loopback_ip::it_should_use_the_external_ip_in_the_tracker_configuration_if_it_is_defined_even_if_the_external_ip_is_an_ipv4_ip ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::and_when_client_ip_is_a_ipv6_loopback_ip::it_should_use_the_external_ip_in_tracker_configuration_if_it_is_defined ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::and_when_client_ip_is_a_ipv6_loopback_ip::it_should_use_the_loopback_ip_if_the_tracker_does_not_have_the_external_ip_configuration ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::and_when_the_client_ip_is_a_ipv4_loopback_ip::it_should_use_the_external_ip_in_the_tracker_configuration_if_it_is_defined_even_if_the_external_ip_is_an_ipv6_ip ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::and_when_the_client_ip_is_a_ipv4_loopback_ip::it_should_use_the_external_tracker_ip_in_tracker_configuration_if_it_is_defined ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::and_when_the_client_ip_is_a_ipv4_loopback_ip::it_should_use_the_loopback_ip_if_the_tracker_does_not_have_the_external_ip_configuration ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::should_assign_the_ip_to_the_peer::using_the_source_ip_instead_of_the_ip_in_the_announce_request ... ok test tracker::services::torrent::tests::getting_a_torrent_info::should_return_none_if_the_tracker_does_not_have_the_torrent ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_fail_authenticating_a_peer_when_it_uses_an_unregistered_key ... ok test tracker::services::torrent::tests::searching_for_torrents::should_allow_limiting_the_number_of_torrents_in_the_result ... ok test tracker::torrent::tests::torrent_entry::a_new_peer_can_be_added_to_a_torrent_entry ... ok test tracker::torrent::tests::torrent_entry::a_peer_can_be_updated_in_a_torrent_entry ... ok test tracker::services::torrent::tests::searching_for_torrents::should_allow_using_pagination_in_the_result ... ok test tracker::torrent::tests::torrent_entry::a_peer_should_be_removed_from_a_torrent_entry_when_the_peer_announces_it_has_stopped ... ok test tracker::torrent::tests::torrent_entry::a_torrent_entry_should_contain_the_list_of_peers_that_were_added_to_the_torrent ... ok test tracker::torrent::tests::torrent_entry::a_torrent_entry_should_remove_a_peer_not_updated_after_a_timeout_in_seconds ... ok test tracker::torrent::tests::torrent_entry::a_torrent_entry_should_return_the_list_of_peers_for_a_given_peer_filtering_out_the_client_that_is_making_the_request ... ok test tracker::torrent::tests::torrent_entry::the_default_torrent_entry_should_contain_an_empty_list_of_peers ... ok test tracker::torrent::tests::torrent_entry::torrent_stats_change_when_a_previously_known_peer_announces_it_has_completed_the_torrent ... ok test tracker::torrent::tests::torrent_entry::the_tracker_should_limit_the_list_of_peers_to_74_when_clients_scrape_torrents ... ok test tracker::services::statistics::tests::the_statistics_service_should_return_the_tracker_metrics ... ok test tracker::torrent::tests::torrent_entry::torrent_stats_should_have_the_number_of_leechers_for_a_torrent ... ok test tracker::torrent::tests::torrent_entry::torrent_stats_should_have_the_number_of_peers_that_having_announced_at_least_two_events_the_latest_one_is_the_completed_event ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_fail_verifying_an_unregistered_authentication_key ... ok test tracker::torrent::tests::torrent_entry::torrent_stats_should_have_the_number_of_seeders_for_a_torrent ... ok test tracker::torrent::tests::torrent_entry::torrent_stats_should_not_change_when_a_peer_announces_it_has_completed_the_torrent_if_it_is_the_first_announce_from_the_peer ... ok test tracker::torrent::tests::torrent_entry::torrent_stats_should_not_include_a_peer_in_the_completed_counter_if_the_peer_has_announced_only_one_event ... ok test tracker::torrent::tests::torrent_entry::two_peers_with_the_same_ip_but_different_port_should_be_considered_different_peers ... ok test tracker::services::torrent::tests::searching_for_torrents::should_return_a_summarized_info_for_all_torrents ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_authorization::it_should_not_authorize_the_announce_and_scrape_actions_on_not_whitelisted_torrents ... ok test tracker::services::torrent::tests::getting_a_torrent_info::should_return_the_torrent_info_if_the_tracker_has_the_torrent ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_an_scrape_request::it_should_return_the_zeroed_swarm_metadata_for_the_requested_file_if_it_is_not_whitelisted ... ok test tracker::services::torrent::tests::searching_for_torrents::should_return_torrents_ordered_by_info_hash ... ok test tracker::services::torrent::tests::searching_for_torrents::should_return_an_empty_result_if_the_tracker_does_not_have_any_torrent ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_verify_a_valid_authentication_key ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_a_scrape_request::it_should_allow_scraping_for_multiple_torrents ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_load_authentication_keys_from_the_database ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_the_torrent_whitelist::it_should_remove_a_torrent_from_the_whitelist ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::it_should_return_the_announce_data_with_the_previously_announced_peers ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::it_should_return_the_announce_data_with_an_empty_peer_list_when_it_is_the_first_announced_peer ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_a_scrape_request::it_should_return_a_zeroed_swarm_metadata_for_the_requested_file_if_the_tracker_does_not_have_that_torrent ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::it_should_update_the_swarm_stats_for_the_torrent::when_the_peer_is_a_seeder ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_authenticate_a_peer_by_using_a_key ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_generate_the_expiring_authentication_keys ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_a_scrape_request::it_should_return_the_swarm_metadata_for_the_requested_file_if_the_tracker_has_that_torrent ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::it_should_update_the_swarm_stats_for_the_torrent::when_a_previously_announced_started_peer_has_completed_downloading ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_the_torrent_whitelist::it_should_add_a_torrent_to_the_whitelist ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_authorization::it_should_authorize_the_announce_and_scrape_actions_on_whitelisted_torrents ... ok test tracker::tests::the_tracker::for_all_config_modes::handling_an_announce_request::it_should_update_the_swarm_stats_for_the_torrent::when_the_peer_is_a_leecher ... ok test tracker::tests::the_tracker::it_should_return_all_the_peers_for_a_given_torrent_excluding_a_given_peer ... ok test tracker::tests::the_tracker::it_should_return_all_the_peers_for_a_given_torrent ... ok test tracker::tests::the_tracker::configured_as_private::handling_authentication::it_should_remove_an_authentication_key ... ok test tracker::tests::the_tracker::configured_as_whitelisted::handling_the_torrent_whitelist::persistence::it_should_load_the_whitelist_from_the_database ... ok test tracker::tests::the_tracker::handling_torrent_persistence::it_should_persist_the_number_of_completed_peers_for_all_torrents_into_the_database ... ok test tracker::tests::the_tracker::it_should_return_the_torrent_metrics ... ok test tracker::tests::the_tracker::should_collect_torrent_metrics ... ok test result: ok. 265 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s