Skip to content

Commit 23354f5

Browse files
committed
---
yaml --- r: 72181 b: refs/heads/dist-snap c: e564fc7 h: refs/heads/master i: 72179: 8707a36 v: v3
1 parent d0be609 commit 23354f5

File tree

3 files changed

+51
-54
lines changed

3 files changed

+51
-54
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
99
refs/heads/incoming: b50030718cf28f2a5a81857a26b57442734fe854
10-
refs/heads/dist-snap: 1a7561be4d2046a6a6b78ae5dab2e6fd3ba8db82
10+
refs/heads/dist-snap: e564fc7f6b02e917407b3aa6235fc0727afdaf2c
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1313
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/libcore/rt/test.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,22 @@ pub fn run_in_newsched_task(f: ~fn()) {
2828
}
2929
}
3030

31+
/// Create a new task and run it right now
32+
pub fn spawn_immediately(f: ~fn()) {
33+
use cell::Cell;
34+
use super::*;
35+
use super::sched::*;
36+
37+
let mut sched = local_sched::take();
38+
let task = ~Task::new(&mut sched.stack_pool, f);
39+
do sched.switch_running_tasks_and_then(task) |task| {
40+
let task = Cell(task);
41+
do local_sched::borrow |sched| {
42+
sched.task_queue.push_front(task.take());
43+
}
44+
}
45+
}
46+
3147
/// Get a port number, starting at 9600, for use in tests
3248
pub fn next_test_port() -> u16 {
3349
unsafe {

branches/dist-snap/src/libcore/rt/uvio.rs

Lines changed: 34 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use super::sched::{Scheduler, local_sched};
2222
#[cfg(test)] use uint;
2323
#[cfg(test)] use unstable::run_in_bare_thread;
2424
#[cfg(test)] use super::sched::Task;
25-
#[cfg(test)] use super::test::next_test_port;
25+
#[cfg(test)] use super::test::*;
2626

2727
pub struct UvEventLoop {
2828
uvio: UvIoFactory
@@ -336,35 +336,21 @@ impl Stream for UvStream {
336336

337337
#[test]
338338
fn test_simple_io_no_connect() {
339-
do run_in_bare_thread {
340-
let mut sched = ~UvEventLoop::new_scheduler();
341-
let task = ~do Task::new(&mut sched.stack_pool) {
342-
let io = unsafe { local_sched::unsafe_borrow_io() };
343-
let addr = Ipv4(127, 0, 0, 1, next_test_port());
344-
let maybe_chan = io.connect(addr);
345-
assert!(maybe_chan.is_none());
346-
};
347-
sched.task_queue.push_back(task);
348-
sched.run();
339+
do run_in_newsched_task {
340+
let io = unsafe { local_sched::unsafe_borrow_io() };
341+
let addr = Ipv4(127, 0, 0, 1, next_test_port());
342+
let maybe_chan = io.connect(addr);
343+
assert!(maybe_chan.is_none());
349344
}
350345
}
351346

352347
#[test]
353348
fn test_simple_tcp_server_and_client() {
354-
do run_in_bare_thread {
355-
let mut sched = ~UvEventLoop::new_scheduler();
349+
do run_in_newsched_task {
356350
let addr = Ipv4(127, 0, 0, 1, next_test_port());
357351

358-
let client_task = ~do Task::new(&mut sched.stack_pool) {
359-
unsafe {
360-
let io = local_sched::unsafe_borrow_io();
361-
let mut stream = io.connect(addr).unwrap();
362-
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
363-
stream.close();
364-
}
365-
};
366-
367-
let server_task = ~do Task::new(&mut sched.stack_pool) {
352+
// Start the server first so it's listening when we connect
353+
do spawn_immediately {
368354
unsafe {
369355
let io = local_sched::unsafe_borrow_io();
370356
let mut listener = io.bind(addr).unwrap();
@@ -379,32 +365,25 @@ fn test_simple_tcp_server_and_client() {
379365
stream.close();
380366
listener.close();
381367
}
382-
};
368+
}
383369

384-
// Start the server first so it listens before the client connects
385-
sched.task_queue.push_back(server_task);
386-
sched.task_queue.push_back(client_task);
387-
sched.run();
370+
do spawn_immediately {
371+
unsafe {
372+
let io = local_sched::unsafe_borrow_io();
373+
let mut stream = io.connect(addr).unwrap();
374+
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
375+
stream.close();
376+
}
377+
}
388378
}
389379
}
390380

391381
#[test] #[ignore(reason = "busted")]
392382
fn test_read_and_block() {
393-
do run_in_bare_thread {
394-
let mut sched = ~UvEventLoop::new_scheduler();
383+
do run_in_newsched_task {
395384
let addr = Ipv4(127, 0, 0, 1, next_test_port());
396385

397-
let client_task = ~do Task::new(&mut sched.stack_pool) {
398-
let io = unsafe { local_sched::unsafe_borrow_io() };
399-
let mut stream = io.connect(addr).unwrap();
400-
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
401-
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
402-
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
403-
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
404-
stream.close();
405-
};
406-
407-
let server_task = ~do Task::new(&mut sched.stack_pool) {
386+
do spawn_immediately {
408387
let io = unsafe { local_sched::unsafe_borrow_io() };
409388
let mut listener = io.bind(addr).unwrap();
410389
let mut stream = listener.listen().unwrap();
@@ -440,22 +419,27 @@ fn test_read_and_block() {
440419

441420
stream.close();
442421
listener.close();
443-
};
422+
}
423+
424+
do spawn_immediately {
425+
let io = unsafe { local_sched::unsafe_borrow_io() };
426+
let mut stream = io.connect(addr).unwrap();
427+
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
428+
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
429+
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
430+
stream.write([0, 1, 2, 3, 4, 5, 6, 7]);
431+
stream.close();
432+
}
444433

445-
// Start the server first so it listens before the client connects
446-
sched.task_queue.push_back(server_task);
447-
sched.task_queue.push_back(client_task);
448-
sched.run();
449434
}
450435
}
451436

452437
#[test] #[ignore(reason = "needs server")]
453438
fn test_read_read_read() {
454-
do run_in_bare_thread {
455-
let mut sched = ~UvEventLoop::new_scheduler();
439+
do run_in_newsched_task {
456440
let addr = Ipv4(127, 0, 0, 1, next_test_port());
457441

458-
let client_task = ~do Task::new(&mut sched.stack_pool) {
442+
do spawn_immediately {
459443
let io = unsafe { local_sched::unsafe_borrow_io() };
460444
let mut stream = io.connect(addr).unwrap();
461445
let mut buf = [0, .. 2048];
@@ -467,9 +451,6 @@ fn test_read_read_read() {
467451
}
468452
rtdebug_!("read %u bytes total", total_bytes_read as uint);
469453
stream.close();
470-
};
471-
472-
sched.task_queue.push_back(client_task);
473-
sched.run();
454+
}
474455
}
475456
}

0 commit comments

Comments
 (0)