mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-02 10:12:33 +00:00
Merge pull request #143 from jodh-intel/allow-running-single-test
tests: Add ability to restrict which tests run
This commit is contained in:
commit
416b80cefc
@ -12,4 +12,4 @@ export GOPATH="${GOPATH:-/tmp/go}"
|
|||||||
|
|
||||||
script_dir="$(dirname $(readlink -f $0))"
|
script_dir="$(dirname $(readlink -f $0))"
|
||||||
|
|
||||||
sudo -E PATH="$PATH" bash "${script_dir}/../tests/image_creation.sh"
|
sudo -E PATH="$PATH" bash "${script_dir}/../tests/test_images.sh"
|
||||||
|
9
Makefile
9
Makefile
@ -32,3 +32,12 @@ initrd: rootfs initrd-only
|
|||||||
initrd-only:
|
initrd-only:
|
||||||
@echo Creating initrd image based on "$(DISTRO_ROOTFS)"
|
@echo Creating initrd image based on "$(DISTRO_ROOTFS)"
|
||||||
"$(MK_DIR)/initrd-builder/initrd_builder.sh" "$(DISTRO_ROOTFS)"
|
"$(MK_DIR)/initrd-builder/initrd_builder.sh" "$(DISTRO_ROOTFS)"
|
||||||
|
|
||||||
|
test:
|
||||||
|
"$(MK_DIR)/tests/test_images.sh" "$(DISTRO)"
|
||||||
|
|
||||||
|
test-image-only:
|
||||||
|
"$(MK_DIR)/tests/test_images.sh" --test-images-only "$(DISTRO)"
|
||||||
|
|
||||||
|
test-initrd-only:
|
||||||
|
"$(MK_DIR)/tests/test_images.sh" --test-initrds-only "$(DISTRO)"
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
* [Image with systemd as init](#image-with-systemd-as-init)
|
* [Image with systemd as init](#image-with-systemd-as-init)
|
||||||
* [Image with the agent as init](#image-with-the-agent-as-init)
|
* [Image with the agent as init](#image-with-the-agent-as-init)
|
||||||
* [Initrd creation](#initrd-creation)
|
* [Initrd creation](#initrd-creation)
|
||||||
|
* [Tests](#tests)
|
||||||
* [Platform-Distro Compatibility Matrix](#platform-distro-compatibility-matrix)
|
* [Platform-Distro Compatibility Matrix](#platform-distro-compatibility-matrix)
|
||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
@ -109,6 +110,14 @@ $ sudo -E PATH=$PATH make AGENT_INIT=yes initrd-only
|
|||||||
For further details,
|
For further details,
|
||||||
see [the initrd builder documentation](initrd-builder/README.md).
|
see [the initrd builder documentation](initrd-builder/README.md).
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make test
|
||||||
|
```
|
||||||
|
|
||||||
|
For further details, see [the tests documentation](tests/README.md).
|
||||||
|
|
||||||
## Platform-Distro Compatibility Matrix
|
## Platform-Distro Compatibility Matrix
|
||||||
|
|
||||||
| | Alpine | CentOS | ClearLinux | EulerOS | Fedora |
|
| | Alpine | CentOS | ClearLinux | EulerOS | Fedora |
|
||||||
|
26
tests/README.md
Normal file
26
tests/README.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
* [Run the osbuilder tests](#run-the-osbuilder-tests)
|
||||||
|
* [Further information](#further-information)
|
||||||
|
|
||||||
|
## Run the osbuilder tests
|
||||||
|
|
||||||
|
osbuilder provides a test script that creates all images and initrds for all
|
||||||
|
supported distributions and then tests them to ensure a Kata Container can
|
||||||
|
be created with each.
|
||||||
|
|
||||||
|
The test script installs all required Kata components on the host system
|
||||||
|
before creating the images.
|
||||||
|
|
||||||
|
To run all available osbuilder tests:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ./test_images.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Further information
|
||||||
|
|
||||||
|
The test script provides various options to modify the way it runs. For full
|
||||||
|
details:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ ./test_images.sh -h
|
||||||
|
```
|
@ -7,6 +7,7 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
readonly script_dir="$(dirname $(readlink -f $0))"
|
readonly script_dir="$(dirname $(readlink -f $0))"
|
||||||
|
readonly script_name=${0##*/}
|
||||||
|
|
||||||
readonly rootfs_sh="${script_dir}/../rootfs-builder/rootfs.sh"
|
readonly rootfs_sh="${script_dir}/../rootfs-builder/rootfs.sh"
|
||||||
readonly image_builder_sh="${script_dir}/../image-builder/image_builder.sh"
|
readonly image_builder_sh="${script_dir}/../image-builder/image_builder.sh"
|
||||||
@ -23,13 +24,48 @@ readonly mgr="${tests_repo_dir}/cmd/kata-manager/kata-manager.sh"
|
|||||||
readonly RUNTIME=${RUNTIME:-kata-runtime}
|
readonly RUNTIME=${RUNTIME:-kata-runtime}
|
||||||
readonly MACHINE_TYPE=`uname -m`
|
readonly MACHINE_TYPE=`uname -m`
|
||||||
|
|
||||||
|
# all distro tests must have this prefix
|
||||||
|
readonly test_func_prefix="test_distro_"
|
||||||
|
|
||||||
# "docker build" does not work with a VM-based runtime
|
# "docker build" does not work with a VM-based runtime
|
||||||
readonly docker_build_runtime="runc"
|
readonly docker_build_runtime="runc"
|
||||||
|
|
||||||
|
test_images_only="false"
|
||||||
|
test_initrds_only="false"
|
||||||
|
|
||||||
|
usage()
|
||||||
|
{
|
||||||
|
cat <<EOT
|
||||||
|
Usage: $script_name [help|<distro>]
|
||||||
|
$script_name [options]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
|
||||||
|
-h | --help # Show usage.
|
||||||
|
--distro <distro> # Only run tests for specified distro.
|
||||||
|
--list # List all distros that can be tested.
|
||||||
|
--test-images-only # Only run images tests for the list of distros under test.
|
||||||
|
--test-initrds-only # Only run initrds tests for the list of distros under test.
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
|
||||||
|
help : Show usage.
|
||||||
|
<distro> : Only run tests for specified distro.
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
- If no options or parameters are specified, all tests will be run.
|
||||||
|
|
||||||
|
EOT
|
||||||
|
}
|
||||||
|
|
||||||
exit_handler()
|
exit_handler()
|
||||||
{
|
{
|
||||||
if [ "$?" -eq 0 ]
|
if [ "$?" -eq 0 ]
|
||||||
then
|
then
|
||||||
|
info "tests passed successfully - cleaning up"
|
||||||
|
|
||||||
# Rootfs and images are owned by root
|
# Rootfs and images are owned by root
|
||||||
sudo -E rm -rf "${tmp_rootfs}"
|
sudo -E rm -rf "${tmp_rootfs}"
|
||||||
sudo -E rm -rf "${images_dir}"
|
sudo -E rm -rf "${images_dir}"
|
||||||
@ -39,8 +75,9 @@ exit_handler()
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# The test failed so dump what we can
|
info "ERROR: test failed"
|
||||||
|
|
||||||
|
# The test failed so dump what we can
|
||||||
info "AGENT_INIT: '${AGENT_INIT}'"
|
info "AGENT_INIT: '${AGENT_INIT}'"
|
||||||
|
|
||||||
info "images:"
|
info "images:"
|
||||||
@ -284,13 +321,23 @@ create_and_run()
|
|||||||
|
|
||||||
if [ "$image_options" != "no" ]
|
if [ "$image_options" != "no" ]
|
||||||
then
|
then
|
||||||
|
if [ "${test_initrds_only}" = "true" ]
|
||||||
|
then
|
||||||
|
info "only testing initrds: skipping image test for distro $distro"
|
||||||
|
else
|
||||||
handle_options "$distro" "image" "$image_options"
|
handle_options "$distro" "image" "$image_options"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$initrd_options" != "no" ]
|
if [ "$initrd_options" != "no" ]
|
||||||
then
|
then
|
||||||
|
if [ "${test_images_only}" = "true" ]
|
||||||
|
then
|
||||||
|
info "only testing images: skipping initrd test for distro $distro"
|
||||||
|
else
|
||||||
handle_options "$distro" "initrd" "$initrd_options"
|
handle_options "$distro" "initrd" "$initrd_options"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
run_test()
|
run_test()
|
||||||
@ -313,26 +360,26 @@ run_test()
|
|||||||
create_and_run "${distro}" "${image_options}" "${initrd_options}"
|
create_and_run "${distro}" "${image_options}" "${initrd_options}"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_fedora()
|
test_distro_fedora()
|
||||||
{
|
{
|
||||||
local -r name="Can create and run fedora image"
|
local -r name="Can create and run fedora image"
|
||||||
run_test "${name}" "" "fedora" "service" "no"
|
run_test "${name}" "" "fedora" "service" "no"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_clearlinux()
|
test_distro_clearlinux()
|
||||||
{
|
{
|
||||||
local -r name="Can create and run clearlinux image"
|
local -r name="Can create and run clearlinux image"
|
||||||
|
|
||||||
run_test "${name}" "" "clearlinux" "service" "no"
|
run_test "${name}" "" "clearlinux" "service" "no"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_centos()
|
test_distro_centos()
|
||||||
{
|
{
|
||||||
local -r name="Can create and run centos image"
|
local -r name="Can create and run centos image"
|
||||||
run_test "${name}" "" "centos" "service" "no"
|
run_test "${name}" "" "centos" "service" "no"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_euleros()
|
test_distro_euleros()
|
||||||
{
|
{
|
||||||
local -r name="Can create and run euleros image"
|
local -r name="Can create and run euleros image"
|
||||||
|
|
||||||
@ -341,25 +388,131 @@ test_euleros()
|
|||||||
run_test "${name}" "$skip" "euleros" "service" "no"
|
run_test "${name}" "$skip" "euleros" "service" "no"
|
||||||
}
|
}
|
||||||
|
|
||||||
test_alpine()
|
test_distro_alpine()
|
||||||
{
|
{
|
||||||
local -r name="Can create and run alpine image"
|
local -r name="Can create and run alpine image"
|
||||||
run_test "${name}" "" "alpine" "no" "init"
|
run_test "${name}" "" "alpine" "no" "init"
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
# Displays a list of all distro test functions
|
||||||
|
get_distro_test_names()
|
||||||
{
|
{
|
||||||
setup
|
typeset -F | awk '{print $3}' |\
|
||||||
test_fedora
|
grep "^${test_func_prefix}" | sort
|
||||||
test_centos
|
}
|
||||||
test_alpine
|
|
||||||
|
# Displays a list of distros which can be tested
|
||||||
|
list_distros()
|
||||||
|
{
|
||||||
|
get_distro_test_names | sed "s/${test_func_prefix}//g"
|
||||||
|
}
|
||||||
|
|
||||||
|
test_single_distro()
|
||||||
|
{
|
||||||
|
local -r distro="$1"
|
||||||
|
|
||||||
|
[ -z "$distro" ] && die "distro cannot be blank"
|
||||||
|
|
||||||
|
local -r expected_func="${test_func_prefix}${distro}"
|
||||||
|
|
||||||
|
local test_funcs
|
||||||
|
test_funcs=$(get_distro_test_names)
|
||||||
|
|
||||||
|
local defined_func
|
||||||
|
defined_func=$(echo "$test_funcs" | grep "^${expected_func}$" || true)
|
||||||
|
|
||||||
|
if [ -z "$defined_func" ]
|
||||||
|
then
|
||||||
|
local distros
|
||||||
|
|
||||||
|
# make a comma-separated list
|
||||||
|
distros=$(list_distros | tr '\n' ',' | sed 's/,$//g')
|
||||||
|
|
||||||
|
die "no test for distro '$distro' (try one of $distros)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
info "only running tests for distro $distro"
|
||||||
|
|
||||||
|
# run the test
|
||||||
|
$defined_func
|
||||||
|
}
|
||||||
|
|
||||||
|
test_all_distros()
|
||||||
|
{
|
||||||
|
info "running tests for all distros"
|
||||||
|
|
||||||
|
test_distro_fedora
|
||||||
|
test_distro_centos
|
||||||
|
test_distro_alpine
|
||||||
|
|
||||||
if [ $MACHINE_TYPE != "ppc64le" ]; then
|
if [ $MACHINE_TYPE != "ppc64le" ]; then
|
||||||
test_clearlinux
|
test_distro_clearlinux
|
||||||
|
|
||||||
# Run last as EulerOS servers can be slow and we don't want to fail the
|
# Run last as EulerOS servers can be slow and we don't want to fail the
|
||||||
# previous tests.
|
# previous tests.
|
||||||
test_euleros
|
test_distro_euleros
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
local args=$(getopt \
|
||||||
|
-n "$script_name" \
|
||||||
|
-a \
|
||||||
|
--options="h" \
|
||||||
|
--longoptions="help distro: list test-images-only test-initrds-only" \
|
||||||
|
-- "$@")
|
||||||
|
|
||||||
|
eval set -- "$args"
|
||||||
|
[ $? -ne 0 ] && { usage >&2; exit 1; }
|
||||||
|
|
||||||
|
local distro=
|
||||||
|
|
||||||
|
while [ $# -gt 1 ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
--distro) distro="$2";;
|
||||||
|
|
||||||
|
-h|--help) usage; exit 0 ;;
|
||||||
|
|
||||||
|
--list) list_distros; exit 0;;
|
||||||
|
|
||||||
|
--test-images-only)
|
||||||
|
test_images_only="true"
|
||||||
|
test_initrds_only="false"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--test-initrds-only)
|
||||||
|
test_initrds_only="true"
|
||||||
|
test_images_only="false"
|
||||||
|
;;
|
||||||
|
|
||||||
|
--) shift; break ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# Consume getopt cruft
|
||||||
|
[ "$1" = "--" ] && shift
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
help) usage && exit 0;;
|
||||||
|
*) distro="$1";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
setup
|
||||||
|
|
||||||
|
if [ -n "$distro" ]
|
||||||
|
then
|
||||||
|
test_single_distro "$distro"
|
||||||
|
else
|
||||||
|
test_all_distros
|
||||||
|
fi
|
||||||
|
|
||||||
|
# We shouldn't really need a message like this but the CI can fail in
|
||||||
|
# mysterious ways so make it clear!
|
||||||
|
info "all tests finished successfully"
|
||||||
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
Loading…
Reference in New Issue
Block a user