Skip to content

Commit d24a3a4

Browse files
committed
core::rt: Use generated port numbers in tests
1 parent 744ba62 commit d24a3a4

File tree

4 files changed

+24
-49
lines changed

4 files changed

+24
-49
lines changed

src/libcore/rt/test.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,13 @@ pub fn run_in_newsched_task(f: ~fn()) {
2727
sched.run();
2828
}
2929
}
30+
31+
/// Get a port number, starting at 9600, for use in tests
32+
pub fn next_test_port() -> u16 {
33+
unsafe {
34+
return rust_dbg_next_port() as u16;
35+
}
36+
extern {
37+
fn rust_dbg_next_port() -> ::libc::uintptr_t;
38+
}
39+
}

src/libcore/rt/uv/net.rs

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ use super::{Loop, Watcher, Request, UvError, Buf, Callback, NativeHandle, NullCa
1919
vec_to_uv_buf, vec_from_uv_buf};
2020
use super::super::io::net::ip::{IpAddr, Ipv4, Ipv6};
2121

22-
#[cfg(test)]
23-
use unstable::run_in_bare_thread;
24-
#[cfg(test)]
25-
use super::super::thread::Thread;
26-
#[cfg(test)]
27-
use cell::Cell;
22+
#[cfg(test)] use cell::Cell;
23+
#[cfg(test)] use unstable::run_in_bare_thread;
24+
#[cfg(test)] use super::super::thread::Thread;
25+
#[cfg(test)] use super::super::test::next_test_port;
2826

2927
fn ip4_as_uv_ip4(addr: IpAddr, f: &fn(*sockaddr_in)) {
3028
match addr {
@@ -361,7 +359,7 @@ fn connect_close() {
361359
let mut loop_ = Loop::new();
362360
let mut tcp_watcher = { TcpWatcher::new(&mut loop_) };
363361
// Connect to a port where nobody is listening
364-
let addr = Ipv4(127, 0, 0, 1, 2923);
362+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
365363
do tcp_watcher.connect(addr) |stream_watcher, status| {
366364
rtdebug!("tcp_watcher.connect!");
367365
assert!(status.is_some());
@@ -373,47 +371,13 @@ fn connect_close() {
373371
}
374372
}
375373
376-
#[test]
377-
#[ignore(reason = "need a server to connect to")]
378-
fn connect_read() {
379-
do run_in_bare_thread() {
380-
let mut loop_ = Loop::new();
381-
let mut tcp_watcher = { TcpWatcher::new(&mut loop_) };
382-
let addr = Ipv4(127, 0, 0, 1, 2924);
383-
do tcp_watcher.connect(addr) |stream_watcher, status| {
384-
let mut stream_watcher = stream_watcher;
385-
rtdebug!("tcp_watcher.connect!");
386-
assert!(status.is_none());
387-
let alloc: AllocCallback = |size| {
388-
vec_to_uv_buf(vec::from_elem(size, 0))
389-
};
390-
do stream_watcher.read_start(alloc)
391-
|stream_watcher, nread, buf, status| {
392-
393-
let buf = vec_from_uv_buf(buf);
394-
rtdebug!("read cb!");
395-
if status.is_none() {
396-
let bytes = buf.unwrap();
397-
rtdebug!("%s", bytes.slice(0, nread as uint).to_str());
398-
} else {
399-
rtdebug!("status after read: %s", status.get().to_str());
400-
rtdebug!("closing");
401-
stream_watcher.close(||());
402-
}
403-
}
404-
}
405-
loop_.run();
406-
loop_.close();
407-
}
408-
}
409-
410374
#[test]
411375
fn listen() {
412376
do run_in_bare_thread() {
413377
static MAX: int = 10;
414378
let mut loop_ = Loop::new();
415379
let mut server_tcp_watcher = { TcpWatcher::new(&mut loop_) };
416-
let addr = Ipv4(127, 0, 0, 1, 2925);
380+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
417381
server_tcp_watcher.bind(addr);
418382
let loop_ = loop_;
419383
rtdebug!("listening");

src/libcore/rt/uvio.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ use cell::{Cell, empty_cell};
1919
use cast::transmute;
2020
use super::sched::{Scheduler, local_sched};
2121

22-
#[cfg(test)] use super::sched::Task;
23-
#[cfg(test)] use unstable::run_in_bare_thread;
2422
#[cfg(test)] use uint;
23+
#[cfg(test)] use unstable::run_in_bare_thread;
24+
#[cfg(test)] use super::sched::Task;
25+
#[cfg(test)] use super::test::next_test_port;
2526

2627
pub struct UvEventLoop {
2728
uvio: UvIoFactory
@@ -340,7 +341,7 @@ fn test_simple_io_no_connect() {
340341
let mut sched = ~UvEventLoop::new_scheduler();
341342
let task = ~do Task::new(&mut sched.stack_pool) {
342343
let io = unsafe { local_sched::unsafe_borrow_io() };
343-
let addr = Ipv4(127, 0, 0, 1, 2926);
344+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
344345
let maybe_chan = io.connect(addr);
345346
assert!(maybe_chan.is_none());
346347
};
@@ -354,7 +355,7 @@ fn test_simple_io_no_connect() {
354355
fn test_simple_tcp_server_and_client() {
355356
do run_in_bare_thread {
356357
let mut sched = ~UvEventLoop::new_scheduler();
357-
let addr = Ipv4(127, 0, 0, 1, 2929);
358+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
358359

359360
let client_task = ~do Task::new(&mut sched.stack_pool) {
360361
unsafe {
@@ -393,7 +394,7 @@ fn test_simple_tcp_server_and_client() {
393394
fn test_read_and_block() {
394395
do run_in_bare_thread {
395396
let mut sched = ~UvEventLoop::new_scheduler();
396-
let addr = Ipv4(127, 0, 0, 1, 2930);
397+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
397398

398399
let client_task = ~do Task::new(&mut sched.stack_pool) {
399400
let io = unsafe { local_sched::unsafe_borrow_io() };
@@ -454,7 +455,7 @@ fn test_read_and_block() {
454455
fn test_read_read_read() {
455456
do run_in_bare_thread {
456457
let mut sched = ~UvEventLoop::new_scheduler();
457-
let addr = Ipv4(127, 0, 0, 1, 2931);
458+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
458459

459460
let client_task = ~do Task::new(&mut sched.stack_pool) {
460461
let io = unsafe { local_sched::unsafe_borrow_io() };

src/rt/rust_test_helpers.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ rust_dbg_extern_identity_TwoDoubles(TwoDoubles u) {
170170
extern "C" CDECL uintptr_t
171171
rust_dbg_next_port() {
172172
static lock_and_signal dbg_port_lock;
173-
static uintptr_t next_port = 9000;
173+
static uintptr_t next_port = 9600;
174174
scoped_lock with(dbg_port_lock);
175175
uintptr_t this_port = next_port;
176176
next_port += 1;

0 commit comments

Comments
 (0)