Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use REX for bats testing in Katello 4.10+ #1695

Merged
merged 1 commit into from
Aug 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,12 @@ load os_helper
load foreman_helper
load fixtures/content

setup() {
if tIsKatelloAgentRemoved; then
skip "katello-agent is no longer supported as of Katello 4.10"
fi
}

@test "enable katello-agent" {
foreman-installer --foreman-proxy-content-enable-katello-agent true
foreman-maintain packages unlock -y
Expand Down Expand Up @@ -75,13 +81,6 @@ load fixtures/content
done
}

@test "try fetching container content" {
tPackageExists podman || tPackageInstall podman
podman login "${HOSTNAME}" -u admin -p changeme
CONTAINER_PULL_LABEL=$(echo "${ORGANIZATION_LABEL}-${PRODUCT_LABEL}-${CONTAINER_REPOSITORY_LABEL}"| tr '[:upper:]' '[:lower:]')
podman pull "${HOSTNAME}/${CONTAINER_PULL_LABEL}"
}

@test "install katello-agent" {
tPackageInstall katello-agent && tPackageExists katello-agent
}
Expand Down
86 changes: 86 additions & 0 deletions bats/fb-katello-client-rex.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#!/usr/bin/env bats
# vim: ft=sh:sw=2:et

set -o pipefail

load os_helper
load foreman_helper
load fixtures/content

@test "enable remote execution" {
foreman-installer --enable-foreman-plugin-remote-execution --enable-foreman-proxy-plugin-remote-execution-script --foreman-proxy-plugin-remote-execution-script-install-key=true
foreman-maintain packages unlock -y
}

@test "disable puppet agent to prevent checkin from registering host to another org" {
systemctl is-active puppet || skip "Puppet is not active"
systemctl stop puppet
}

@test "delete host if present" {
hammer host delete --name="${HOSTNAME}" || echo "Could not delete host"
}

@test "register subscription manager with username and password" {
cleanSubscriptionManager

run yum erase -y 'katello-ca-consumer-*'
echo "rc=${status}"
echo "${output}"
tPackageInstall http://localhost/pub/katello-ca-consumer-latest.noarch.rpm
echo "rc=${status}"
echo "${output}"
subscription-manager register --force --org="${ORGANIZATION_LABEL}" --username=admin --password=changeme --env=Library
}

@test "register subscription manager with activation key" {
cleanSubscriptionManager

run subscription-manager register --force --org="${ORGANIZATION_LABEL}" --activationkey="${ACTIVATION_KEY}"
echo "rc=${status}"
echo "${output}"
tSubscribedProductOrSCA "${PRODUCT}"
}

@test "start puppet again" {
systemctl is-enabled puppet || skip "Puppet isn't enabled"
systemctl start puppet
}

@test "check content host is registered" {
hammer host info --name "${HOSTNAME}"
}

@test "enable content view repo" {
subscription-manager repos --enable="${ORGANIZATION_LABEL}_${PRODUCT_LABEL}_${YUM_REPOSITORY_LABEL}" | grep -q "is enabled for this system"
}

@test "install package remotely" {
run yum -y remove walrus-0.71
timeout 300 hammer job-invocation create --feature katello_package_install --inputs 'package=walrus-0.71' --search-query "name = ${HOSTNAME}"
tPackageExists walrus-0.71
}

@test "check available errata" {
local next_wait_time=0
until hammer host errata list --host "${HOSTNAME}" | grep 'RHEA-2012:0055'; do
if [ $next_wait_time -eq 14 ]; then
# make one last try, also makes the error nice
hammer host errata list --host "${HOSTNAME}" | grep 'RHEA-2012:0055'
fi
sleep $(( next_wait_time++ ))
done
}

@test "install errata remotely" {
timeout 300 hammer job-invocation create --feature katello_errata_install --inputs 'errata=RHEA-2012:0055' --search-query "name = ${HOSTNAME}"
tPackageExists walrus-5.21
}

@test "remove package remotely" {
timeout 300 hammer job-invocation create --feature katello_package_remove --inputs 'package=walrus' --search-query "name = ${HOSTNAME}"
}

@test "clean up subscription-manager after content tests" {
cleanSubscriptionManager
}
15 changes: 15 additions & 0 deletions bats/fb-katello-container.bats
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bats
# vim: ft=sh:sw=2:et

set -o pipefail

load os_helper
load foreman_helper
load fixtures/content

@test "try fetching container content" {
tPackageExists podman || tPackageInstall podman
podman login "${HOSTNAME}" -u admin -p changeme
CONTAINER_PULL_LABEL=$(echo "${ORGANIZATION_LABEL}-${PRODUCT_LABEL}-${CONTAINER_REPOSITORY_LABEL}"| tr '[:upper:]' '[:lower:]')
podman pull "${HOSTNAME}/${CONTAINER_PULL_LABEL}"
}
5 changes: 5 additions & 0 deletions bats/foreman_helper.bash
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ tIsVersionNewer() {
[[ $(printf "%s\n%s" "${GIVEN_VERSION}" "${WANTED_VERSION}" | sort --version-sort | tail -n 1) == "${GIVEN_VERSION}" ]]
}

tIsKatelloAgentRemoved() {
KATELLO_VERSION=$(tKatelloVersion)
tIsVersionNewer "${KATELLO_VERSION}" 4.10
}

tSkipIfOlderThan43() {
KATELLO_VERSION=$(tKatelloVersion)
if ! tIsVersionNewer "${KATELLO_VERSION}" 4.3; then
Expand Down
4 changes: 3 additions & 1 deletion roles/bats/defaults/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ bats_tests:
- "fb-verify-packages.bats"
- "fb-test-foreman.bats"
- "fb-katello-content.bats"
- "fb-katello-client.bats"
- "fb-katello-container.bats"
- "fb-katello-client-katello-agent.bats"
- "fb-katello-client-rex.bats"
- "fb-katello-client-global-registration.bats"
- "fb-test-puppet.bats"
- "fb-test-backup.bats"
Expand Down