Commit graph

3637 commits

Author SHA1 Message Date
Giuseppe Scrivano
5dc1738c05
test: look at the file base name
make the test more robust when an absolute path is used.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-05-29 22:21:21 +02:00
Giuseppe Scrivano
6243f5cebe
tests: simplify expected output
the condition doesn't work when the runtime to use is specified
through its absolute path as the error message contains that.

Simplify the check and just look for "read from the init process".

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-05-29 22:00:03 +02:00
Ed Santiago
1ae05473c1 Debian: switch to crun
As agreed in Planning meeting of 2024-03-20, Podman 5.x will
drop support for cgroups v1 and for runc. Make it so.

CI images built in https://github.com/containers/automation_images/pull/338

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-28 16:34:39 -06:00
jkwiatko
b45364254f working name of pod on start and stop
Signed-off-by: jkwiatko <jkwiatkoski@protonmail.com>
2024-05-25 19:40:21 -04:00
openshift-merge-bot[bot]
e53b96cb25
Merge pull request #22683 from grisu48/podmansh_sh
Add configuration for podmansh
2024-05-23 12:45:05 +00:00
openshift-merge-bot[bot]
eee0dc256a
Merge pull request #22727 from mheon/chown_all_the_time
Always chown volumes when mounting into a container
2024-05-23 12:34:07 +00:00
Paul Holzinger
db3abd0d28
test/e2e: fix new error message
The new c/image version is returning a slightly new error message[1] so
make tests use the new one.

[1] https://github.com/containers/image/pull/2408

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-05-23 13:29:39 +02:00
Matthew Heon
046c0e5fc2 Only stop chowning volumes once they're not empty
When an empty volume is mounted into a container, Docker will
chown that volume appropriately for use in the container. Podman
does this as well, but there are differences in the details. In
Podman, a chown is presently a one-and-done deal; in Docker, it
will continue so long as the volume remains empty. Mount into a
dozen containers, but never add content, the chown occurs every
time. The chown is also linked to copy-up; it will always occur
when a copy-up occurred, despite the volume now not being empty.
This PR changes our logic to (mostly) match Docker's.

For some reason, the chowning also stops if the volume is chowned
to root at any point. This feels like a Docker bug, but as they
say, bug for bug compatible.

In retrospect, using bools for NeedsChown and NeedsCopyUp was a
mistake. Docker isn't actually tracking this stuff; they're just
doing a copy-up and permissions change unconditionally as long as
the volume is empty. They also have the two linked as one
operation, seemingly, despite happening at very different times
during container init. Replicating that in our stateful system is
nontrivial, hence the need for the new CopiedUp field. Basically,
we never want to chown a volume with contents in it, except if
that data is a result of a copy-up that resulted from mounting
into the current container. Tracking who did the copy-up is the
easiest way to do this.

Fixes #22571

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2024-05-22 17:47:01 -04:00
jbtrystram
ad1d3f8fc7
quadlet: Add a network requirement on .image units
If a container unit starts on boot with a dependency on `default.target`
the image unit may start too soon, before network is ready. This cause
the unit to fail to pull the image.
- Add a dependency on `network-online.target` to make sure image pulls
don't fail.
See https://github.com/containers/podman/issues/21873

- Document the hardcoded dependency on `network-online.target` for images unit
and explain how it can be overriden if necessary.

- tests/e2e/quadlet: Add `assert-last-key-regex`

Required to test the `After=` override in [Unit] section
See https://github.com/containers/podman/pull/22057#issuecomment-2008959993

- quadlet/unitfile: add a prepenUnitLine method

Requirements on networks should be inserted at the top of the
section so the user can override them.

Signed-off-by: jbtrystram <jbtrystram@redhat.com>
2024-05-22 13:46:42 +02:00
Daniel J Walsh
6408a05927
Return StatusNotFound when multiple volumes matching occurs
Fixes #22616

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2024-05-15 06:21:14 -04:00
Ed Santiago
d4e40fedaf ExitWithError() - enforce required exit status & stderr
Final followup to #22270. That PR added a temporary convention
allowing a new form of ExitWithError(), one with an exit code
and stderr substring. In order to allow bite-size progress,
the old no-args form was still allowed. This PR removes
support for no-args ExitWithError().

