Skip to main content

test/
test.rs

1extern crate psocket;
2
3use psocket::TcpSocket;
4use std::io::prelude::*;
5use std::time::{Duration, Instant};
6use std::io::ErrorKind;
7
8
9fn main() {
10
11    // bind and drop a socket to track down a "probably unassigned" port
12    let listener = TcpSocket::bind("127.0.0.1:1234").unwrap();
13    let addr = listener.local_addr().unwrap();
14    
15    let mut stream = TcpSocket::connect(&("localhost", addr.port())).expect("connect error");
16    stream.set_read_timeout(Some(Duration::from_millis(1000))).expect("set read timeout error");
17
18    let mut other_end = listener.accept().unwrap().0;
19    other_end.write_all(b"hello world").expect("write error");
20
21    let mut buf = [0; 11];
22    stream.read(&mut buf).expect("read error");
23    assert_eq!(b"hello world", &buf[..]);
24
25    let start = Instant::now();
26    let kind = stream.read(&mut buf).err().expect("expected error").kind();
27    assert!(kind == ErrorKind::WouldBlock || kind == ErrorKind::TimedOut);
28    assert!(start.elapsed() > Duration::from_millis(400));
29    drop(listener);
30
31    // socket.set_liner(true, 10);
32    // assert_eq!((true, 10), socket.liner().unwrap());
33
34    // socket.set_recv_size(20480);
35    // assert_eq!(20480, socket.recv_size().unwrap());
36    
37    // socket.set_send_size(40960);
38    // assert_eq!(40960, socket.send_size().unwrap());
39    
40    // let mut new_socket = socket.clone();
41    // assert_eq!(20480, new_socket.recv_size().unwrap());
42    
43    // new_socket.unlink();    
44    // drop(new_socket);
45    // assert_eq!(20480, socket.recv_size().unwrap());
46    
47    // let new_socket = socket.clone();
48    // drop(new_socket);
49    // assert!(socket.recv_size().is_err());
50
51    // println!("finish");
52    // let addr = "www.baidu.com:80".to_socket_addrs().unwrap().next().unwrap();
53    // // drop(socket);
54
55    // println!("addr = {:?}", addr);
56
57    // let timeout = Duration::from_secs(1);
58    // let mut e = TcpSocket::connect_asyn(&addr).unwrap();
59    // loop {
60    //     println!("e = {:?}", e);
61    //     println!("e.check_ready() = {:?}", e.check_ready().unwrap());
62    //     if e.is_ready() {
63    //         break;
64    //     }
65    // }
66    // println!("e = {:?}", e);
67    // assert!(e.kind() == io::ErrorKind::ConnectionRefused ||
68    //         e.kind() == io::ErrorKind::TimedOut ||
69    //         e.kind() == io::ErrorKind::Other,
70    //         "bad error: {} {:?}", e, e.kind());
71}