diff --git a/.gitignore b/.gitignore index b30bf98..ff3d65e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ *! */*.tar.* *.log +archiso/out/ +archiso/work/ diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/README.rst b/archiso/README.rst similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/README.rst rename to archiso/README.rst diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/fstab b/archiso/airootfs/etc/fstab similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/fstab rename to archiso/airootfs/etc/fstab diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/hostname b/archiso/airootfs/etc/hostname similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/hostname rename to archiso/airootfs/etc/hostname diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/locale.conf b/archiso/airootfs/etc/locale.conf similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/locale.conf rename to archiso/airootfs/etc/locale.conf diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/machine-id b/archiso/airootfs/etc/machine-id similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/machine-id rename to archiso/airootfs/etc/machine-id diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/scripts/choose-mirror b/archiso/airootfs/etc/systemd/scripts/choose-mirror similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/scripts/choose-mirror rename to archiso/airootfs/etc/systemd/scripts/choose-mirror diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/choose-mirror.service b/archiso/airootfs/etc/systemd/system/choose-mirror.service similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/choose-mirror.service rename to archiso/airootfs/etc/systemd/system/choose-mirror.service diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount b/archiso/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount rename to archiso/airootfs/etc/systemd/system/etc-pacman.d-gnupg.mount diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf b/archiso/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf rename to archiso/airootfs/etc/systemd/system/getty@tty1.service.d/autologin.conf diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/pacman-init.service b/archiso/airootfs/etc/systemd/system/pacman-init.service similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/systemd/system/pacman-init.service rename to archiso/airootfs/etc/systemd/system/pacman-init.service diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/udev/rules.d/81-dhcpcd.rules b/archiso/airootfs/etc/udev/rules.d/81-dhcpcd.rules similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/etc/udev/rules.d/81-dhcpcd.rules rename to archiso/airootfs/etc/udev/rules.d/81-dhcpcd.rules diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/.automated_script.sh b/archiso/airootfs/root/.automated_script.sh similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/.automated_script.sh rename to archiso/airootfs/root/.automated_script.sh diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/.zlogin b/archiso/airootfs/root/.zlogin similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/.zlogin rename to archiso/airootfs/root/.zlogin diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/customize_airootfs.sh b/archiso/airootfs/root/customize_airootfs.sh similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/customize_airootfs.sh rename to archiso/airootfs/root/customize_airootfs.sh diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/install.txt b/archiso/airootfs/root/install.txt similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/airootfs/root/install.txt rename to archiso/airootfs/root/install.txt diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/build.sh b/archiso/build.sh similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/build.sh rename to archiso/build.sh diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/efiboot/loader/entries/archiso-x86_64.conf b/archiso/efiboot/loader/entries/archiso-x86_64.conf similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/efiboot/loader/entries/archiso-x86_64.conf rename to archiso/efiboot/loader/entries/archiso-x86_64.conf diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/efiboot/loader/loader.conf b/archiso/efiboot/loader/loader.conf similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/efiboot/loader/loader.conf rename to archiso/efiboot/loader/loader.conf diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/isolinux/isolinux.cfg b/archiso/isolinux/isolinux.cfg similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/isolinux/isolinux.cfg rename to archiso/isolinux/isolinux.cfg diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/mkinitcpio.conf b/archiso/mkinitcpio.conf similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/mkinitcpio.conf rename to archiso/mkinitcpio.conf diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/packages b/archiso/packages similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/packages rename to archiso/packages diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/pacman.conf b/archiso/pacman.conf similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/pacman.conf rename to archiso/pacman.conf diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/syslinux/splash.png b/archiso/syslinux/splash.png similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/syslinux/splash.png rename to archiso/syslinux/splash.png diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/syslinux/syslinux.cfg b/archiso/syslinux/syslinux.cfg similarity index 100% rename from testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso/syslinux/syslinux.cfg rename to archiso/syslinux/syslinux.cfg diff --git a/testing/.gitignore b/testing/.gitignore index 137cd54..e01ee20 100644 --- a/testing/.gitignore +++ b/testing/.gitignore @@ -1,4 +1,2 @@ *.qcow2 packer_work/ -out/ -work/ diff --git a/testing/test.sh b/testing/test.sh index 9e08212..fcb5db0 100755 --- a/testing/test.sh +++ b/testing/test.sh @@ -23,26 +23,50 @@ export packer_work_dir="${script_dir}/files/packer_work" export base_image_output_dir="${script_dir}/files" -init_archiso_vars() { - if [[ ! -d ${test_mode}/archiso ]]; then - export archiso_baseurl="http://mirrors.kernel.org/archlinux/iso/latest" - debug "archiso_baseurl=${archiso_baseurl}" - export archiso_iso_name=$(curl -s ${archiso_baseurl}/ | grep -o "\".*dual.iso\"" | tr -d '"') - export archiso_sha=$(curl -s ${archiso_baseurl}/sha1sums.txt | grep ${archiso_iso_name} | awk '{ print $1 }') - export archiso_url="${packer_work_dir}/${archiso_iso_name}" +# Build the archiso with linux-lts if needed +archiso_build() { + msg "Building the archiso if required" + local build_archiso=0 + # Check the linux-lts version last used in the archiso + run_cmd_no_output "cat ${script_dir}/../archiso/work/iso/arch/pkglist.x86_64.txt 2> /dev/null | grep linux-lts | grep -Po '(?<=core/linux-lts-).*$'" + if [[ ${run_cmd_return} -ne 0 ]]; then + build_archiso=1 + elif [[ ! -f "${packer_work_dir}/archlinux*.iso" ]]; then + msg2 "archzfs archiso does not exist!" + build_archiso=1 else - export archiso_iso_name=$(find files/packer_work/ -iname "archlinux*.iso" | xargs basename) - export archiso_sha=$(sha1sum ${packer_work_dir}/${archiso_iso_name} | awk '{ print $1 }') - export archiso_url="${packer_work_dir}/${archiso_iso_name}" + current_archiso_lts_vers="${run_cmd_output}" + debug "current_archiso_lts_vers: ${current_archiso_lts_vers}" + if ! check_webpage "https://www.archlinux.org/packages/core/x86_64/linux-lts/" "(?<=

linux-lts )[\d\.-]+(?=

)" "${current_archiso_lts_vers}"; then + debug "Setting build_archiso to 1" + build_archiso=1 + fi + fi + + if [[ ${build_archiso} -eq 0 ]]; then + msg2 "archiso is up-to-date!" + return fi + + # Delete the working directories since we are out-of-date + run_cmd_no_output "rm -rf ${script_dir}/archiso/{out,work} ${packer_work_dir}/*.iso" + + source_safe "${test_mode}/conf.sh" && source_safe "${test_mode}/archiso.sh" && test_build_archiso +} + + +archiso_init_vars() { + export archiso_iso_name=$(find ${packer_work_dir}/ -iname "archlinux*.iso" | xargs basename) + export archiso_sha=$(sha1sum ${packer_work_dir}/${archiso_iso_name} | awk '{ print $1 }') + export archiso_url="${packer_work_dir}/${archiso_iso_name}" debug "archiso_iso_name=${archiso_iso_name}" debug "archiso_sha=${archiso_sha}" debug "archiso_url=${archiso_url}" } -gen_base_image_name() { - export base_image_basename="$(basename ${test_mode})-archiso-${archiso_iso_name:10:-9}" +base_image_name() { + export base_image_basename="$(basename ${test_mode})-archiso-${archiso_iso_name:10:-4}" debug "base_image_basename=${base_image_basename}" run_cmd_output=$(find ${script_dir} -iname "*$(basename ${test_mode})-*" -printf "%P\\n" | sort -r | head -n 1) if [[ ${run_cmd_output} == "" ]]; then @@ -65,8 +89,8 @@ usage() { echo " -h: Show help information." echo " -n: Dryrun; Output commands, but don't do anything." echo " -d: Show debug info." - echo " -R: Re-use existing archzfs test packages." - echo + # echo " -R: Re-use existing archzfs test packages." + # echo # echo "Modes:" # echo # for ml in "${mode_list[@]}"; do @@ -93,9 +117,9 @@ debug_print_array "test_commands_list" "${test_commands_list[@]}" for (( a = 0; a < $#; a++ )); do - if [[ ${args[$a]} == "-R" ]]; then - commands+=("reuse") - elif [[ ${args[$a]} == "-n" ]]; then + # if [[ ${args[$a]} == "-R" ]]; then + # commands+=("reuse") + if [[ ${args[$a]} == "-n" ]]; then dry_run=1 elif [[ ${args[$a]} == "-d" ]]; then debug_flag=1 @@ -155,8 +179,6 @@ if [[ "${test_mode}" != "" ]]; then msg2 "Using packer to build the base image ..." - gen_base_image_name - # Base files run_cmd "check_symlink '${script_dir}/tests/archzfs-qemu-base/packer.json' '${packer_work_dir}/packer.json'" run_cmd "check_symlink '${script_dir}/tests/archzfs-qemu-base/base.sh' '${packer_work_dir}/base.sh'" @@ -179,10 +201,9 @@ if [[ "${test_mode}" != "" ]]; then # Make it easy to get the files into the archiso environment run_cmd "tar --exclude='*.iso' --exclude=packer_cache --exclude=b.tar -C ${packer_work_dir} -cvhf ${packer_work_dir}/b.tar ." - msg "Building the archiso if required" - source_safe "${test_mode}/conf.sh" && source_safe "${test_mode}/archiso.sh" && test_build_archiso - - init_archiso_vars + archiso_build + archiso_init_vars + base_image_name # Uncomment to enable packer debug export PACKER_LOG=1 diff --git a/testing/tests/archzfs-qemu-base/setup.sh b/testing/tests/archzfs-qemu-base/setup.sh index 427b6b9..4e51973 100644 --- a/testing/tests/archzfs-qemu-base/setup.sh +++ b/testing/tests/archzfs-qemu-base/setup.sh @@ -60,8 +60,15 @@ test_bootloader_install test_fs_config_root_postinstall -exit 0 +# Reboot! +test_setup_exit -# Reboot! -setup_exit +# TODO: Manage packer output here. We need to boot the built base image and run tests on it. + + +# Check acceptance criteria +if ! test_met_acceptance_criteria; then + error "Test failed!" + exit 1 +fi diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso.sh b/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso.sh index df39737..02bb4dd 100644 --- a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso.sh +++ b/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/archiso.sh @@ -5,12 +5,12 @@ # We need an archiso with the lts kernel used by default test_build_archiso() { msg "Building archiso" - cd ${test_root_dir}/archiso/ &> /dev/null - # if [[ -d ${packer_work_dir}/out ]] && [[ $(ls -1 | wc -l) -gt 0 ]]; then - # run_cmd "rm -rf ${test_root_dir}/archiso/out/archlinux*" - # fi - # run_cmd "./build.sh -v" + cd ${test_root_dir}/../../../archiso/ &> /dev/null + if [[ -d ${packer_work_dir}/out ]] && [[ $(ls -1 | wc -l) -gt 0 ]]; then + run_cmd "rm -rf ${test_root_dir}/archiso/out/archlinux*" + fi + run_cmd "./build.sh -v" msg2 "Coping archiso to packer_work_dir" - run_cmd "cp ${test_root_dir}/archiso/out/archlinux* ${packer_work_dir} && rm -rf ${test_root_dir}/archiso/work" + run_cmd "cp ${test_root_dir}/../../../archiso/out/archlinux* ${packer_work_dir} && rm -rf ${test_root_dir}/archiso/work" cd - &> /dev/null } diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/fs.sh b/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/fs.sh index 824cb40..1bafe92 100644 --- a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/fs.sh +++ b/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/fs.sh @@ -46,6 +46,7 @@ test_fs_config_root_preinstall() { run_cmd "zfs create -o compression=lz4 -o mountpoint=${test_target_dir}/ROOT zroot/ROOT/default" run_cmd "zfs create -o mountpoint=none zroot/data" run_cmd "zfs create -o compression=lz4 -o mountpoint=${test_target_dir}/ROOT/home zroot/data/home" + run_cmd "zfs set mountpoint=legacy zroot/data/home" msg2 "Mounting /home" run_cmd "mount -t zfs -o default,noatime zroot/data/home ${test_target_dir}/ROOT/home" diff --git a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/hooks.sh b/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/hooks.sh index 0807678..8a85176 100644 --- a/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/hooks.sh +++ b/testing/tests/archzfs-qemu-lts-test-01-root-bootfs/hooks.sh @@ -1,12 +1,12 @@ #!/bin/bash -setup_exit() { + +test_setup_exit() { msg "Installation complete!" - /usr/bin/sleep 10 - /usr/bin/umount /mnt/repo - /usr/bin/umount /mnt/var/cache/pacman/pkg - /usr/bin/umount ${arch_target_dir} - /usr/bin/umount /var/cache/pacman/pkg - /usr/bin/umount /repo - /usr/bin/systemctl reboot + systemctl reboot +} + + +test_met_acceptance_criteria() { + return 1 }