Commit Graph

307 Commits

Author SHA1 Message Date
openshift-merge-bot[bot] c8fc73e19c
Merge pull request #25097 from mtrmac/PodmanOptions
Refactor Podman E2E helpers to allow passing/adding more options to the low-level executor
2025-01-23 10:20:25 +00:00
Miloslav Trmač df9e8c3ce6 Eliminate PodmanSystemdScope
It seems this utility is not all that generally useful,
so eliminate it from the global namespace and use
PodmanWithOptions directly.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2025-01-23 01:10:18 +01:00
Miloslav Trmač f20d9bd637 Update expected errors when pulling encrypted images
https://github.com/containers/image/issues/2646 will track actually
returning a meaningful error instead of these internal details.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2025-01-23 00:11:24 +01:00
Miloslav Trmač 9363c8c362 Eliminate PodmanExtraFiles
Instaed, inline the implementation into callers, calling
PodmanWithOptions directly, demonstrating how to use
PodmanWithOptions.

Should not change behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2025-01-23 00:04:05 +01:00
Erik Sjölund 806722b3d6
specgenutil: Fix parsing of mount option ptmxmode
Fix typo: ptxmode -> ptmxmode

Reference: https://github.com/containers/podman/discussions/24921

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2025-01-08 11:52:11 +01:00
Gavin Lam 4f7395f93a
Add --hosts-file flag to container and pod commands
* Add --hosts-file flag to container create, container run and pod create
* Add HostsFile field to pod inspect and container inspect results
* Test BaseHostsFile config in containers.conf

Signed-off-by: Gavin Lam <gavin.oss@tutamail.com>
2024-11-24 22:00:34 -05:00
Paul Holzinger 0a1363d8eb
test/e2e: remove FIPS test
First, creating a global file /etc/system-fips was never a good idea for
testing as it affects other running tests at the same time.
And as of a recent change to FIPS mounts[1] we no longer use the file so
the test breaks with c/common v0.61. Instead it uses the kernel file
/proc/sys/crypto/fips_enabled which requires the real fips mode to be
activated and that in turn requires a reboot. As such this is not
somthing that can be tested in upstream CI like that.

[1] https://github.com/containers/common/pull/2174

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-11-12 10:59:04 +01:00
Paul Holzinger f517e52167
test/e2e: try debug potential pasta issue
Run pasta with --trace and a log file to see if the hangs are caused by
pasta not correctly closing connections as assumed in #24219.

