From c93d4be41e6e79ff6b4bd69e1564d057d1de0469 Mon Sep 17 00:00:00 2001
From: Ed Santiago <santiago@redhat.com>
Date: Tue, 20 Oct 2020 12:41:11 -0600
Subject: System tests: cleanup, make more robust

- run test: preserve --runtime test: use a random executable
  path. And, clean up better.

- run test: "look up correct image name" test: use random
  strings; test both without and with a :tag

- events test: use random label strings, add more filter tests

Signed-off-by: Ed Santiago <santiago@redhat.com>
---
 test/system/030-run.bats    | 53 ++++++++++++++++++++++++++++++---------------
 test/system/090-events.bats | 23 +++++++++++++++-----
 2 files changed, 54 insertions(+), 22 deletions(-)

diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index 48f25f8d3..6b6964c63 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -473,34 +473,53 @@ json-file | f
 
 # run with --runtime should preserve the named runtime
 @test "podman run : full path to --runtime is preserved" {
-    skip_if_cgroupsv1
-    skip_if_remote
-    run_podman run -d --runtime '/usr/bin/crun' $IMAGE sleep 60
+    skip_if_remote "podman-remote does not support --runtime option"
+
+    # Get configured runtime
+    run_podman info --format '{{.Host.OCIRuntime.Path}}'
+    runtime="$output"
+
+    # Assumes that /var/tmp is not mounted noexec; this is usually safe
+    new_runtime="/var/tmp/myruntime$(random_string 12)"
+    cp --preserve $runtime $new_runtime
+
+    run_podman run -d --runtime "$new_runtime" $IMAGE sleep 60
     cid="$output"
 
     run_podman inspect --format '{{.OCIRuntime}}' $cid
-    is "$output" "/usr/bin/crun"
-
+    is "$output" "$new_runtime" "podman inspect shows configured runtime"
     run_podman kill $cid
+    run_podman rm $cid
+    rm -f $new_runtime
 }
 
 # Regression test for issue #8082
 @test "podman run : look up correct image name" {
-	# Create a 2nd tag for the local image.
-	local name="localhost/foo/bar"
-	run_podman tag $IMAGE $name
+    # Create a 2nd tag for the local image. Force to lower case, and apply it.
+    local newtag="localhost/$(random_string 10)/$(random_string 8)"
+    newtag=${newtag,,}
+    run_podman tag $IMAGE $newtag
+
+    # Create a container with the 2nd tag and make sure that it's being
+    # used.  #8082 always inaccurately used the 1st tag.
+    run_podman create $newtag
+    cid="$output"
 
-	# Create a container with the 2nd tag and make sure that it's being
-	# used.  #8082 always inaccurately used the 1st tag.
-	run_podman create $name
-	cid="$output"
+    run_podman inspect --format "{{.ImageName}}" $cid
+    is "$output" "$newtag" "container .ImageName is the container-create name"
 
-	run_podman inspect --format "{{.ImageName}}" $cid
-	is "$output" "$name"
+    # Same thing, but now with a :tag, and making sure it works with --name
+    newtag2="${newtag}:$(random_string 6|tr A-Z a-z)"
+    run_podman tag $IMAGE $newtag2
 
-	# Clean up.
-	run_podman rm $cid
-	run_podman untag $IMAGE $name
+    cname="$(random_string 14|tr A-Z a-z)"
+    run_podman create --name $cname $newtag2
+    run_podman inspect --format "{{.ImageName}}" $cname
+    is "$output" "$newtag2" "container .ImageName is the container-create name"
+
+    # Clean up.
+    run_podman rm $cid $cname
+    run_podman untag $IMAGE $newtag $newtag2
 }
 
 # vim: filetype=sh
diff --git a/test/system/090-events.bats b/test/system/090-events.bats
index 06e28ec3a..8a9db41fa 100644
--- a/test/system/090-events.bats
+++ b/test/system/090-events.bats
@@ -6,9 +6,22 @@
 load helpers
 
 @test "events with a filter by label" {
-    skip_if_remote "Need to talk to Ed on why this is failing on remote"
-    rand=$(random_string 30)
-    run_podman 0  run --label foo=bar --name test-$rand --rm $IMAGE ls
-    run_podman 0 events --filter type=container --filter container=test-$rand --filter label=foo=bar --filter event=start --stream=false
-    is "$output" ".*foo=bar" "check for label event on container with label"
+    skip_if_remote "FIXME: -remote does not include labels in event output"
+    cname=test-$(random_string 30 | tr A-Z a-z)
+    labelname=$(random_string 10)
+    labelvalue=$(random_string 15)
+
+    run_podman run --label $labelname=$labelvalue --name $cname --rm $IMAGE ls
+
+    expect=".* container start [0-9a-f]\+ (image=$IMAGE, name=$cname,.* ${labelname}=${labelvalue}"
+    run_podman events --filter type=container --filter container=$cname --filter label=${labelname}=${labelvalue} --filter event=start --stream=false
+    is "$output" "$expect" "filtering by container name and label"
+
+    # Same thing, but without the container-name filter
+    run_podman events --filter type=container --filter label=${labelname}=${labelvalue} --filter event=start --stream=false
+    is "$output" "$expect" "filtering just by label"
+
+    # Now filter just by container name, no label
+    run_podman events --filter type=container --filter container=$cname --filter event=start --stream=false
+    is "$output" "$expect" "filtering just by label"
 }
-- 
cgit v1.2.3-54-g00ecf