This PR also adds one piece of new functionality: passing ""
(empty string) as the stderr arg means "expect exit code
but fail if there's anything at all in stderr".

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-13 13:59:17 -06:00
Ed Santiago
82f9811a8d ExitWithError() - a few that I missed
Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-13 13:59:17 -06:00
openshift-merge-bot[bot]
c9808e7edf
Merge pull request #22533 from Luap99/e2e-tmp-ci
run e2e test on tmpfs
2024-05-13 18:21:28 +00:00
openshift-merge-bot[bot]
abfd0228d9
Merge pull request #22398 from andremarianiello/graceful-kube-down
Graceful shutdown during podman kube down
2024-05-13 16:45:14 +00:00
openshift-merge-bot[bot]
dfab103bd3
Merge pull request #22660 from edsantiago/exitwitherror-rmi
ExitWithError() - rmi_test
2024-05-13 15:52:59 +00:00
openshift-merge-bot[bot]
3049bc4533
Merge pull request #22661 from edsantiago/exitwitherror-r
ExitWithError() - more r files
2024-05-13 15:35:43 +00:00
openshift-merge-bot[bot]
7fa103f277
Merge pull request #22582 from edsantiago/exitwitherror-part6
ExitWithError() - s files
2024-05-13 15:32:49 +00:00
Paul Holzinger
e771618531
run e2e test on tmpfs
Follow up to commit eaf60c7fe7, with the toolbox image removal it is
possible to run all tests from tmpfs.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-05-13 17:26:16 +02:00
Ed Santiago
755fc021f9 ExitWithError() - rmi_test
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles only one file, test/e2e/rmi_test.go , because
my changes are significant enough to merit individual review.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-13 07:24:36 -06:00
Ed Santiago
5e240ab1f5 ExitWithError() - more r files
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles all remaining test/e2e/r*_test.go

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-13 07:24:28 -06:00
Ed Santiago
0c22de7811 ExitWithError() - s files
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles test/e2e/s*_test.go

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-13 07:24:06 -06:00
Ed Santiago
03f036b515 ExitWithError() - more run_xxx tests
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles a subset of test/e2e/run_xxx_test.go

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-13 07:23:58 -06:00
openshift-merge-bot[bot]
4a11f1eeb4
Merge pull request #22648 from edsantiago/exitwitherror-p
ExitWithError() - rest of the p files
2024-05-09 12:04:37 +00:00
openshift-merge-bot[bot]
63ab9275b7
Merge pull request #22601 from xkr47/feat/quadlet-group-add
Quadlet/Container: Add GroupAdd option
2024-05-09 08:49:19 +00:00
Ed Santiago
9e43e586c9 ExitWithError() - rest of the p files
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles all remaining test/e2e/p*_test.go

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-08 15:57:47 -06:00
Andre Marianiello
a2cf948f90
Graceful shutdown during podman kube down
Signed-off-by: Andre Marianiello <andremarianiello@users.noreply.github.com>
2024-05-08 14:24:12 -04:00
openshift-merge-bot[bot]
092d0402ad
Merge pull request #22346 from edsantiago/exitwitherror-part2
ExitWithError() - continue tightening
2024-05-08 17:43:39 +00:00
Jonas Berlin
6d1098f823 Quadlet/Container: Add GroupAdd option
Co-authored-by: Ygal Blum <ygal.blum@gmail.com>
Signed-off-by: Jonas Berlin <xkr47@outerspace.dyndns.org>
2024-05-08 16:00:28 +03:00
openshift-merge-bot[bot]
db44d57b86
Merge pull request #22591 from Luap99/remove-toolbox-image
test/e2e: remove toolbox image
2024-05-08 11:41:52 +00:00
Ed Santiago
641cd7c5a2 ExitWithError() - continue tightening
Followup to #22270 : wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

A small number of tests were broken, as in, not actually testing
what they claimed to be testing. I've done my best to fix those.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-07 18:57:43 -06:00
openshift-merge-bot[bot]
b63a85c81d
Merge pull request #22627 from edsantiago/exitwitherror-part8
ExitWithError() - play_kube_test.go
2024-05-07 18:02:38 +00:00
openshift-merge-bot[bot]
1150020cb2
Merge pull request #22635 from giuseppe/fix-test-for-powercap
test: improve test for powercap presence
2024-05-07 17:59:52 +00:00
Giuseppe Scrivano
303d0b398e
test: improve test for powercap presence
Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2024-05-07 17:24:50 +02:00
openshift-merge-bot[bot]
2e624d2acf
Merge pull request #22613 from edsantiago/exitwitherror-part7
ExitWithError() - v files
2024-05-07 09:33:49 +00:00
openshift-merge-bot[bot]
f078258c83
Merge pull request #22560 from edsantiago/exitwitherror-part4
ExitWithError() -- run_test.go
2024-05-07 01:40:47 +00:00
Ed Santiago
7d12ae0973 ExitWithError() - play_kube_test.go
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles test/e2e/play_kube_test.go

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-06 15:59:53 -06:00
Ed Santiago
83ee16b9ba ExitWithError() - v files
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles test/e2e/v*_test.go

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-06 08:42:48 -06:00
Paul Holzinger
7a43c2ed1b
test/e2e: remove toolbox image
The image is way to big (over 800MB) that slows tests down as we always
have to pull this, the tests itself are also super slow due the
entrypoint logic that we don't care about. We should be testing for
features needed and not specific tools.