As the log is super verbose do not log it by default so I added some
extra logic to make sure it is only logged when the test fails.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-10-10 12:00:25 +02:00
Ed Santiago 8d119f0c2d New VMs: test crun 1.17
...and remove one old skip() for older debian, but leave
two others in place and mark that they're still a problem.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-09-17 06:51:36 -06:00
Ed Santiago 579e8b2d7a e2e: flake fix: SIGPIPE in hook test
One-off flake, easy to fix. And, as long as I'm fixing it,
add a few more checks to it.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-09-04 08:24:16 -06:00
Ed Santiago 4dc5708f14 Revert "test/e2e: work around for pasta issue"
This reverts commit 1912dd4bf6.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-08-22 04:55:43 -06:00
Paul Holzinger 666d839157
golangci-lint: make windows linting happy
It qemu cannot be compiled anyway so make sure we do not try to compile
parts where the typechecker complains about on windows.
Also all the e2e test files are only used on linux as well.
pkg/machine/wsl also reports some error but to many for me to fix them
now. One minor problem was fixed in pkg/machine/machine_windows.go.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-08-19 11:41:29 +02:00
Paul Holzinger 1912dd4bf6
test/e2e: work around for pasta issue
Use network slirp4netns for the registry container to work around a
pasta regression (#23517). This should be revert once it is fixed in
pasta and included in our CI images.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-08-06 13:16:34 +02:00
Paul Holzinger 71bcd25ab6
test/e2e: fix missing exit code checks
Both push commands didn't check the exit code so make sure they actually
work.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-08-06 13:16:34 +02:00
Miloslav Trmač 6c55ef505d Use unique image names for the encrypted test images
"/my-alpine" is also being used by tests in search_test.go;
use unique names to make sure we are trying to pull the encrypted
images created in the test.

Purely to avoid doubt, this should not actually change (test) behavior.

Signed-off-by: Miloslav Trmač <mitr@redhat.com>
2024-07-23 21:26:11 +02:00
Paul Holzinger 83863a6863
specgen: parse devices even with privileged set
When a users asks for specific devices we should still add them and not
ignore them just because privileged adds all of them.

Most notably if you set --device /dev/null:/dev/test you expect
/dev/test in the container, however as we ignored them this was not the
case. Another side effect is that the input was not validated at at all.
This leads to confusion as descriped in the issue.

Fixes #23132

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-07-01 11:46:34 +02:00
Ed Santiago de58c5f292 ExitWithError() - more upgrades from Exit()
Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-06-25 10:07:56 -06: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
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
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
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
Ed Santiago ac04cb4ac5 e2e tests: stop littering
"tmpdir + string" does not do what you think it does.

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-04-22 06:43:19 -06:00
Ed Santiago 7d5a68c9cd CI: e2e: use distinct ports, not just 5000
Too many tests use port 5000. Although there's a putative GetPortLock()
it seems to be unreliable, and we often get what appear to be collisions
between tests.

A proper solution would be to pseudorandomly allocate ports, verify
that they're not being reused, Sprintf() these everywhere that
needs them, and sprinkle some powdered cinnamon on top.

This is not that proper solution.

Fixes: #20655

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-02-27 04:30:26 -07:00
Matt Heon 3ca2213607 Add a helper for stopping pods and containers in E2E
This removes a lot of boilerplate, but also ensures that every
stop test that is not directly testing podman stop or podman pod
stop uses `-t0` for quick, error-free stopping.

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-15 09:35:55 -05:00
Ed Santiago e5f86f8628 More test tweaks to avoid "StopSignal ... 10 seconds" warning
Continuing to see CI failures of the form "StopSignal SIGTERM
failed to stop container in 10 seconds". Work around those,
either by adding "-t0" to podman stop, or by using Expect(Exit(0))
instead of ExitCleanly().

Addresses, but does not close, #20196

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-02-14 18:27:26 -07:00
Ed Santiago 5eb801a562 Bump CI VMs to ones with netavark 1.10.3
And, runc-1.12 broke our seccomp e2e tests (runc now calls getcwd(),
which is the dummy syscall blocked for testing seccomp). Switch
to blocking link() instead.

Also, disable v4.1.0 upgrade tests. They're hanging, and I have
no idea why, and have wasted most of a day debugging.

Fixes: #21546

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-02-12 13:55:03 -07:00
Matt Heon 72f1617fac Bump Go module to v5
Moving from Go module v4 to v5 prepares us for public releases.

Move done using gomove [1] as with the v3 and v4 moves.

[1] https://github.com/KSubedi/gomove

Signed-off-by: Matt Heon <mheon@redhat.com>
2024-02-08 09:35:39 -05:00
Paul Holzinger cdb178e954
cli: podman push --encryption-key use StringArray()
This option accepts a file path so we should allow commas in it.
Also add tests for --decryption-key

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-11 15:43:20 +01:00
Paul Holzinger c5258d4630
cli: podman --hooks-dir use StringArray()
This option accepts a file path so we should allow commas in it.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-12-08 12:17:01 +01:00
Daniel J Walsh 62060f3234
Get masked paths and readonly masked patchs from containers/common
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-11-19 10:01:20 -05:00
Ed Santiago d2a4ec867d Test fixes for debian
Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-16 15:14:36 -07:00
Ed Santiago 6b5b399121 CI: e2e: fix a smattering of test bugs that slipped in
...while Ed was napping:
 - create/run based on remote image: was not actually testing anything
 - create/run --tls-verify: ditto
 - run --decryption-key: sort of testing but not really
 - Fail(), not Skip(), if we can't start registry.
 - never Skip() halfway through a test: emit a message, and return

The Skip-in-the-middle thing deserves to be shouted from the rooftops.
Let's please never do that again. Skip() says "this entire test was
skipped", which can be misleading to a spelunker trying to track
down a problem related to those tests.

Also, more minor:
 - reduce use of port 5000
 - rename a confusingly-named test

Ref: #11205, #12009

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-11-10 13:41:34 -07:00
Brent Baude 78798cab00 Automatic code cleanups - JetBrains
A bunch of cleanups as suggested by linters/etc in JetBrains IDE.

Signed-off-by: Brent Baude <bbaude@redhat.com>
2023-11-07 14:05:15 -06:00
Matthew Heon be7dd128ef Mask /sys/devices/virtual/powercap
I don't really like this solution because it can't be undone by
`--security-opt unmask=all` but I don't see another way to make
this retroactive. We can potentially change things up to do this
the right way with 5.0 (actually have it in the list of masked
paths, as opposed to adding at spec finalization as now).

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-10-26 18:24:25 -04:00
Giuseppe Scrivano f21c1d238d
podman: run --replace prints only the new container id
print only the new container ID when using --replace instead of the
terminated container ID if it was stopped.

Closes: https://github.com/containers/podman/issues/20185

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-09-28 23:32:27 +02:00
Ed Santiago e4b7455b72 e2e: ExitCleanly(): manual fixes to get tests working
Commit 2 of 2: fixes to get tests passing

Mostly reverting back to Exit(0) on tests that produce stderr,
adding stderr checks when those are missing.

One pretty big exception: "run check dns" test was completely
broken in many respects. It should never have worked under CNI,
but was passing because nslookup in that alpine image was
checking /etc/hosts. This has been fixed in subsequent alpine
images, which we're now using in this test (CITEST_IMAGE).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-09-26 08:47:16 -06:00
Ed Santiago dbd946a932 e2e: ExitCleanly(): a few more
Commit 1 of 2: automated string replace Exit(0) -> ExitCleanly()

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-09-26 08:47:16 -06:00
Giuseppe Scrivano 83b6975d10
test: fix rootless propagation test
the test works only when the user owns the outer mount namespace,
which is likely not the case when running in rootless mode.

Closes: https://github.com/containers/podman/issues/20076

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-09-21 21:33:27 +02:00
Giuseppe Scrivano 19bd9b33dd
libpod: move oom_score_adj clamp to init
commit 8b4a79a744 introduced
oom_score_adj clamping when the container oom_score_adj value is lower
than the current one in a rootless environment.  Move the check to
init() time so it is performed every time the container starts and not
only when it is created.  It is more robust if the oom_score_adj value
is changed for the current user session.

Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
2023-09-11 17:04:37 +02:00
Matthew Heon 2de22ebf0d Ensure volumes-from mounts override image volumes
We do not allow volumes and mounts to be placed at the same
location in the container, with create-time checks to ensure this
does not happen. User-added conflicts cannot be resolved (if the
user adds two separate mounts to, say, /myapp, we can't resolve
that contradiction and error), but for many other volume sources,
we can solve the contradiction ourselves via a priority
hierarchy. Image volumes come first, and are overridden by the
`--volumes-from` flag, which are overridden by user-added mounts,
etc, etc. The problem here is that we were not properly handling
volumes-from overriding image volumes. An inherited volume from
--volumes-from would supercede an image volume, but an inherited
mount would not. Solution is fortunately simple - just clear out
the map entry for the other type when adding volumes-from
volumes.

Makes me wish for Rust sum types - conflict resolution would be a
lot simpler if we could use a sum type for volumes and bind
mounts and thus have a single map instead of two maps, one for
each type.

Fixes #19529

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2023-08-07 15:04:33 -04:00
Daniel J Walsh f256f4f954
Use constants for mount types
Inspired by https://github.com/containers/podman/pull/19238

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
2023-07-14 07:17:21 -04:00
Paul Holzinger 34c258b419
libpod: fix timezone handling
The current way of bind mounting the host timezone file has problems.
Because /etc/localtime in the image may exist and is a symlink under
/usr/share/zoneinfo it will overwrite the targetfile. That confuses
timezone parses especially java where this approach does not work at
all. So we end up with an link which does not reflect the actual truth.

The better way is to just change the symlink in the image like it is
done on the host. However because not all images ship tzdata we cannot
rely on that either. So now we do both, when tzdata is installed then
use the symlink and if not we keep the current way of copying the host
timezone file in the container to /etc/localtime.

Also note that we need to rebuild the systemd image to include tzdata in
order to test this as our images do not contain the tzdata by default.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2149876

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-06-01 11:04:13 +02:00
Erik Sjölund 685c736185 source code comments and docs: fix typos, language, Markdown layout
- fix a/an before noun
- fix loose -> lose
- fix "the the"
- fix lets -> let's
- fix Markdown layout
- fix a few typos
- remove unnecessary text in troubleshooting.md

Signed-off-by: Erik Sjölund <erik.sjolund@gmail.com>
2023-05-22 07:52:16 +02:00
Paul Holzinger ab29ff2f66
test/e2e: dedup Before/AfterEach nodes
There is no reason to define the same code every time in each file, just
use global nodes. This diff should speak for itself.

CleanupSecrets()/Volume() no longer call Cleanup() directly, as the
global AfterEach node will always call Cleanup() this is no longer
necessary. If one AfterEach() node fails it will still run the others.

Also always unset the CONTAINERS_CONF env vars. This prevents people
from forgetting to unset it. And fix the special CONTAINERS_CONF logic
in the system connection tests, we do not want to preserve
CONTAINERS_CONF anyway so just remove this logic.

Ginkgo orders the BeforeEach and AfterEach nodes. They will be executed
from the outer-most defined to inner-most. This means our global
BeforeEach is always first. Only then the inner one (in the Describe()
function in each file). For AfterEach it is inverted, from the inner to
the outer.
Also see https://onsi.github.io/ginkgo/#organizing-specs-with-container-nodes

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-15 16:56:18 +02:00
Matt Heon 2c0f404826 Do not include image annotations when building spec
These annotations can have security implications - crun, for
example, allows rootless containers to preserve the user's groups
through an annotation. We absolutely should not include
annotations from an untrusted image off the internet by default.

We may consider whitelisting some annotations (e.g. the legacy
WASM annotations), but given that there is now a more explicit
way of specifying an image uses the WASM runtime in the OCI image
spec, I'm just tearing this out entirely for now.

Signed-off-by: Matt Heon <mheon@redhat.com>
2023-05-11 23:48:23 -04:00
Ed Santiago 3050a64373 e2e test cleanup
- fix a typo that was resulting in a test being a NOP, and
   add actual testing to it.

 - fix two Expects() with incorrectly-ordered actual/expects

 - remove leading whitespace from an It() test name

 - To(BeTrue()) is evil. Wherever possible, replace it with
   useful string or field checks. When not possible, use
   the annotation field to indicate what failed. I got
   carried away here, #sorrynotsorry

 - remove unused system-test code

Signed-off-by: Ed Santiago <santiago@redhat.com>
2023-05-02 08:36:26 -06:00
Paul Holzinger fb7a96638c
test/e2e: switch to GinkgoWriter
Directly writing to stdout/err is not safe when run in parallel.
Ginkgo v2 fixed this buffering the output and syncing the output so it
is not mangled between tests.

This means we should use the GinkgoWriter everywhere to make sure the
output stays in sync.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:38 +02:00
Paul Holzinger c564d9d7af
ginkgo v2: remove CurrentGinkgoTestDescription()
This function is deprecated and replaced with CurrentSpecReport().
Also fix inconsitent callers.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:36 +02:00
Paul Holzinger 445815036f
update to ginkgo v2
Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2023-05-02 11:27:35 +02:00
Chris Evich e8f34e4579
Add name-generation test
Podman's container-name generation depends on the global RNG state being
properly initialized (seeded).  Should this not happen for some reason
(or it's seeded with a static value), podman will generate the exact
same repeating sequence of container names (assuming no clashes with
existing containers).  Add a test to confirm this is always the case.

Signed-off-by: Chris Evich <cevich@redhat.com>
2023-04-28 16:30:01 -04:00