summary refs log tree commit diff
path: root/src/libstd/rt/io
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-09-11 10:21:02 -0700
committerbors <bors@rust-lang.org>2013-09-11 10:21:02 -0700
commitf711650b8d05afae6feb80b4f9174a2669b2b4e9 (patch)
treee9610b46dceed8f6226fdeffc1db77480affeb02 /src/libstd/rt/io
parent49eb7bd2716f59e0cd47c427a4c60f49e8ce6e50 (diff)
parent6840076cd9cea9e3982fd924c5a025fbebf1e184 (diff)
downloadrust-f711650b8d05afae6feb80b4f9174a2669b2b4e9.tar.gz
rust-f711650b8d05afae6feb80b4f9174a2669b2b4e9.zip
auto merge of #8999 : anasazi/rust/multi-threaded-io-tests, r=brson
Resolves #8685
Diffstat (limited to 'src/libstd/rt/io')
-rw-r--r--src/libstd/rt/io/file.rs14
-rw-r--r--src/libstd/rt/io/net/tcp.rs109
-rw-r--r--src/libstd/rt/io/net/udp.rs42
-rw-r--r--src/libstd/rt/io/option.rs6
-rw-r--r--src/libstd/rt/io/timer.rs2
5 files changed, 136 insertions, 37 deletions
diff --git a/src/libstd/rt/io/file.rs b/src/libstd/rt/io/file.rs
index ad21dfea3cd..3bc0e74c782 100644
--- a/src/libstd/rt/io/file.rs
+++ b/src/libstd/rt/io/file.rs
@@ -146,7 +146,7 @@ impl Seek for FileStream {
 }
 
 fn file_test_smoke_test_impl() {
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         let message = "it's alright. have a good time";
         let filename = &Path("./tmp/file_rt_io_file_test.txt");
         {
@@ -174,7 +174,7 @@ fn file_test_io_smoke_test() {
 }
 
 fn file_test_invalid_path_opened_without_create_should_raise_condition_impl() {
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         let filename = &Path("./tmp/file_that_does_not_exist.txt");
         let mut called = false;
         do io_error::cond.trap(|_| {
@@ -192,7 +192,7 @@ fn file_test_io_invalid_path_opened_without_create_should_raise_condition() {
 }
 
 fn file_test_unlinking_invalid_path_should_raise_condition_impl() {
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         let filename = &Path("./tmp/file_another_file_that_does_not_exist.txt");
         let mut called = false;
         do io_error::cond.trap(|_| {
@@ -209,7 +209,7 @@ fn file_test_iounlinking_invalid_path_should_raise_condition() {
 }
 
 fn file_test_io_non_positional_read_impl() {
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         use str;
         let message = "ten-four";
         let mut read_mem = [0, .. 8];
@@ -242,7 +242,7 @@ fn file_test_io_non_positional_read() {
 }
 
 fn file_test_io_seeking_impl() {
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         use str;
         let message = "ten-four";
         let mut read_mem = [0, .. 4];
@@ -276,7 +276,7 @@ fn file_test_io_seek_and_tell_smoke_test() {
 
 fn file_test_io_seek_and_write_impl() {
     use io;
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         use str;
         let initial_msg =   "food-is-yummy";
         let overwrite_msg =    "-the-bar!!";
@@ -307,7 +307,7 @@ fn file_test_io_seek_and_write() {
 }
 
 fn file_test_io_seek_shakedown_impl() {
-    do run_in_newsched_task {
+    do run_in_mt_newsched_task {
         use str;          // 01234567890123
         let initial_msg =   "qwer-asdf-zxcv";
         let chunk_one = "qwer";
diff --git a/src/libstd/rt/io/net/tcp.rs b/src/libstd/rt/io/net/tcp.rs
index b533ebe923b..9f8b680b83f 100644
--- a/src/libstd/rt/io/net/tcp.rs
+++ b/src/libstd/rt/io/net/tcp.rs
@@ -159,10 +159,11 @@ mod test {
     use rt::io::net::ip::{Ipv4Addr, SocketAddr};
     use rt::io::*;
     use prelude::*;
+    use rt::comm::oneshot;
 
     #[test] #[ignore]
     fn bind_error() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let mut called = false;
             do io_error::cond.trap(|e| {
                 assert!(e.kind == PermissionDenied);
@@ -179,7 +180,7 @@ mod test {
     #[test]
     #[ignore(cfg(windows))] // FIXME #8811
     fn connect_error() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let mut called = false;
             do io_error::cond.trap(|e| {
                 assert_eq!(e.kind, ConnectionRefused);
@@ -195,11 +196,15 @@ mod test {
 
     #[test]
     fn smoke_test_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let mut buf = [0];
                 stream.read(buf);
@@ -207,6 +212,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let mut stream = TcpStream::connect(addr);
                 stream.write([99]);
             }
@@ -215,11 +221,15 @@ mod test {
 
     #[test]
     fn smoke_test_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let mut buf = [0];
                 stream.read(buf);
@@ -227,6 +237,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let mut stream = TcpStream::connect(addr);
                 stream.write([99]);
             }
@@ -235,11 +246,15 @@ mod test {
 
     #[test]
     fn read_eof_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let mut buf = [0];
                 let nread = stream.read(buf);
@@ -247,6 +262,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let _stream = TcpStream::connect(addr);
                 // Close
             }
@@ -255,11 +271,15 @@ mod test {
 
     #[test]
     fn read_eof_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let mut buf = [0];
                 let nread = stream.read(buf);
@@ -267,6 +287,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let _stream = TcpStream::connect(addr);
                 // Close
             }
@@ -276,11 +297,15 @@ mod test {
     #[test]
     #[ignore(cfg(windows))] // FIXME #8811
     fn read_eof_twice_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let mut buf = [0];
                 let nread = stream.read(buf);
@@ -290,6 +315,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let _stream = TcpStream::connect(addr);
                 // Close
             }
@@ -299,11 +325,15 @@ mod test {
     #[test]
     #[ignore(cfg(windows))] // FIXME #8811
     fn read_eof_twice_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let mut buf = [0];
                 let nread = stream.read(buf);
@@ -313,6 +343,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let _stream = TcpStream::connect(addr);
                 // Close
             }
@@ -322,11 +353,15 @@ mod test {
     #[test]
     #[ignore(cfg(windows))] // FIXME #8811
     fn write_close_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let buf = [0];
                 loop {
@@ -343,6 +378,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let _stream = TcpStream::connect(addr);
                 // Close
             }
@@ -352,11 +388,15 @@ mod test {
     #[test]
     #[ignore(cfg(windows))] // FIXME #8811
     fn write_close_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 let mut stream = acceptor.accept();
                 let buf = [0];
                 loop {
@@ -373,6 +413,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 let _stream = TcpStream::connect(addr);
                 // Close
             }
@@ -381,12 +422,16 @@ mod test {
 
     #[test]
     fn multiple_connect_serial_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
             let max = 10;
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 for ref mut stream in acceptor.incoming().take(max) {
                     let mut buf = [0];
                     stream.read(buf);
@@ -395,6 +440,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 do max.times {
                     let mut stream = TcpStream::connect(addr);
                     stream.write([99]);
@@ -405,12 +451,16 @@ mod test {
 
     #[test]
     fn multiple_connect_serial_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
             let max = 10;
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 for ref mut stream in acceptor.incoming().take(max) {
                     let mut buf = [0];
                     stream.read(buf);
@@ -419,6 +469,7 @@ mod test {
             }
 
             do spawntask {
+                port.take().recv();
                 do max.times {
                     let mut stream = TcpStream::connect(addr);
                     stream.write([99]);
@@ -429,12 +480,15 @@ mod test {
 
     #[test]
     fn multiple_connect_interleaved_greedy_schedule_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
             static MAX: int = 10;
+            let (port, chan) = oneshot();
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 for (i, stream) in acceptor.incoming().enumerate().take(MAX as uint) {
                     let stream = Cell::new(stream);
                     // Start another task to handle the connection
@@ -448,6 +502,7 @@ mod test {
                 }
             }
 
+            port.recv();
             connect(0, addr);
 
             fn connect(i: int, addr: SocketAddr) {
@@ -467,12 +522,15 @@ mod test {
 
     #[test]
     fn multiple_connect_interleaved_greedy_schedule_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
             static MAX: int = 10;
+            let (port, chan) = oneshot();
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 for (i, stream) in acceptor.incoming().enumerate().take(MAX as uint) {
                     let stream = Cell::new(stream);
                     // Start another task to handle the connection
@@ -486,6 +544,7 @@ mod test {
                 }
             }
 
+            port.recv();
             connect(0, addr);
 
             fn connect(i: int, addr: SocketAddr) {
@@ -505,12 +564,15 @@ mod test {
 
     #[test]
     fn multiple_connect_interleaved_lazy_schedule_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip4();
             static MAX: int = 10;
+            let (port, chan) = oneshot();
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 for stream in acceptor.incoming().take(MAX as uint) {
                     let stream = Cell::new(stream);
                     // Start another task to handle the connection
@@ -524,6 +586,7 @@ mod test {
                 }
             }
 
+            port.recv();
             connect(0, addr);
 
             fn connect(i: int, addr: SocketAddr) {
@@ -542,12 +605,15 @@ mod test {
     }
     #[test]
     fn multiple_connect_interleaved_lazy_schedule_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let addr = next_test_ip6();
             static MAX: int = 10;
+            let (port, chan) = oneshot();
+            let chan = Cell::new(chan);
 
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
                 for stream in acceptor.incoming().take(MAX as uint) {
                     let stream = Cell::new(stream);
                     // Start another task to handle the connection
@@ -561,6 +627,7 @@ mod test {
                 }
             }
 
+            port.recv();
             connect(0, addr);
 
             fn connect(i: int, addr: SocketAddr) {
@@ -580,7 +647,7 @@ mod test {
 
     #[cfg(test)]
     fn socket_name(addr: SocketAddr) {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             do spawntask {
                 let mut listener = TcpListener::bind(addr).unwrap();
 
@@ -596,14 +663,20 @@ mod test {
 
     #[cfg(test)]
     fn peer_name(addr: SocketAddr) {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
+
             do spawntask {
                 let mut acceptor = TcpListener::bind(addr).listen();
+                chan.take().send(());
 
                 acceptor.accept();
             }
 
             do spawntask {
+                port.take().recv();
                 let stream = TcpStream::connect(addr);
 
                 assert!(stream.is_some());
diff --git a/src/libstd/rt/io/net/udp.rs b/src/libstd/rt/io/net/udp.rs
index 132ca064515..a65c918351a 100644
--- a/src/libstd/rt/io/net/udp.rs
+++ b/src/libstd/rt/io/net/udp.rs
@@ -112,10 +112,12 @@ mod test {
     use rt::io::net::ip::{Ipv4Addr, SocketAddr};
     use rt::io::*;
     use option::{Some, None};
+    use rt::comm::oneshot;
+    use cell::Cell;
 
     #[test]  #[ignore]
     fn bind_error() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let mut called = false;
             do io_error::cond.trap(|e| {
                 assert!(e.kind == PermissionDenied);
@@ -131,13 +133,17 @@ mod test {
 
     #[test]
     fn socket_smoke_test_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let server_ip = next_test_ip4();
             let client_ip = next_test_ip4();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 match UdpSocket::bind(server_ip) {
                     Some(ref mut server) => {
+                        chan.take().send(());
                         let mut buf = [0];
                         match server.recvfrom(buf) {
                             Some((nread, src)) => {
@@ -154,7 +160,10 @@ mod test {
 
             do spawntask {
                 match UdpSocket::bind(client_ip) {
-                    Some(ref mut client) => client.sendto([99], server_ip),
+                    Some(ref mut client) => {
+                        port.take().recv();
+                        client.sendto([99], server_ip)
+                    }
                     None => fail!()
                 }
             }
@@ -163,13 +172,17 @@ mod test {
 
     #[test]
     fn socket_smoke_test_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let server_ip = next_test_ip6();
             let client_ip = next_test_ip6();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 match UdpSocket::bind(server_ip) {
                     Some(ref mut server) => {
+                        chan.take().send(());
                         let mut buf = [0];
                         match server.recvfrom(buf) {
                             Some((nread, src)) => {
@@ -186,7 +199,10 @@ mod test {
 
             do spawntask {
                 match UdpSocket::bind(client_ip) {
-                    Some(ref mut client) => client.sendto([99], server_ip),
+                    Some(ref mut client) => {
+                        port.take().recv();
+                        client.sendto([99], server_ip)
+                    }
                     None => fail!()
                 }
             }
@@ -195,15 +211,19 @@ mod test {
 
     #[test]
     fn stream_smoke_test_ip4() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let server_ip = next_test_ip4();
             let client_ip = next_test_ip4();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 match UdpSocket::bind(server_ip) {
                     Some(server) => {
                         let server = ~server;
                         let mut stream = server.connect(client_ip);
+                        chan.take().send(());
                         let mut buf = [0];
                         match stream.read(buf) {
                             Some(nread) => {
@@ -222,6 +242,7 @@ mod test {
                     Some(client) => {
                         let client = ~client;
                         let mut stream = client.connect(server_ip);
+                        port.take().recv();
                         stream.write([99]);
                     }
                     None => fail!()
@@ -232,15 +253,19 @@ mod test {
 
     #[test]
     fn stream_smoke_test_ip6() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let server_ip = next_test_ip6();
             let client_ip = next_test_ip6();
+            let (port, chan) = oneshot();
+            let port = Cell::new(port);
+            let chan = Cell::new(chan);
 
             do spawntask {
                 match UdpSocket::bind(server_ip) {
                     Some(server) => {
                         let server = ~server;
                         let mut stream = server.connect(client_ip);
+                        chan.take().send(());
                         let mut buf = [0];
                         match stream.read(buf) {
                             Some(nread) => {
@@ -259,6 +284,7 @@ mod test {
                     Some(client) => {
                         let client = ~client;
                         let mut stream = client.connect(server_ip);
+                        port.take().recv();
                         stream.write([99]);
                     }
                     None => fail!()
@@ -269,7 +295,7 @@ mod test {
 
     #[cfg(test)]
     fn socket_name(addr: SocketAddr) {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             do spawntask {
                 let server = UdpSocket::bind(addr);
 
diff --git a/src/libstd/rt/io/option.rs b/src/libstd/rt/io/option.rs
index 098433f299c..2ea1b615483 100644
--- a/src/libstd/rt/io/option.rs
+++ b/src/libstd/rt/io/option.rs
@@ -95,7 +95,7 @@ mod test {
 
     #[test]
     fn test_option_writer() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let mut writer: Option<MemWriter> = Some(MemWriter::new());
             writer.write([0, 1, 2]);
             writer.flush();
@@ -105,7 +105,7 @@ mod test {
 
     #[test]
     fn test_option_writer_error() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let mut writer: Option<MemWriter> = None;
 
             let mut called = false;
@@ -130,7 +130,7 @@ mod test {
 
     #[test]
     fn test_option_reader() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let mut reader: Option<MemReader> = Some(MemReader::new(~[0, 1, 2, 3]));
             let mut buf = [0, 0];
             reader.read(buf);
diff --git a/src/libstd/rt/io/timer.rs b/src/libstd/rt/io/timer.rs
index 7f2d88f994d..6754511b038 100644
--- a/src/libstd/rt/io/timer.rs
+++ b/src/libstd/rt/io/timer.rs
@@ -47,7 +47,7 @@ mod test {
     use rt::test::*;
     #[test]
     fn test_io_timer_sleep_simple() {
-        do run_in_newsched_task {
+        do run_in_mt_newsched_task {
             let timer = Timer::new();
             do timer.map_move |mut t| { t.sleep(1) };
         }