in metalos/metalctl/src/generator.rs [620:679]
fn test_generator_metalos_existing() -> Result<()> {
let (log, tmpdir, opts, boot_id) =
setup_generator_test("metalos_existing").context("failed to setup test environment")?;
let cmdline = MetalosCmdline::from_kernel_args(
"\
metalos.host-config-uri=\"https://server:8000/config\" \
rootfstype=btrfs \
root=LABEL=unittest \
macaddress=11:22:33:44:55:66\
",
)?;
let boot_mode =
generator_maybe_err(cmdline, log, opts.clone()).context("failed to run generator")?;
assert_eq!(boot_mode, BootMode::MetalOSExisting);
compare_dir(
&tmpdir,
btreemap! {
opts.normal_dir.join(ROOTDISK_MOUNT_SERVICE) => "\
[Unit]\n\
[Mount]\n\
What=LABEL=unittest\n\
Where=/run/fs/control\n\
Options=\n\
Type=btrfs\n\
".into(),
opts.normal_dir.join("metalos-switch-root.service.d/metalos_boot.conf") => "\
[Unit]\n\
After=metalos-snapshot-root.service\n\
Requires=metalos-snapshot-root.service\n\
".into(),
opts.normal_dir.join("metalos-switch-root.service.d/apply_host_config.conf") => "\
[Unit]\n\
After=metalos-apply-host-config.service\n\
Requires=metalos-apply-host-config.service\n\
".into(),
opts.environment_dir.join(ENVIRONMENT_FILENAME) => format!("\
HOST_CONFIG_URI=https://server:8000/config\n\
METALOS_BOOTS_DIR=/run/fs/control/run/boot\n\
METALOS_CURRENT_BOOT_DIR=/run/fs/control/run/boot/0:{}\n\
METALOS_IMAGES_DIR=/run/fs/control/image\n\
ROOTDISK_DIR=/run/fs/control\n\
",
boot_id
).into(),
opts.network_unit_dir.join("50-eth.network.d/match.conf") => "\
[Match]\n\
Name=eth*\n\
MACAddress=11:22:33:44:55:66\n\
".into(),
opts.early_dir.join("default.target") => PathBuf::from("/usr/lib/systemd/system/initrd.target").into(),
},
)
.context("Failed to ensure tmpdir is setup correctly")?;
Ok(())
}