From c2400bb2690fe0ee1184d5d7a66b6d2d1198b480 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 26 Feb 2015 19:04:42 -0800 Subject: [PATCH] std: Draw from the same port pool during tests Instead of allocating the same ports for ipv4 and ipv6 tests, instead draw all ports from the same pool. Some tests connect to just "localhost" on a particular port which may accidentally be interacting with other tests as the ipv-what-ness isn't specified with the string "localhost" Relevant logs: * [Deadlock of the `net::tcp::tests::listen_localhost` test][mac] * [Failure of the `fast_rebind` test][win1] * [Failure of `multiple_connect_interleaved_lazy_schedule_ip4`][win2] [mac]: https://gist.github.com/alexcrichton/349c7ce7c620c1adb2f2 [win1]: https://gist.github.com/alexcrichton/7e3611faae2e1edaee6f [win2]: https://gist.github.com/alexcrichton/4f5f87749af3ad0f9851 --- src/libstd/net/test.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libstd/net/test.rs b/src/libstd/net/test.rs index aec50d638c6..dbebede9f50 100644 --- a/src/libstd/net/test.rs +++ b/src/libstd/net/test.rs @@ -14,14 +14,14 @@ use net::{SocketAddr, IpAddr}; use sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; +static PORT: AtomicUsize = ATOMIC_USIZE_INIT; + pub fn next_test_ip4() -> SocketAddr { - static PORT: AtomicUsize = ATOMIC_USIZE_INIT; SocketAddr::new(IpAddr::new_v4(127, 0, 0, 1), PORT.fetch_add(1, Ordering::SeqCst) as u16 + base_port()) } pub fn next_test_ip6() -> SocketAddr { - static PORT: AtomicUsize = ATOMIC_USIZE_INIT; SocketAddr::new(IpAddr::new_v6(0, 0, 0, 0, 0, 0, 0, 1), PORT.fetch_add(1, Ordering::SeqCst) as u16 + base_port()) }