diff options
Diffstat (limited to 'tests/vsock.rs')
-rw-r--r-- | tests/vsock.rs | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/tests/vsock.rs b/tests/vsock.rs index 52d908b..1ac60c9 100644 --- a/tests/vsock.rs +++ b/tests/vsock.rs @@ -17,11 +17,15 @@ use rand::RngCore; use sha2::{Digest, Sha256}; use std::io::{Read, Write}; -use vsock::{get_local_cid, SockAddr, VsockAddr, VsockStream, VMADDR_CID_HOST}; +use vsock::{get_local_cid, VsockAddr, VsockListener, VsockStream, VMADDR_CID_HOST}; const TEST_BLOB_SIZE: usize = 1_000_000; const TEST_BLOCK_SIZE: usize = 5_000; +const SERVER_CID: u32 = 3; +const SERVER_PORT: u32 = 8000; +const LISTEN_PORT: u32 = 9000; + /// A simple test for the vsock implementation. /// Generate a large random blob of binary data, and transfer it in chunks over the VsockStream /// interface. The vm enpoint is running a simple echo server, so for each chunk we will read @@ -40,7 +44,7 @@ fn test_vsock() { rng.fill_bytes(&mut blob); let mut stream = - VsockStream::connect(&SockAddr::Vsock(VsockAddr::new(3, 8000))).expect("connection failed"); + VsockStream::connect(&VsockAddr::new(SERVER_CID, SERVER_PORT)).expect("connection failed"); while tx_pos < TEST_BLOB_SIZE { let written_bytes = stream @@ -72,3 +76,27 @@ fn test_vsock() { fn test_get_local_cid() { assert_eq!(get_local_cid().unwrap(), VMADDR_CID_HOST); } + +#[test] +fn test_listener_local_addr() { + let listener = VsockListener::bind(&VsockAddr::new(VMADDR_CID_HOST, LISTEN_PORT)).unwrap(); + + let local_addr = listener.local_addr().unwrap(); + assert_eq!(local_addr.cid(), VMADDR_CID_HOST); + assert_eq!(local_addr.port(), LISTEN_PORT); +} + +#[test] +fn test_stream_addresses() { + let stream = + VsockStream::connect(&VsockAddr::new(SERVER_CID, SERVER_PORT)).expect("connection failed"); + + let local_addr = stream.local_addr().unwrap(); + // Apparently on some systems a client socket has the host CID, on some it has CID_ANY. Allow + // either. + assert!([libc::VMADDR_CID_ANY, VMADDR_CID_HOST].contains(&local_addr.cid())); + + let peer_addr = stream.peer_addr().unwrap(); + assert_eq!(peer_addr.cid(), SERVER_CID); + assert_eq!(peer_addr.port(), SERVER_PORT); +} |