mirror of
https://github.com/containers/podman.git
synced 2025-06-23 02:18:13 +08:00
Merge pull request #20506 from edsantiago/farm_tests
CI: podman farm tests cleanup
This commit is contained in:
@ -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
|
||||||
}
|
}
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
FROM alpine
|
|
||||||
RUN arch | tee /arch.txt
|
|
||||||
RUN date | tee /built.txt
|
|
@ -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(){
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user