xref: /aosp_15_r20/external/crosvm/e2e_tests/benches/gimp.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2023 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker use std::time::Duration;
6*bb4ee6a4SAndroid Build Coastguard Worker 
7*bb4ee6a4SAndroid Build Coastguard Worker use fixture::vm::Config;
8*bb4ee6a4SAndroid Build Coastguard Worker use fixture::vm::TestVm;
9*bb4ee6a4SAndroid Build Coastguard Worker 
10*bb4ee6a4SAndroid Build Coastguard Worker #[test]
gimp() -> anyhow::Result<()>11*bb4ee6a4SAndroid Build Coastguard Worker fn gimp() -> anyhow::Result<()> {
12*bb4ee6a4SAndroid Build Coastguard Worker     let cfg = Config::from_env()
13*bb4ee6a4SAndroid Build Coastguard Worker     .with_kernel("https://storage.googleapis.com/crosvm/integration_tests/guest-bzimage-x86_64-r0009")
14*bb4ee6a4SAndroid Build Coastguard Worker     .with_initrd("https://storage.googleapis.com/crosvm/integration_tests/benchmarks/custom-initramfs.cpio.gz-r0005")
15*bb4ee6a4SAndroid Build Coastguard Worker     // Created by e2e_tests/guest_under_test/rootfs_benches/gimp/make.sh
16*bb4ee6a4SAndroid Build Coastguard Worker     .with_rootfs("https://storage.googleapis.com/crosvm/integration_tests/benchmarks/gimp-rootfs.img.zst-r0001").rootfs_is_rw().rootfs_is_compressed()
17*bb4ee6a4SAndroid Build Coastguard Worker     .with_stdout_hardware("serial").extra_args(vec!["--mem".to_owned(), "1024".to_owned()]);
18*bb4ee6a4SAndroid Build Coastguard Worker     let mut vm = TestVm::new(cfg).unwrap();
19*bb4ee6a4SAndroid Build Coastguard Worker     assert_eq!(
20*bb4ee6a4SAndroid Build Coastguard Worker         vm.exec_in_guest_async("echo 42")?
21*bb4ee6a4SAndroid Build Coastguard Worker             .with_timeout(Duration::from_secs(500))
22*bb4ee6a4SAndroid Build Coastguard Worker             .wait_ok(&mut vm)?
23*bb4ee6a4SAndroid Build Coastguard Worker             .stdout
24*bb4ee6a4SAndroid Build Coastguard Worker             .trim(),
25*bb4ee6a4SAndroid Build Coastguard Worker         "42"
26*bb4ee6a4SAndroid Build Coastguard Worker     );
27*bb4ee6a4SAndroid Build Coastguard Worker     vm.exec_in_guest("cd /workdir")?;
28*bb4ee6a4SAndroid Build Coastguard Worker     // Time initializing all plugins and execute action
29*bb4ee6a4SAndroid Build Coastguard Worker     vm.exec_in_guest(
30*bb4ee6a4SAndroid Build Coastguard Worker         r#"/usr/bin/gimp -i -b '(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE "/workdir/test1.png" "/workdir/test1.png")))(drawable (car (gimp-image-get-active-layer image)))) (plug-in-mblur RUN-NONINTERACTIVE image drawable 1 0 45 200 200) (gimp-file-save RUN-NONINTERACTIVE image drawable "/workdir/out1.png" "/workdir/out1.png"))' -b '(gimp-quit 0)'"#,
31*bb4ee6a4SAndroid Build Coastguard Worker     )?;
32*bb4ee6a4SAndroid Build Coastguard Worker     // Time executing action only
33*bb4ee6a4SAndroid Build Coastguard Worker     vm.exec_in_guest(
34*bb4ee6a4SAndroid Build Coastguard Worker         r#"/usr/bin/gimp -i -b '(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE "/workdir/test2.png" "/workdir/test2.png")))(drawable (car (gimp-image-get-active-layer image)))) (plug-in-mblur RUN-NONINTERACTIVE image drawable 1 0 45 200 200) (gimp-file-save RUN-NONINTERACTIVE image drawable "/workdir/out2.png" "/workdir/out2.png"))' -b '(gimp-quit 0)'"#,
35*bb4ee6a4SAndroid Build Coastguard Worker     )?;
36*bb4ee6a4SAndroid Build Coastguard Worker     Ok(())
37*bb4ee6a4SAndroid Build Coastguard Worker }
38