I think the current changes should have a similar coverage in terms of
podman features, it no longer tests toolbox but IMO this never was a
task for podman CI tests.

The main driver for this is to make the tests run entirely based on
tmpfs and this image is just to much[1].

[1] https://github.com/containers/podman/pull/22533

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-05-03 16:45:51 +02:00
Ed Santiago
275c068df7 ExitWithError() - pod_xxx tests
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

This commit handles a subset of test/e2e/pod_xxxx_test.go
(I stopped before this grew too huge for review)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-02 08:48:24 -06:00
Ed Santiago
c378f2d03a ExitWithError() -- run_test.go
Followup to #22270: wherever possible/practical, extend command
error checks to include explicit exit status codes and error strings.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-05-01 07:41:10 -06:00
Ed Santiago
1bc6f16bd0 vendor ginkgo 2.17.2 into test/tools
..to match the version in root dir, to get rid of the mismatch
warning on every ginkgo run.

I still don't understand why renovatebot isn't doing this.

(Also, touch a file under e2e, to force tests to run)

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-04-30 09:26:35 -06:00
Paul Holzinger
88b80c1df6
test/e2e: podman unshare image mount fix tmpdir leak
Because the test left the image mounted the cleanup failed to remove the
tmpdir as it contained an active mount point. Thus ensure we unmount the
image again to prevent this leak.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-29 14:16:37 +02:00
Paul Holzinger
0faded53b8
test/e2e: do not leak /tmp/private_file
This should use the proper per test tempdir which works just as well for
the purpose.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-29 14:16:37 +02:00
Paul Holzinger
88a625d319
test/e2e: "persistentVolumeClaim with source" do not leak file
Using /tmp means this file will be leaked and no deleted, switch to
using the per test tempdir which is removed after the test.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-29 14:16:36 +02:00
Ed Santiago
eaf60c7fe7 e2e tests: use /var/tmp, not $TMPDIR, as workdirs
TMPDIR is typically /tmp which is typically(*) a tmpfs.

This PR ignores $TMPDIR when $CI is defined, forcing all
e2e tests to set up one central working directory in /var/tmp
instead.

Also, lots of cleanup.

 (*) For many years, up to and still including the time of
     this PR, /tmp on Fedora CI VMs is actually NOT tmpfs,
     it is just / (root). This is nonstandard and undesirable.
     Efforts are underway to remove this special case.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-04-26 14:29:56 -06:00
Paul Holzinger
9a0ed6929a
test/e2e: force systemd cgroup manager
It is not clear why rootless was forced to the cgroupfs manager when
systemd is the default. In any case it causes local test failures as
described in the issue[1]. Using systemd manager makes them pass as
expected, I don't know enough aout cgroups to know the difference and
why certain tests have bad asumptions but this fixes it.

[1] https://github.com/containers/podman/issues/22474

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-26 14:37:31 +02:00
Paul Holzinger
537c21a49a
test/e2e: fix volumes and suid/dev/exec options
When the source dir is already mounted noexec, nodev or nosuid then a
rootless user cannot mount the dir into the container without these
options for obvious reasons.

So in order to run the test we must ensure the dir is mounted with these
options first, if they are simply skip as the test will fail otherwise.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-26 14:36:20 +02:00
Paul Holzinger
31034a1b6f
test/e2e: volumes and suid/dev/exec options works remote
--volume works fine with podman-remote you just need to know that the
path is server side.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-26 14:36:20 +02:00
Paul Holzinger
cc6e999f2a
test/e2e: fix limits test
When you run locally with a higher oom_score_adj then the one used in
the test podman will print a warning and not set the oom lower then the
current value. Thus use 999 as value which should only cause problems
for users with oom_score_adj value of 1000 (max value) which seems
unlikely.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-04-26 14:36:19 +02:00
Matt Heon
30e2c923d6 Add the ability to automount images as volumes via play
Effectively, this is an ability to take an image already pulled
to the system, and automatically mount it into one or more
containers defined in Kubernetes YAML accepted by `podman play`.

Requirements:
- The image must already exist in storage.
- The image must have at least 1 volume directive.
- The path given by the volume directive will be mounted from the
  image into the container. For example, an image with a volume
  at `/test/test_dir` will have `/test/test_dir` in the image
  mounted to `/test/test_dir` in the container.
- Multiple images can be specified. If multiple images have a
  volume at a specific path, the last image specified trumps.
- The images are always mounted read-only.
- Images to mount are defined in the annotation
  "io.podman.annotations.kube.image.automount/$ctrname" as a
  semicolon-separated list. They are mounted into a single
  container in the pod, not the whole pod.

As we're using a nonstandard annotation, this is Podman only, any
Kubernetes install will just ignore this.

Underneath, this compiles down to an image volume
(`podman run --mount type=image,...`) with subpaths to specify
what bits we want to mount into the container.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-04-25 14:12:27 -04:00