mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-25 10:23:23 +00:00
Make integration test runs in release mode
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
cf1d4faab4
commit
5d75298144
6
.github/workflows/integration_test.yml
vendored
6
.github/workflows/integration_test.yml
vendored
@ -18,14 +18,14 @@ jobs:
|
||||
|
||||
- name: Boot Test (Multiboot)
|
||||
id: boot_test_mb
|
||||
run: RUSTFLAGS="-C opt-level=1" make run AUTO_TEST=boot ENABLE_KVM=0 BOOT_PROTOCOL=multiboot
|
||||
run: make run AUTO_TEST=boot ENABLE_KVM=0 BOOT_PROTOCOL=multiboot RELEASE_MODE=1
|
||||
|
||||
- name: Boot Test (Multiboot2)
|
||||
id: boot_test_mb2
|
||||
run: RUSTFLAGS="-C opt-level=1" make run AUTO_TEST=boot ENABLE_KVM=0 BOOT_PROTOCOL=multiboot2
|
||||
run: make run AUTO_TEST=boot ENABLE_KVM=0 BOOT_PROTOCOL=multiboot2 RELEASE_MODE=1
|
||||
|
||||
- name: Syscall Test (Linux Boot Protocol)
|
||||
id: syscall_test_linux
|
||||
run: RUSTFLAGS="-C opt-level=1" make run AUTO_TEST=syscall ENABLE_KVM=0 BOOT_PROTOCOL=linux
|
||||
run: make run AUTO_TEST=syscall ENABLE_KVM=0 BOOT_PROTOCOL=linux RELEASE_MODE=1
|
||||
|
||||
# TODO: include the integration tests for MicroVM, which is not ready yet.
|
||||
|
13
Makefile
13
Makefile
@ -9,6 +9,7 @@ GDB_CLIENT ?= 0
|
||||
GDB_SERVER ?= 0
|
||||
INTEL_TDX ?= 0
|
||||
SKIP_GRUB_MENU ?= 1
|
||||
RELEASE_MODE ?= 0
|
||||
# End of setting up Make varaiables
|
||||
|
||||
KERNEL_CMDLINE := SHELL="/bin/sh" LOGNAME="root" HOME="/" USER="root" PATH="/bin" init=/usr/bin/busybox -- sh -l
|
||||
@ -22,11 +23,21 @@ endif
|
||||
|
||||
CARGO_KBUILD_ARGS :=
|
||||
|
||||
CARGO_KRUN_ARGS := -- '$(KERNEL_CMDLINE)'
|
||||
CARGO_KRUN_ARGS :=
|
||||
|
||||
ifeq ($(RELEASE_MODE), 1)
|
||||
CARGO_KBUILD_ARGS += --release
|
||||
CARGO_KRUN_ARGS += --release
|
||||
endif
|
||||
|
||||
CARGO_KRUN_ARGS += -- '$(KERNEL_CMDLINE)'
|
||||
CARGO_KRUN_ARGS += --boot-method="$(BOOT_METHOD)"
|
||||
CARGO_KRUN_ARGS += --boot-protocol="$(BOOT_PROTOCOL)"
|
||||
|
||||
ifeq ($(RELEASE_MODE), 1)
|
||||
CARGO_KRUN_ARGS += --release-mode
|
||||
endif
|
||||
|
||||
ifeq ($(EMULATE_IOMMU), 1)
|
||||
CARGO_KRUN_ARGS += --emulate-iommu
|
||||
endif
|
||||
|
@ -66,6 +66,7 @@ pub fn create_bootdev_image(
|
||||
initramfs_path: PathBuf,
|
||||
grub_cfg: String,
|
||||
protocol: BootProtocol,
|
||||
release_mode: bool,
|
||||
) -> PathBuf {
|
||||
let target_dir = jinux_path.parent().unwrap();
|
||||
let iso_root = target_dir.join("iso_root");
|
||||
@ -86,7 +87,11 @@ pub fn create_bootdev_image(
|
||||
let target_path = match protocol {
|
||||
BootProtocol::Linux => {
|
||||
// Find the setup header in the build script output directory.
|
||||
let bs_out_dir = glob("target/x86_64-custom/debug/build/jinux-frame-*").unwrap();
|
||||
let bs_out_dir = if release_mode {
|
||||
glob("target/x86_64-custom/release/build/jinux-frame-*").unwrap()
|
||||
} else {
|
||||
glob("target/x86_64-custom/debug/build/jinux-frame-*").unwrap()
|
||||
};
|
||||
let header_path = Path::new(bs_out_dir.into_iter().next().unwrap().unwrap().as_path())
|
||||
.join("out")
|
||||
.join("bin")
|
||||
|
@ -80,6 +80,10 @@ struct Args {
|
||||
/// Run a GDB client instead of running the kernel.
|
||||
#[arg(long, default_value_t = false)]
|
||||
run_gdb_client: bool,
|
||||
|
||||
/// Run in the release mode.
|
||||
#[arg(long, default_value_t = false)]
|
||||
release_mode: bool,
|
||||
}
|
||||
|
||||
pub const COMMON_ARGS: &[&str] = &[
|
||||
@ -119,7 +123,6 @@ pub const GDB_ARGS: &[&str] = &[
|
||||
|
||||
fn main() {
|
||||
let args = Args::parse();
|
||||
|
||||
if args.run_gdb_client {
|
||||
let gdb_grub = args.boot_method == BootMethod::QemuGrub;
|
||||
// You should comment out the next line if you want to debug grub instead
|
||||
@ -195,6 +198,7 @@ fn main() {
|
||||
initramfs_path,
|
||||
grub_cfg,
|
||||
args.boot_protocol,
|
||||
args.release_mode,
|
||||
);
|
||||
qemu_cmd.arg("-cdrom");
|
||||
qemu_cmd.arg(bootdev_image.as_os_str());
|
||||
|
Reference in New Issue
Block a user