fn test_generator_metalos_reimage()

in metalos/metalctl/src/generator.rs [551:617]


    fn test_generator_metalos_reimage() -> Result<()> {
        let (log, tmpdir, opts, boot_id) =
            setup_generator_test("metalos_reimage").context("failed to setup test environment")?;

        let cmdline = MetalosCmdline::from_kernel_args(
            "\
            metalos.host-config-uri=\"https://server:8000/config\" \
            metalos.write_root_disk_package=\"reimage_pkg\" \
            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::MetalOSReimage);

        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.normal_dir.join("run-fs-control.mount.d/metalos_reimage_boot.conf") => "\
                    [Unit]\n\
                    After=metalos-image-root-disk.service\n\
                    Requires=metalos-image-root-disk.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_DISK_IMAGE_PKG=reimage_pkg\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(())
    }