Merge pull request #20506 from edsantiago/farm_tests

CI: podman farm tests cleanup
This commit is contained in:
openshift-ci[bot]
2023-11-01 13:19:51 +00:00
committed by GitHub
4 changed files with 76 additions and 28 deletions

View File

@ -5,15 +5,10 @@
load helpers.bash load helpers.bash
###############################################################################
# BEGIN tests
fname="test-farm"
containerfile="test/farm/Containerfile"
@test "farm - check farm has been created" { @test "farm - check farm has been created" {
run_podman farm ls run_podman farm ls
assert "$output" =~ $fname assert "$output" =~ $FARMNAME
assert "$output" =~ "test-node" assert "$output" =~ "test-node"
} }
@ -22,56 +17,79 @@ containerfile="test/farm/Containerfile"
empty_farm="empty-farm" empty_farm="empty-farm"
# create an empty farm # create an empty farm
run_podman farm create $empty_farm run_podman farm create $empty_farm
run_podman farm --farm $empty_farm build -f $containerfile -t $iname . run_podman farm --farm $empty_farm build -t $iname $PODMAN_TMPDIR
assert "$output" =~ "Local builder ready" assert "$output" =~ "Local builder ready"
# get the system architecture # get the system architecture
run_podman info --format '{{.Host.Arch}}' run_podman info --format '{{.Host.Arch}}'
ARCH=$output ARCH=$output
# inspect manifest list built and saved in local containers-storage # inspect manifest list built and saved in local containers-storage
# FIXME: use --format?
run_podman manifest inspect $iname run_podman manifest inspect $iname
assert "$output" =~ $ARCH assert "$output" =~ $ARCH
run_podman images -a
# FIXME-someday: why do we need the prune?
run_podman manifest rm $iname
run_podman image prune -f
} }
@test "farm - build on farm node only with --cleanup" { @test "farm - build on farm node only with --cleanup" {
iname="test-image-2" iname="test-image-2"
run_podman farm build -f $containerfile --cleanup --local=false -t $iname . run_podman farm build --cleanup --local=false -t $iname $PODMAN_TMPDIR
assert "$output" =~ "Farm \"$fname\" ready" assert "$output" =~ "Farm \"$FARMNAME\" ready"
# get the system architecture # get the system architecture
run_podman info --format '{{.Host.Arch}}' run_podman info --format '{{.Host.Arch}}'
ARCH=$output ARCH=$output
# inspect manifest list built and saved in dir # inspect manifest list built and saved in dir
manifest=$(cat $iname/manifest.json) # FIXME FIXME FIXME! #20505: do not write anything under cwd
assert "$manifest" =~ $ARCH ls -l $iname
# FIXME FIXME FIXME FIXME! NEVER WRITE INTO PWD!
manifestarch=$(jq -r '.manifests[].platform.architecture' <$iname/manifest.json)
assert "$manifestarch" = "$ARCH" "arch from $iname/manifest.json"
# see if we can ssh into node to check the image was cleaned up # see if we can ssh into node to check the image was cleaned up
nodeimg=$(ssh $ROOTLESS_USER@localhost podman images --filter dangling=true --noheading 2>&1) run ssh $ROOTLESS_USER@localhost podman images --filter dangling=true --noheading
assert "$nodeimg" = "" assert "$output" = "" "podman images on remote host"
# check that no image was built locally # check that no image was built locally
run_podman images --filter dangling=true --noheading run_podman images --filter dangling=true --noheading
assert "$output" = "" assert "$output" = "" "podman images on local host"
run_podman image prune -f
} }
@test "farm - build on farm node and local" { @test "farm - build on farm node and local" {
iname="test-image-3" iname="test-image-3"
run_podman farm build -f $containerfile -t $iname . run_podman farm build -t $iname $PODMAN_TMPDIR
assert "$output" =~ "Farm \"$fname\" ready" assert "$output" =~ "Farm \"$FARMNAME\" ready"
# get the system architecture # get the system architecture
run_podman info --format '{{.Host.Arch}}' run_podman info --format '{{.Host.Arch}}'
ARCH=$output ARCH=$output
# inspect manifest list built and saved in dir # inspect manifest list built and saved in dir
run_podman manifest inspect $iname run_podman manifest inspect $iname
assert "$output" =~ $ARCH assert "$output" =~ $ARCH
run_podman manifest rm $iname
run_podman image prune -f
} }
# Test out podman-remote # Test out podman-remote
@test "farm - build on farm node only (podman-remote)" { @test "farm - build on farm node only (podman-remote)" {
iname="test-image-4" iname="test-image-4"
run_podman --remote farm build -f $containerfile -t $iname . run_podman --remote farm build -t $iname $PODMAN_TMPDIR
assert "$output" =~ "Farm \"$fname\" ready" assert "$output" =~ "Farm \"$FARMNAME\" ready"
# get the system architecture # get the system architecture
run_podman --remote info --format '{{.Host.Arch}}' run_podman --remote info --format '{{.Host.Arch}}'
ARCH=$output ARCH=$output
# inspect manifest list built and saved in dir # inspect manifest list built and saved in dir
manifest=$(cat $iname/manifest.json) manifestarch=$(jq -r '.manifests[].platform.architecture' <$iname/manifest.json)
assert "$manifest" =~ $ARCH assert "$manifestarch" = "$ARCH" "arch from $iname/manifest.json"
run_podman image prune -f
} }

View File

@ -1,3 +0,0 @@
FROM alpine
RUN arch | tee /arch.txt
RUN date | tee /built.txt

View File

@ -4,6 +4,13 @@ load ../system/helpers.bash
function setup(){ function setup(){
basic_setup basic_setup
# Always create the same containerfile
cat >$PODMAN_TMPDIR/Containerfile <<EOF
FROM $IMAGE
RUN arch | tee /arch.txt
RUN date | tee /built.txt
EOF
} }
function teardown(){ function teardown(){

View File

@ -1,14 +1,40 @@
# -*- bash -*- # -*- bash -*-
load helpers.bash bats_require_minimum_version 1.8.0
load helpers
function setup_suite(){ function setup_suite(){
if [[ -z "$ROOTLESS_USER" ]]; then
if ! is_rootless; then
die "Cannot run as root with no \$ROOTLESS_USER defined"
fi
export ROOTLESS_USER=$(id -un)
fi
sshdir=/home/$ROOTLESS_USER/.ssh
sshkey=$sshdir/id_rsa
if [[ ! -e $sshkey ]]; then
ssh-keygen -t rsa -N "" -f $sshkey
cat ${sshkey}.pub >> $sshdir/authorized_keys
# Confirm that ssh localhost works. Since this is probably
# the first time that we ssh, bypass the host key verification.
ssh -T -o 'BatchMode yes' -o 'StrictHostKeyChecking no' localhost true
fi
# Sigh..... "system connection add" fails if podman is not in $PATH.
# There does not seem to be any way to tell it to use an explicit path.
type -P podman || die "No 'podman' in \$PATH"
export FARMNAME="test-farm-$(random_string 5)"
# only set up the podman farm before the first test # only set up the podman farm before the first test
run_podman system connection add --identity /home/$ROOTLESS_USER/.ssh/id_rsa test-node $ROOTLESS_USER@localhost run_podman system connection add --identity $sshkey test-node $ROOTLESS_USER@localhost
run_podman farm create test-farm test-node run_podman farm create $FARMNAME test-node
} }
function teardown(){ function teardown_suite(){
# clear out the farms after the last farm test # clear out the farms after the last farm test
run podman farm rm --all run_podman farm rm --all
} }