fn ping_pong()

in src/net/src/tcp.rs [270:319]


    fn ping_pong() {
        let connector = create_connector();
        let listener = create_listener("127.0.0.1:0");

        let addr = listener.local_addr().expect("listener has no local addr");

        let mut client_stream = connector.connect(addr).expect("failed to connect");
        std::thread::sleep(std::time::Duration::from_millis(100));
        let mut server_stream = listener.accept().expect("failed to accept");

        std::thread::sleep(std::time::Duration::from_millis(100));

        client_stream
            .write_all(b"PING\r\n")
            .expect("failed to write");
        client_stream.flush().expect("failed to flush");

        std::thread::sleep(std::time::Duration::from_millis(100));

        let mut buf = [0; 4096];

        match server_stream.read(&mut buf) {
            Ok(6) => {
                assert_eq!(&buf[0..6], b"PING\r\n");
                server_stream
                    .write_all(b"PONG\r\n")
                    .expect("failed to write");
            }
            Ok(n) => {
                panic!("read: {} bytes but expected 6", n);
            }
            Err(e) => {
                panic!("error reading: {}", e);
            }
        }

        std::thread::sleep(std::time::Duration::from_millis(100));

        match client_stream.read(&mut buf) {
            Ok(6) => {
                assert_eq!(&buf[0..6], b"PONG\r\n");
            }
            Ok(n) => {
                panic!("read: {} bytes but expected 6", n);
            }
            Err(e) => {
                panic!("error reading: {}", e);
            }
        }
    }