mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-08 19:33:07 +00:00
integration_tests: add tests for disk resize command
Add the test for disk resize command. This patch also updates the Vm fixture to support additional argument to the command, and also updates the Vhost-user backend fixture to use devices command. BUG=b:243127910, b:191845881 TEST=./integration_tests/run Change-Id: I8f1f4bd6a986ea77507a2ed6f1ae8582b10d3178 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3954786 Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
This commit is contained in:
parent
a95adc3124
commit
5f4321b0a3
2 changed files with 55 additions and 6 deletions
|
@ -13,9 +13,11 @@ use fixture::Config;
|
|||
use fixture::TestVm;
|
||||
use tempfile::NamedTempFile;
|
||||
|
||||
const DEFAULT_BLOCK_SIZE: u64 = 1024 * 1024;
|
||||
|
||||
fn prepare_disk_img() -> NamedTempFile {
|
||||
let mut disk = NamedTempFile::new().unwrap();
|
||||
disk.as_file_mut().set_len(1024 * 1024).unwrap();
|
||||
disk.as_file_mut().set_len(DEFAULT_BLOCK_SIZE).unwrap();
|
||||
|
||||
// Add /sbin and /usr/sbin to PATH since some distributions put mkfs.ext4 in one of those
|
||||
// directories but don't add them to non-root PATH.
|
||||
|
@ -47,3 +49,45 @@ fn mount_block() {
|
|||
"42"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn resize() {
|
||||
let disk = prepare_disk_img();
|
||||
let disk_path = disk.path().to_str().unwrap().to_string();
|
||||
println!("disk={disk_path}");
|
||||
|
||||
let config = Config::new().extra_args(vec!["--rwdisk".to_string(), disk_path]);
|
||||
let mut vm = TestVm::new(config).unwrap();
|
||||
|
||||
// Check the initial block device size.
|
||||
assert_eq!(
|
||||
vm.exec_in_guest("blockdev --getsize64 /dev/vdb")
|
||||
.unwrap()
|
||||
.trim()
|
||||
.parse::<u64>()
|
||||
.unwrap(),
|
||||
DEFAULT_BLOCK_SIZE
|
||||
);
|
||||
|
||||
let new_size = DEFAULT_BLOCK_SIZE * 2;
|
||||
|
||||
// The index of the disk to resize.
|
||||
let disk_index = 1;
|
||||
|
||||
vm.disk(vec![
|
||||
"resize".to_string(),
|
||||
disk_index.to_string(),
|
||||
new_size.to_string(),
|
||||
])
|
||||
.expect("Disk resizing command failed");
|
||||
|
||||
// Check the new block device size.
|
||||
assert_eq!(
|
||||
vm.exec_in_guest("blockdev --getsize64 /dev/vdb")
|
||||
.unwrap()
|
||||
.trim()
|
||||
.parse::<u64>()
|
||||
.unwrap(),
|
||||
new_size
|
||||
);
|
||||
}
|
||||
|
|
|
@ -391,8 +391,9 @@ impl TestVm {
|
|||
Ok(trimmed.to_string())
|
||||
}
|
||||
|
||||
fn crosvm_command(&self, command: &str) -> Result<()> {
|
||||
let args = [self.control_socket_path.to_str().unwrap()];
|
||||
fn crosvm_command(&self, command: &str, mut args: Vec<String>) -> Result<()> {
|
||||
args.push(self.control_socket_path.to_str().unwrap().to_string());
|
||||
|
||||
println!("$ crosvm {} {:?}", command, &args.join(" "));
|
||||
|
||||
let mut cmd = Command::new(find_crosvm_binary());
|
||||
|
@ -422,15 +423,19 @@ impl TestVm {
|
|||
}
|
||||
|
||||
pub fn stop(&self) -> Result<()> {
|
||||
self.crosvm_command("stop")
|
||||
self.crosvm_command("stop", vec![])
|
||||
}
|
||||
|
||||
pub fn suspend(&self) -> Result<()> {
|
||||
self.crosvm_command("suspend")
|
||||
self.crosvm_command("suspend", vec![])
|
||||
}
|
||||
|
||||
pub fn resume(&self) -> Result<()> {
|
||||
self.crosvm_command("resume")
|
||||
self.crosvm_command("resume", vec![])
|
||||
}
|
||||
|
||||
pub fn disk(&self, args: Vec<String>) -> Result<()> {
|
||||
self.crosvm_command("disk", args)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue