From 149a0bc0a7b596bee2fecb6c4e9e0f1b96044c64 Mon Sep 17 00:00:00 2001 From: Yi He Date: Tue, 2 Jul 2024 14:41:35 +0800 Subject: [PATCH] ci: move edge test to testing-farm --- .fmf/version | 1 + test/cases/ostree-simplified-installer.sh | 308 +++++++++++----------- test/cases/ostree-vsphere.sh | 2 +- test/data/ansible/check-minimal.yaml | 12 +- tmt/plans/edge-test.fmf | 107 ++++++++ tmt/tests/edge-test.fmf | 2 + tmt/tests/test.sh | 40 +++ 7 files changed, 315 insertions(+), 157 deletions(-) create mode 100644 .fmf/version create mode 100644 tmt/plans/edge-test.fmf create mode 100644 tmt/tests/edge-test.fmf create mode 100755 tmt/tests/test.sh diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 00000000000..d00491fd7e5 --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/test/cases/ostree-simplified-installer.sh b/test/cases/ostree-simplified-installer.sh index fab247875fb..a938621da9e 100755 --- a/test/cases/ostree-simplified-installer.sh +++ b/test/cases/ostree-simplified-installer.sh @@ -5,6 +5,12 @@ set -euo pipefail source /etc/os-release ARCH=$(uname -m) +# In case port 8081 is already in use +sudo dnf install -y lsof +if lsof -nP -iTCP -sTCP:LISTEN|grep 8081; then + sudo fuser -k 8081/tcp +fi + # Provision the software under test. /usr/libexec/osbuild-composer-test/provision.sh none @@ -478,7 +484,7 @@ build_image simplified_iso_without_fdo "${INSTALLER_TYPE}" "${PROD_REPO_URL}/" greenprint "๐Ÿ“ฅ Downloading the simplified_iso_without_fdo image" sudo composer-cli compose image "${COMPOSE_ID}" > /dev/null ISO_FILENAME="${COMPOSE_ID}-${INSTALLER_FILENAME}" -sudo cp "${ISO_FILENAME}" /var/lib/libvirt/images +sudo mv "${ISO_FILENAME}" /var/lib/libvirt/images # Clean compose and blueprints. greenprint "๐Ÿงน Clean up simplified_iso_without_fdo blueprint and compose" @@ -578,6 +584,7 @@ if [[ $(sudo virsh domstate "${IMAGE_KEY}-simplified_iso_without_fdo") == "runni fi sudo virsh undefine "${IMAGE_KEY}-simplified_iso_without_fdo" --nvram sudo virsh vol-delete --pool images "$LIBVIRT_IMAGE_PATH" +sudo rm -fr /var/lib/libvirt/images/${ISO_FILENAME} ######################################################################## ## @@ -829,7 +836,7 @@ build_image fdosshkey "${INSTALLER_TYPE}" "${PROD_REPO_URL}" greenprint "๐Ÿ“ฅ Downloading the fdosshkey image" sudo composer-cli compose image "${COMPOSE_ID}" > /dev/null ISO_FILENAME="${COMPOSE_ID}-${INSTALLER_FILENAME}" -sudo cp "${ISO_FILENAME}" /var/lib/libvirt/images +sudo mv "${ISO_FILENAME}" /var/lib/libvirt/images # Clean compose and blueprints. greenprint "๐Ÿงน Clean up fdosshkey blueprint and compose" @@ -946,145 +953,145 @@ sudo ansible-playbook -v -i "${TEMPDIR}"/inventory \ /usr/share/tests/osbuild-composer/ansible/check_ostree.yaml || RESULTS=0 check_result -################################################################## -## -## Build rebased ostree repo -## -################################################################## -tee "$BLUEPRINT_FILE" > /dev/null << EOF -name = "rebase" -description = "An rebase rhel-edge container image" -version = "0.0.2" -modules = [] -groups = [] - -[[packages]] -name = "python3" -version = "*" - -[[packages]] -name = "sssd" -version = "*" - -[[packages]] -name = "wget" -version = "*" - -[customizations.kernel] -name = "${KERNEL_RT_PKG}" - -[[customizations.user]] -name = "admin" -description = "Administrator account" -password = "${EDGE_USER_PASSWORD_SHA512}" -home = "/home/admin/" -groups = ["wheel"] -EOF - -greenprint "๐Ÿ“„ rebase blueprint" -cat "$BLUEPRINT_FILE" - -# Prepare the blueprint for the compose. -greenprint "๐Ÿ“‹ Preparing rebase blueprint" -sudo composer-cli blueprints push "$BLUEPRINT_FILE" -sudo composer-cli blueprints depsolve rebase - -# Build upgrade image. -OSTREE_REF="test/redhat/x/${ARCH}/edge" -build_image rebase "$CONTAINER_TYPE" "$PROD_REPO_URL" "$PARENT_REF" - -# Download the image -greenprint "๐Ÿ“ฅ Downloading the rebase image" -sudo composer-cli compose image "${COMPOSE_ID}" > /dev/null - -# Delete installation rhel-edge container and its image -greenprint "๐Ÿงน Delete installation rhel-edge container and its image" -# Remove rhel-edge container if exists -sudo podman ps -q --filter name=rhel-edge --format "{{.ID}}" | sudo xargs --no-run-if-empty podman rm -f -# Remove container image if exists -sudo podman images --filter "dangling=true" --format "{{.ID}}" | sudo xargs --no-run-if-empty podman rmi -f - -# Deal with stage repo container -greenprint "๐Ÿ—œ Extracting image" -IMAGE_FILENAME="${COMPOSE_ID}-${CONTAINER_FILENAME}" -sudo podman pull "oci-archive:${IMAGE_FILENAME}" -sudo podman images -# Clear image file -sudo rm -f "$IMAGE_FILENAME" - -# Run edge stage repo -greenprint "๐Ÿ›ฐ Running edge stage repo" -# Get image id to run image -EDGE_IMAGE_ID=$(sudo podman images --filter "dangling=true" --format "{{.ID}}") -sudo podman run -d --name rhel-edge --network edge --ip "$STAGE_REPO_ADDRESS" "$EDGE_IMAGE_ID" -# Wait for container to be running -until [ "$(sudo podman inspect -f '{{.State.Running}}' rhel-edge)" == "true" ]; do - sleep 1; -done; - -# Pull rebase commit to prod mirror -greenprint "โ›“ Pull rebase commit to prod mirror" -sudo ostree --repo="$PROD_REPO" pull --mirror edge-stage "$OSTREE_REF" - -# Get ostree commit value. -greenprint "๐Ÿ•น Get ostree rebase commit value" -REBASE_HASH=$(curl "${PROD_REPO_URL}/refs/heads/${OSTREE_REF}") - -# Clean compose and blueprints. -greenprint "๐Ÿงฝ Clean up rebase blueprint and compose" -sudo composer-cli compose delete "${COMPOSE_ID}" > /dev/null -sudo composer-cli blueprints delete rebase > /dev/null - -greenprint "๐Ÿ—ณ Rebase ostree image/commit" -sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@${EDGE_GUEST_ADDRESS} "echo '${EDGE_USER_PASSWORD}' |sudo -S rpm-ostree rebase ${REF_PREFIX}:${OSTREE_REF}" -sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@${EDGE_GUEST_ADDRESS} "echo '${EDGE_USER_PASSWORD}' |nohup sudo -S systemctl reboot &>/dev/null & exit" - -# Sleep 10 seconds here to make sure vm restarted already -sleep 10 - -# Check for ssh ready to go. -greenprint "๐Ÿ›ƒ Checking for SSH is ready to go" -# shellcheck disable=SC2034 # Unused variables left for readability -for _ in $(seq 0 30); do - RESULTS="$(wait_for_ssh_up $EDGE_GUEST_ADDRESS)" - if [[ $RESULTS == 1 ]]; then - echo "SSH is ready now! ๐Ÿฅณ" - break - fi - sleep 10 -done - -# Check ostree rebase result -check_result - -# Add instance IP address into /etc/ansible/hosts -sudo tee "${TEMPDIR}"/inventory > /dev/null << EOF -[ostree_guest] -${EDGE_GUEST_ADDRESS} - -[ostree_guest:vars] -ansible_python_interpreter=/usr/bin/python3 -ansible_user=${ANSIBLE_USER} -ansible_private_key_file=${SSH_KEY} -ansible_ssh_common_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" -ansible_become=yes -ansible_become_method=sudo -ansible_become_pass=${EDGE_USER_PASSWORD} -EOF - -# Test IoT/Edge OS -sudo ansible-playbook -v -i "${TEMPDIR}"/inventory \ - -e image_type=rhel-edge \ - -e ostree_commit="${REBASE_HASH}" \ - -e skip_rollback_test="true" \ - -e edge_type=edge-simplified-installer \ - -e fdo_credential="true" \ - -e sysroot_ro="$SYSROOT_RO" \ - -e mfg_guest_int_name="${MFG_GUEST_INT_NAME}" \ - -e fips="${FIPS}" \ - /usr/share/tests/osbuild-composer/ansible/check_ostree.yaml || RESULTS=0 - -check_result +# ################################################################## +# ## +# ## Build rebased ostree repo +# ## +# ################################################################## +# tee "$BLUEPRINT_FILE" > /dev/null << EOF +# name = "rebase" +# description = "An rebase rhel-edge container image" +# version = "0.0.2" +# modules = [] +# groups = [] + +# [[packages]] +# name = "python3" +# version = "*" + +# [[packages]] +# name = "sssd" +# version = "*" + +# [[packages]] +# name = "wget" +# version = "*" + +# [customizations.kernel] +# name = "${KERNEL_RT_PKG}" + +# [[customizations.user]] +# name = "admin" +# description = "Administrator account" +# password = "${EDGE_USER_PASSWORD_SHA512}" +# home = "/home/admin/" +# groups = ["wheel"] +# EOF + +# greenprint "๐Ÿ“„ rebase blueprint" +# cat "$BLUEPRINT_FILE" + +# # Prepare the blueprint for the compose. +# greenprint "๐Ÿ“‹ Preparing rebase blueprint" +# sudo composer-cli blueprints push "$BLUEPRINT_FILE" +# sudo composer-cli blueprints depsolve rebase + +# # Build upgrade image. +# OSTREE_REF="test/redhat/x/${ARCH}/edge" +# build_image rebase "$CONTAINER_TYPE" "$PROD_REPO_URL" "$PARENT_REF" + +# # Download the image +# greenprint "๐Ÿ“ฅ Downloading the rebase image" +# sudo composer-cli compose image "${COMPOSE_ID}" > /dev/null + +# # Delete installation rhel-edge container and its image +# greenprint "๐Ÿงน Delete installation rhel-edge container and its image" +# # Remove rhel-edge container if exists +# sudo podman ps -q --filter name=rhel-edge --format "{{.ID}}" | sudo xargs --no-run-if-empty podman rm -f +# # Remove container image if exists +# sudo podman images --filter "dangling=true" --format "{{.ID}}" | sudo xargs --no-run-if-empty podman rmi -f + +# # Deal with stage repo container +# greenprint "๐Ÿ—œ Extracting image" +# IMAGE_FILENAME="${COMPOSE_ID}-${CONTAINER_FILENAME}" +# sudo podman pull "oci-archive:${IMAGE_FILENAME}" +# sudo podman images +# # Clear image file +# sudo rm -f "$IMAGE_FILENAME" + +# # Run edge stage repo +# greenprint "๐Ÿ›ฐ Running edge stage repo" +# # Get image id to run image +# EDGE_IMAGE_ID=$(sudo podman images --filter "dangling=true" --format "{{.ID}}") +# sudo podman run -d --name rhel-edge --network edge --ip "$STAGE_REPO_ADDRESS" "$EDGE_IMAGE_ID" +# # Wait for container to be running +# until [ "$(sudo podman inspect -f '{{.State.Running}}' rhel-edge)" == "true" ]; do +# sleep 1; +# done; + +# # Pull rebase commit to prod mirror +# greenprint "โ›“ Pull rebase commit to prod mirror" +# sudo ostree --repo="$PROD_REPO" pull --mirror edge-stage "$OSTREE_REF" + +# # Get ostree commit value. +# greenprint "๐Ÿ•น Get ostree rebase commit value" +# REBASE_HASH=$(curl "${PROD_REPO_URL}/refs/heads/${OSTREE_REF}") + +# # Clean compose and blueprints. +# greenprint "๐Ÿงฝ Clean up rebase blueprint and compose" +# sudo composer-cli compose delete "${COMPOSE_ID}" > /dev/null +# sudo composer-cli blueprints delete rebase > /dev/null + +# greenprint "๐Ÿ—ณ Rebase ostree image/commit" +# sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@${EDGE_GUEST_ADDRESS} "echo '${EDGE_USER_PASSWORD}' |sudo -S rpm-ostree rebase ${REF_PREFIX}:${OSTREE_REF}" +# sudo ssh "${SSH_OPTIONS[@]}" -i "${SSH_KEY}" admin@${EDGE_GUEST_ADDRESS} "echo '${EDGE_USER_PASSWORD}' |nohup sudo -S systemctl reboot &>/dev/null & exit" + +# # Sleep 10 seconds here to make sure vm restarted already +# sleep 10 + +# # Check for ssh ready to go. +# greenprint "๐Ÿ›ƒ Checking for SSH is ready to go" +# # shellcheck disable=SC2034 # Unused variables left for readability +# for _ in $(seq 0 30); do +# RESULTS="$(wait_for_ssh_up $EDGE_GUEST_ADDRESS)" +# if [[ $RESULTS == 1 ]]; then +# echo "SSH is ready now! ๐Ÿฅณ" +# break +# fi +# sleep 10 +# done + +# # Check ostree rebase result +# check_result + +# # Add instance IP address into /etc/ansible/hosts +# sudo tee "${TEMPDIR}"/inventory > /dev/null << EOF +# [ostree_guest] +# ${EDGE_GUEST_ADDRESS} + +# [ostree_guest:vars] +# ansible_python_interpreter=/usr/bin/python3 +# ansible_user=${ANSIBLE_USER} +# ansible_private_key_file=${SSH_KEY} +# ansible_ssh_common_args="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" +# ansible_become=yes +# ansible_become_method=sudo +# ansible_become_pass=${EDGE_USER_PASSWORD} +# EOF + +# # Test IoT/Edge OS +# sudo ansible-playbook -v -i "${TEMPDIR}"/inventory \ +# -e image_type=rhel-edge \ +# -e ostree_commit="${REBASE_HASH}" \ +# -e skip_rollback_test="true" \ +# -e edge_type=edge-simplified-installer \ +# -e fdo_credential="true" \ +# -e sysroot_ro="$SYSROOT_RO" \ +# -e mfg_guest_int_name="${MFG_GUEST_INT_NAME}" \ +# -e fips="${FIPS}" \ +# /usr/share/tests/osbuild-composer/ansible/check_ostree.yaml || RESULTS=0 + +# check_result # Clean up VM greenprint "๐Ÿงน Clean up VM" @@ -1093,15 +1100,16 @@ if [[ $(sudo virsh domstate "${IMAGE_KEY}-fdosshkey") == "running" ]]; then fi sudo virsh undefine "${IMAGE_KEY}-fdosshkey" --nvram sudo virsh vol-delete --pool images "$LIBVIRT_IMAGE_PATH" +sudo rm -fr /var/lib/libvirt/images/${ISO_FILENAME} -# Re configure OSTREE_REF because it's change to "test/redhat/x/${ARCH}/edge" by above rebase test -if [[ "$ID" == fedora ]]; then - OSTREE_REF="${ID}/${VERSION_ID}/${ARCH}/iot" -elif [[ "$VERSION_ID" == 8* ]]; then - OSTREE_REF="${ID}/8/${ARCH}/edge" -else - OSTREE_REF="${ID}/9/${ARCH}/edge" -fi +# # Re configure OSTREE_REF because it's change to "test/redhat/x/${ARCH}/edge" by above rebase test +# if [[ "$ID" == fedora ]]; then +# OSTREE_REF="${ID}/${VERSION_ID}/${ARCH}/iot" +# elif [[ "$VERSION_ID" == 8* ]]; then +# OSTREE_REF="${ID}/8/${ARCH}/edge" +# else +# OSTREE_REF="${ID}/9/${ARCH}/edge" +# fi ################################################################## ## @@ -1162,7 +1170,7 @@ build_image fdorootcert "${INSTALLER_TYPE}" "${PROD_REPO_URL}/" greenprint "๐Ÿ“ฅ Downloading the fdorootcert image" sudo composer-cli compose image "${COMPOSE_ID}" > /dev/null ISO_FILENAME="${COMPOSE_ID}-${INSTALLER_FILENAME}" -sudo cp "${ISO_FILENAME}" /var/lib/libvirt/images +sudo mv "${ISO_FILENAME}" /var/lib/libvirt/images # Clean compose and blueprints. greenprint "๐Ÿงน Clean up fdorootcert blueprint and compose" diff --git a/test/cases/ostree-vsphere.sh b/test/cases/ostree-vsphere.sh index 7d18330bdc0..959ea17da0e 100755 --- a/test/cases/ostree-vsphere.sh +++ b/test/cases/ostree-vsphere.sh @@ -112,7 +112,7 @@ EDGE_USER_PASSWORD_SHA512=$(openssl passwd -6 -stdin <<< "${EDGE_USER_PASSWORD}" DATACENTER_70="Datacenter7.0" DATASTORE_70="datastore-80" -DATACENTER_70_POOL="/Datacenter7.0/host/Automation/Resources" +DATACENTER_70_POOL="/Datacenter7.0/host/Edge/Resources" # Workdaround for creating rhel9 and centos9 on dc67, change guest_id to 8 case "${ID}-${VERSION_ID}" in "rhel-9"* ) diff --git a/test/data/ansible/check-minimal.yaml b/test/data/ansible/check-minimal.yaml index f6eeb0ab430..2f488ae95cf 100644 --- a/test/data/ansible/check-minimal.yaml +++ b/test/data/ansible/check-minimal.yaml @@ -58,25 +58,25 @@ set_fact: failed_counter: "{{ failed_counter | int + 1 }}" - - name: add RHEL 9.4 BaseOS repository + - name: add RHEL 9.5 BaseOS repository yum_repository: name: baseos description: RHEL repository - baseurl: "http://{{ download_node }}/rhel-9/nightly/RHEL-9/latest-RHEL-9.4.0/compose/BaseOS/{{ ansible_facts['architecture'] }}/os/" + baseurl: "http://{{ download_node }}/rhel-9/nightly/RHEL-9/latest-RHEL-9.5.0/compose/BaseOS/{{ ansible_facts['architecture'] }}/os/" gpgcheck: no file: rhel_repo become: yes - when: ansible_facts['distribution'] == 'RedHat' and ansible_facts ['distribution_version'] is version('9.4', '==') + when: ansible_facts['distribution'] == 'RedHat' and ansible_facts ['distribution_version'] is version('9.5', '==') - - name: add RHEL 9.4 AppStream repository + - name: add RHEL 9.5 AppStream repository yum_repository: name: appstream description: RHEL repository - baseurl: "http://{{ download_node }}/rhel-9/nightly/RHEL-9/latest-RHEL-9.4.0/compose/AppStream/{{ ansible_facts['architecture'] }}/os/" + baseurl: "http://{{ download_node }}/rhel-9/nightly/RHEL-9/latest-RHEL-9.5.0/compose/AppStream/{{ ansible_facts['architecture'] }}/os/" gpgcheck: no file: rhel_repo become: yes - when: ansible_facts['distribution'] == 'RedHat' and ansible_facts ['distribution_version'] is version('9.4', '==') + when: ansible_facts['distribution'] == 'RedHat' and ansible_facts ['distribution_version'] is version('9.5', '==') - name: add RHEL 8.10 BaseOS repository yum_repository: diff --git a/tmt/plans/edge-test.fmf b/tmt/plans/edge-test.fmf new file mode 100644 index 00000000000..6461a1a367b --- /dev/null +++ b/tmt/plans/edge-test.fmf @@ -0,0 +1,107 @@ +summary: Edge test plan +discover: + how: fmf + test: edge-test +execute: + how: tmt +provision: + hardware: + virtualization: + is-supported: true + cpu: + processors: ">= 2" + memory: ">= 6 GB" + +/edge-x86-commit: + summary: Test edge commit + environment+: + TEST_CASE: edge-commit + +/edge-x86-installer: + summary: Test edge installer image + environment+: + TEST_CASE: edge-installer + +/edge-x86-installer-fips: + summary: Test edge installer image with fips enabled + environment+: + TEST_CASE: edge-installer-fips + adjust+: + - when: distro == cs-9 + enabled: false + - when: distro == fedora + enabled: false + +/edge-x86-raw-image: + summary: Test edge raw image + environment+: + TEST_CASE: edge-raw-image + +/edge-x86-simplified-installer: + summary: Test edge simplified installer image + environment+: + TEST_CASE: edge-simplified-installer + adjust+: + - when: distro == fedora + enabled: false + +/edge-x86-ignition: + summary: Test edge ignition feature + environment+: + TEST_CASE: edge-ignition + adjust+: + - when: distro == fedora + enabled: false + +/edge-x86-pulp: + summary: Test edge pulp feature + environment+: + TEST_CASE: edge-pulp + adjust+: + - when: distro == cs-9 + enabled: false + - when: distro == fedora + enabled: false + +/edge-x86-ami-image: + summary: Test edge ami image + environment+: + TEST_CASE: edge-ami-image + adjust+: + - when: distro == fedora + enabled: false + +/edge-x86-ami-image-fips: + summary: Test edge ami image with fips enabled + environment+: + TEST_CASE: edge-ami-image-fips + adjust+: + - when: distro == cs-9 + enabled: false + - when: distro == fedora + enabled: false + +/edge-x86-minimal: + summary: Test edge minimal raw image + environment+: + TEST_CASE: edge-minimal + +/edge-x86-vsphere: + summary: Test edge vsphere image + environment+: + TEST_CASE: edge-vsphere + adjust+: + - when: distro == cs-9 + enabled: false + - when: distro == fedora + enabled: false + +/edge-x86-qcow2: + summary: Test edge qcow2 image + environment+: + TEST_CASE: edge-qcow2 + adjust+: + - when: distro == cs-9 + enabled: false + - when: distro == rhel-9-5 + enabled: false diff --git a/tmt/tests/edge-test.fmf b/tmt/tests/edge-test.fmf new file mode 100644 index 00000000000..48ef4ca7159 --- /dev/null +++ b/tmt/tests/edge-test.fmf @@ -0,0 +1,2 @@ +test: ./test.sh +duration: 150m diff --git a/tmt/tests/test.sh b/tmt/tests/test.sh new file mode 100755 index 00000000000..c9839221de1 --- /dev/null +++ b/tmt/tests/test.sh @@ -0,0 +1,40 @@ +#!/bin/bash +set -euox pipefail + +cd ../../ || exit 1 + +schutzbot/deploy.sh + +function run_tests() { + if [ "$TEST_CASE" = "edge-commit" ]; then + /usr/libexec/tests/osbuild-composer/ostree.sh + elif [ "$TEST_CASE" = "edge-installer" ]; then + /usr/libexec/tests/osbuild-composer/ostree-ng.sh + elif [ "$TEST_CASE" = "edge-installer-fips" ]; then + FIPS=true /usr/libexec/tests/osbuild-composer/ostree-ng.sh + elif [ "$TEST_CASE" = "edge-raw-image" ]; then + /usr/libexec/tests/osbuild-composer/ostree-raw-image.sh + elif [ "$TEST_CASE" = "edge-simplified-installer" ]; then + /usr/libexec/tests/osbuild-composer/ostree-simplified-installer.sh + elif [ "$TEST_CASE" = "edge-ignition" ]; then + /usr/libexec/tests/osbuild-composer/ostree-ignition.sh + elif [ "$TEST_CASE" = "edge-pulp" ]; then + /usr/libexec/tests/osbuild-composer/ostree-pulp.sh + elif [ "$TEST_CASE" = "edge-minimal" ]; then + /usr/libexec/tests/osbuild-composer/minimal-raw.sh + elif [ "$TEST_CASE" = "edge-ami-image" ]; then + /usr/libexec/tests/osbuild-composer/ostree-ami-image.sh + elif [ "$TEST_CASE" = "edge-ami-image-fips" ]; then + FIPS=true /usr/libexec/tests/osbuild-composer/ostree-ami-image.sh + elif [ "$TEST_CASE" = "edge-vsphere" ]; then + /usr/libexec/tests/osbuild-composer/ostree-vsphere.sh + elif [ "$TEST_CASE" = "edge-qcow2" ]; then + /usr/libexec/tests/osbuild-composer/ostree-iot-qcow2.sh + else + echo "Error: Test case $TEST_CASE not found!" + exit 1 + fi +} + +run_tests +exit 0 \ No newline at end of file