podman/test/system
Valentin Rothberg 10144b707e pass LISTEN_* environment into container
Make sure that Podman passes the LISTEN_* environment into containers.
Similar to runc, LISTEN_PID is set to 1.

Also remove conditionally passing the LISTEN_FDS as extra files.
The condition was wrong (inverted) and introduced to fix #3572 which
related to running under varlink which has been dropped entirely
with Podman 3.0.  Note that the NOTIFY_SOCKET and LISTEN_* variables
are cleared when running `system service`.

Fixes: #10443
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2021-08-31 17:23:05 +02:00
..
000-TEMPLATE
001-basic.bats support tag@digest notation 2021-05-31 14:38:43 +02:00
005-info.bats podman info show correct slirp4netns path 2021-08-09 12:59:28 +02:00
010-images.bats Scrub podman commands to use report package 2021-06-16 16:53:48 -07:00
015-help.bats
020-tag.bats migrate Podman to containers/common/libimage 2021-05-05 11:30:12 +02:00
030-run.bats Support DeviceCgroupRules to actually get added. 2021-07-21 16:10:09 -04:00
035-logs.bats Implemented --until flag for libpod's container logs 2021-07-22 10:56:56 -04:00
037-runlabel.bats Fix handling of $NAME and $IMAGE in runlabel 2021-04-12 08:41:08 -04:00
040-ps.bats Add --noheading flag to all list commands 2021-04-21 05:22:29 -04:00
045-start.bats Restart all containers with restart-policy=always on boot 2021-06-13 15:04:34 +03:00
050-stop.bats system tests: fix race in stop test 2021-07-29 11:57:51 -06:00
055-rm.bats
060-mount.bats migrate Podman to containers/common/libimage 2021-05-05 11:30:12 +02:00
065-cp.bats cp system tests: reduce number of exec's 2021-07-27 15:32:23 +02:00
070-build.bats Alias build to buildx, so it won't fail 2021-08-09 13:05:49 -04:00
075-exec.bats Perform a one-sided close of HTTP attach conn on EOF 2021-07-13 16:26:53 -04:00
080-pause.bats Fix podman unpause,pause,kill --all to work like podman stop --all 2021-08-04 12:50:00 -04:00
090-events.bats Ensure journald events tests only run where supported 2021-07-21 11:23:01 -04:00
110-history.bats
120-load.bats System tests: fix a multiarch problem 2021-07-15 11:29:58 -06:00
125-import.bats import: write stdin to tmp file 2021-07-23 10:21:37 +02:00
130-kill.bats 130-kill.bats: increase timeouts from 10s to 60s 2021-08-23 18:09:56 -04:00
140-diff.bats
150-login.bats Clear the storage-options from the graphdriver if users specifies --root 2021-05-19 15:35:59 -04:00
160-volumes.bats volumes: Add volume import to allow importing contents on tar into volume 2021-08-26 14:14:14 +05:30
170-run-userns.bats System tests: honor $OCI_RUNTIME (for CI) 2021-05-03 20:15:21 -06:00
200-pod.bats --infra-name command line argument 2021-07-15 21:27:51 -03:00
220-healthcheck.bats System tests: reenable a bunch of skipped tests 2021-03-20 08:21:46 -06:00
250-systemd.bats pass LISTEN_* environment into container 2021-08-31 17:23:05 +02:00
255-auto-update.bats auto-update: fix authfile label 2021-08-30 13:49:35 +02:00
260-sdnotify.bats Implement SD-NOTIFY proxy in conmon 2021-08-20 11:12:05 +02:00
270-socket-activation.bats system tests: cleaner, safer use of systemd 2021-07-20 08:57:26 -06:00
271-tcp-cors-server.bats Add tests to verify CORS is enabled 2021-07-25 05:48:16 +03:00
300-cli-parsing.bats
320-system-df.bats
330-corrupt-images.bats 330-corrupt-images: don't try to tag with a canonical name 2021-08-23 18:00:08 -04:00
400-unprivileged-access.bats
410-selinux.bats Fix handling of user specified container labels 2021-08-02 17:08:08 -04:00
420-cgroups.bats cgroup: do not set cgroup parent when rootless and cgroupfs 2021-04-12 16:55:55 +02:00
450-interactive.bats disable tty-size exec checks in system tests 2021-06-23 10:10:19 +02:00
500-networking.bats Fix rootless cni dns without systemd stub resolver 2021-08-16 11:30:11 +02:00
600-completion.bats
700-play.bats Run codespell to fix spelling 2021-08-11 16:41:45 -04:00
build-testimage System tests: the continuing multiarch saga 2021-06-10 13:33:20 -06:00
helpers.bash Networking test: fix silent breakage 2021-07-22 18:27:13 -06:00
helpers.systemd.bash system tests: cleaner, safer use of systemd 2021-07-20 08:57:26 -06:00
helpers.t
README.md
TODO.md

Quick overview of podman system tests. The idea is to use BATS, but with a framework for making it easy to add new tests and to debug failures.

Quick Start

Look at 030-run.bats for a simple but packed example. This introduces the basic set of helper functions:

  • setup (implicit) - resets container storage so there's one and only one (standard) image, and no running containers.

  • parse_table - you can define tables of inputs and expected results, then read those in a while loop. This makes it easy to add new tests. Because bash is not a programming language, the caller of parse_table sometimes needs to massage the returned values; 015-run.bats offers examples of how to deal with the more typical such issues.

  • run_podman - runs command defined in $PODMAN (default: 'podman' but could also be './bin/podman' or 'podman-remote'), with a timeout. Checks its exit status.

  • is - compare actual vs expected output. Emits a useful diagnostic on failure.

  • die - output a properly-formatted message to stderr, and fail test

  • skip_if_rootless - if rootless, skip this test with a helpful message.

  • skip_if_remote - like the above, but skip if testing podman-remote

  • random_string - returns a pseudorandom alphanumeric string

Test files are of the form NNN-name.bats where NNN is a three-digit number. Please preserve this convention, it simplifies viewing the directory and understanding test order. In particular, 00x tests should be reserved for a first-pass fail-fast subset of tests:

bats test/system/00*.bats || exit 1
bats test/system

...the goal being to provide quick feedback on catastrophic failures without having to wait for the entire test suite.

Running tests

To run the tests locally in your sandbox, you can use one of these methods:

  • make;PODMAN=./bin/podman bats ./test/system/070-build.bats # runs just the specified test
  • make;PODMAN=./bin/podman bats ./test/system # runs all

To test as root:

  • $ PODMAN=./bin/podman sudo --preserve-env=PODMAN bats test/system

Analyzing test failures

The top priority for this scheme is to make it easy to diagnose what went wrong. To that end, podman_run always logs all invoked commands, their output and exit codes. In a normal run you will never see this, but BATS will display it on failure. The goal here is to give you everything you need to diagnose without having to rerun tests.

The is comparison function is designed to emit useful diagnostics, in particular, the actual and expected strings. Please do not use the horrible BATS standard of [ x = y ]; that's nearly useless for tracking down failures.

If the above are not enough to help you track down a failure:

Debugging tests

Some functions have dprint statements. To see the output of these, set PODMAN_TEST_DEBUG="funcname" where funcname is the name of the function or perhaps just a substring.

Requirements

The jq tool is needed for parsing JSON output.

Further Details

TBD. For now, look in helpers.bash; each helper function has (what are intended to be) helpful header comments. For even more examples, see and/or run helpers.t; that's a regression test and provides a thorough set of examples of how the helpers work.