mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-08 03:11:46 +00:00
Updates are made to source and documentation. This more accurately represents the currently supported platforms of Android/Linux and Windows, without unexpectedly including other unix-like operating systems. Command to reproduce: $ find . -type f -not -path '*/\.git/*' | xargs -I {} sed -i 's/cfg(unix)/cfg(any(target_os = "android", target_os = "linux"))/g' {} $ cargo fmt md files manually updated to fix line lengths. Renaming `unix` modules to `linux` will be done in a later CL. Test: ./tools/dev_container ./tools/presubmit Bug: b/298269162 Change-Id: I42c1bf0abf80b9a0df25551613910293217c7295 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4909059 Commit-Queue: Cody Schuffelen <schuffelen@google.com> Reviewed-by: Frederick Mayle <fmayle@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Noah Gold <nkgold@google.com>
119 lines
2.9 KiB
Rust
119 lines
2.9 KiB
Rust
// Copyright 2022 The ChromiumOS Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// TODO(225193541): Enable/add tests for windows.
|
|
#![cfg(any(target_os = "android", target_os = "linux"))]
|
|
|
|
use std::path::PathBuf;
|
|
use std::result;
|
|
|
|
use base::Event;
|
|
use net_util::sys::unix::fakes::FakeTap;
|
|
use vhost::net::fakes::FakeNet;
|
|
use vhost::net::NetT;
|
|
use vhost::Error;
|
|
use vhost::Result;
|
|
use vhost::Vhost;
|
|
use vm_memory::GuestAddress;
|
|
use vm_memory::GuestMemory;
|
|
use vm_memory::GuestMemoryError;
|
|
|
|
fn create_guest_memory() -> result::Result<GuestMemory, GuestMemoryError> {
|
|
let start_addr1 = GuestAddress(0x0);
|
|
let start_addr2 = GuestAddress(0x1000);
|
|
GuestMemory::new(&[(start_addr1, 0x1000), (start_addr2, 0x4000)])
|
|
}
|
|
|
|
fn assert_ok_or_known_failure<T>(res: Result<T>) {
|
|
match &res {
|
|
// FakeNet won't respond to ioctl's
|
|
Ok(_t) => {}
|
|
Err(Error::IoctlError(ioe)) if ioe.raw_os_error().unwrap() == 25 => {}
|
|
Err(e) => panic!("Unexpected Error:\n{}", e),
|
|
}
|
|
}
|
|
|
|
fn create_fake_vhost_net() -> FakeNet<FakeTap> {
|
|
FakeNet::<FakeTap>::new(&PathBuf::from("")).unwrap()
|
|
}
|
|
|
|
#[test]
|
|
fn test_create_fake_vhost_net() {
|
|
create_fake_vhost_net();
|
|
}
|
|
|
|
#[test]
|
|
fn set_owner() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.set_owner();
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn get_features() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.get_features();
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_features() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.set_features(0);
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_mem_table() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let gm = create_guest_memory().unwrap();
|
|
let res = vhost_net.set_mem_table(&gm);
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_vring_num() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.set_vring_num(0, 1);
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_vring_addr() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let gm = create_guest_memory().unwrap();
|
|
let res = vhost_net.set_vring_addr(
|
|
&gm,
|
|
1,
|
|
1,
|
|
0,
|
|
0x0,
|
|
GuestAddress(0x0),
|
|
GuestAddress(0x0),
|
|
GuestAddress(0x0),
|
|
None,
|
|
);
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_vring_base() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.set_vring_base(0, 1);
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_vring_call() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.set_vring_call(0, &Event::new().unwrap());
|
|
assert_ok_or_known_failure(res);
|
|
}
|
|
|
|
#[test]
|
|
fn set_vring_kick() {
|
|
let vhost_net = create_fake_vhost_net();
|
|
let res = vhost_net.set_vring_kick(0, &Event::new().unwrap());
|
|
assert_ok_or_known_failure(res);
|
|
}
|