From a031b83a09a8628435317a03f199cdc18b78262f Mon Sep 17 00:00:00 2001 From: Matthew Heon Date: Wed, 1 Nov 2017 11:24:59 -0400 Subject: Initial checkin from CRI-O repo Signed-off-by: Matthew Heon --- test/kpod_logs.bats | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 test/kpod_logs.bats (limited to 'test/kpod_logs.bats') diff --git a/test/kpod_logs.bats b/test/kpod_logs.bats new file mode 100644 index 000000000..1e3015566 --- /dev/null +++ b/test/kpod_logs.bats @@ -0,0 +1,74 @@ +#!/usr/bin/env bats + +load helpers + +IMAGE="alpine:latest" + +function teardown() { + cleanup_test +} + +@test "display logs for container" { + start_crio + run crioctl pod run --config "$TESTDATA"/sandbox_config.json + echo "$output" + [ "$status" -eq 0 ] + pod_id="$output" + run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" + echo "$output" + [ "$status" -eq 0 ] + ctr_id="$output" + run crioctl ctr start --id "$ctr_id" + echo "$output" + [ "$status" -eq 0 ] + run ${KPOD_BINARY} $KPOD_OPTIONS logs "$ctr_id" + echo "$output" + [ "$status" -eq 0 ] + cleanup_ctrs + cleanup_pods + stop_crio +} + +@test "tail three lines of logs for container" { + start_crio + run crioctl pod run --config "$TESTDATA"/sandbox_config.json + echo "$output" + [ "$status" -eq 0 ] + pod_id="$output" + run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" + echo "$output" + [ "$status" -eq 0 ] + ctr_id="$output" + run crioctl ctr start --id "$ctr_id" + echo "$output" + [ "$status" -eq 0 ] + run ${KPOD_BINARY} $KPOD_OPTIONS logs --tail 3 $ctr_id + echo "$output" + lines=$(echo "$output" | wc -l) + [ "$status" -eq 0 ] + [[ $(wc -l < "$output" ) -le 3 ]] + cleanup_ctrs + cleanup_pods + stop_crio +} + +@test "display logs for container since a given time" { + start_crio + run crioctl pod run --config "$TESTDATA"/sandbox_config.json + echo "$output" + [ "$status" -eq 0 ] + pod_id="$output" + run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" + echo "$output" + [ "$status" -eq 0 ] + ctr_id="$output" + run crioctl ctr start --id "$ctr_id" + echo "$output" + [ "$status" -eq 0 ] + run ${KPOD_BINARY} $KPOD_OPTIONS logs --since 2017-08-07T10:10:09.056611202-04:00 $ctr_id + echo "$output" + [ "$status" -eq 0 ] + cleanup_ctrs + cleanup_pods + stop_crio +} -- cgit v1.2.3-54-g00ecf From 6e99e1a1fda96fbf22aeb3585f0ff0d36b1deee8 Mon Sep 17 00:00:00 2001 From: Matthew Heon Date: Wed, 1 Nov 2017 12:06:57 -0400 Subject: Remove CRIO tests, disable broken kpod tests Signed-off-by: Matthew Heon --- test/apparmor.bats | 164 --------- test/cgroups.bats | 40 --- test/command.bats | 12 - test/ctr.bats | 873 ----------------------------------------------- test/default_mounts.bats | 69 ---- test/helpers.bash | 143 -------- test/hooks.bats | 38 --- test/image.bats | 250 -------------- test/image_remove.bats | 74 ---- test/image_volume.bats | 68 ---- test/inspect.bats | 72 ---- test/kpod_export.bats | 1 + test/kpod_kill.bats | 4 + test/kpod_logs.bats | 3 + test/kpod_mount.bats | 1 + test/kpod_pause.bats | 5 + test/kpod_ps.bats | 14 + test/kpod_rename.bats | 1 + test/kpod_rm.bats | 4 + test/kpod_stats.bats | 5 + test/kpod_stop.bats | 2 + test/kpod_wait.bats | 3 + test/network.bats | 186 ---------- test/pod.bats | 365 -------------------- test/restore.bats | 267 --------------- test/runtimeversion.bats | 15 - test/seccomp.bats | 368 -------------------- test/selinux.bats | 26 -- 28 files changed, 43 insertions(+), 3030 deletions(-) delete mode 100644 test/apparmor.bats delete mode 100644 test/cgroups.bats delete mode 100644 test/command.bats delete mode 100644 test/ctr.bats delete mode 100644 test/default_mounts.bats delete mode 100644 test/hooks.bats delete mode 100644 test/image.bats delete mode 100644 test/image_remove.bats delete mode 100644 test/image_volume.bats delete mode 100644 test/inspect.bats delete mode 100644 test/network.bats delete mode 100644 test/pod.bats delete mode 100644 test/restore.bats delete mode 100644 test/runtimeversion.bats delete mode 100644 test/seccomp.bats delete mode 100644 test/selinux.bats (limited to 'test/kpod_logs.bats') diff --git a/test/apparmor.bats b/test/apparmor.bats deleted file mode 100644 index e5c89bf0a..000000000 --- a/test/apparmor.bats +++ /dev/null @@ -1,164 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -# 1. test running with loading the default apparmor profile. -# test that we can run with the default apparmor profile which will not block touching a file in `.` -@test "load default apparmor profile and run a container with it" { - # this test requires apparmor, so skip this test if apparmor is not enabled. - enabled=$(is_apparmor_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since apparmor is not enabled." - fi - - start_crio - - sed -e 's/%VALUE%/,"container\.apparmor\.security\.beta\.kubernetes\.io\/testname1": "runtime\/default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/apparmor1.json - - run crioctl pod run --name apparmor1 --config "$TESTDIR"/apparmor1.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname1 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr execsync --id "$ctr_id" touch test.txt - echo "$output" - [ "$status" -eq 0 ] - - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 2. test running with loading a specific apparmor profile as crio default apparmor profile. -# test that we can run with a specific apparmor profile which will block touching a file in `.` as crio default apparmor profile. -@test "load a specific apparmor profile as default apparmor and run a container with it" { - # this test requires apparmor, so skip this test if apparmor is not enabled. - enabled=$(is_apparmor_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since apparmor is not enabled." - fi - - load_apparmor_profile "$APPARMOR_TEST_PROFILE_PATH" - start_crio "" "$APPARMOR_TEST_PROFILE_NAME" - - sed -e 's/%VALUE%/,"container\.apparmor\.security\.beta\.kubernetes\.io\/testname2": "apparmor-test-deny-write"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/apparmor2.json - - run crioctl pod run --name apparmor2 --config "$TESTDIR"/apparmor2.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname2 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr execsync --id "$ctr_id" touch test.txt - echo "$output" - [ "$status" -ne 0 ] - [[ "$output" =~ "Permission denied" ]] - - cleanup_ctrs - cleanup_pods - stop_crio - remove_apparmor_profile "$APPARMOR_TEST_PROFILE_PATH" -} - -# 3. test running with loading a specific apparmor profile but not as crio default apparmor profile. -# test that we can run with a specific apparmor profile which will block touching a file in `.` -@test "load default apparmor profile and run a container with another apparmor profile" { - # this test requires apparmor, so skip this test if apparmor is not enabled. - enabled=$(is_apparmor_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since apparmor is not enabled." - fi - - load_apparmor_profile "$APPARMOR_TEST_PROFILE_PATH" - start_crio - - sed -e 's/%VALUE%/,"container\.apparmor\.security\.beta\.kubernetes\.io\/testname3": "apparmor-test-deny-write"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/apparmor3.json - - run crioctl pod run --name apparmor3 --config "$TESTDIR"/apparmor3.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname3 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr execsync --id "$ctr_id" touch test.txt - echo "$output" - [ "$status" -ne 0 ] - [[ "$output" =~ "Permission denied" ]] - - cleanup_ctrs - cleanup_pods - stop_crio - remove_apparmor_profile "$APPARMOR_TEST_PROFILE_PATH" -} - -# 4. test running with wrong apparmor profile name. -# test that we can will fail when running a ctr with rong apparmor profile name. -@test "run a container with wrong apparmor profile name" { - # this test requires apparmor, so skip this test if apparmor is not enabled. - enabled=$(is_apparmor_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since apparmor is not enabled." - fi - - start_crio - - sed -e 's/%VALUE%/,"container\.apparmor\.security\.beta\.kubernetes\.io\/testname4": "not-exists"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/apparmor4.json - - run crioctl pod run --name apparmor4 --config "$TESTDIR"/apparmor4.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname4 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -ne 0 ] - [[ "$output" =~ "Creating container failed" ]] - - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 5. test running with default apparmor profile unloaded. -# test that we can will fail when running a ctr with rong apparmor profile name. -@test "run a container after unloading default apparmor profile" { - # this test requires apparmor, so skip this test if apparmor is not enabled. - enabled=$(is_apparmor_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since apparmor is not enabled." - fi - - start_crio - remove_apparmor_profile "$FAKE_CRIO_DEFAULT_PROFILE_PATH" - - sed -e 's/%VALUE%/,"container\.apparmor\.security\.beta\.kubernetes\.io\/testname5": "runtime\/default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/apparmor5.json - - run crioctl pod run --name apparmor5 --config "$TESTDIR"/apparmor5.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname5 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr execsync --id "$ctr_id" touch test.txt - echo "$output" - [ "$status" -eq 0 ] - - - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/cgroups.bats b/test/cgroups.bats deleted file mode 100644 index cbe27be41..000000000 --- a/test/cgroups.bats +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "pids limit" { - if ! grep pids /proc/self/cgroup; then - skip "pids cgroup controller is not mounted" - fi - PIDS_LIMIT=1234 start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - pids_limit_config=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin); obj["command"] = ["/bin/sleep", "600"]; json.dump(obj, sys.stdout)') - echo "$pids_limit_config" > "$TESTDIR"/container_pids_limit.json - run crioctl ctr create --config "$TESTDIR"/container_pids_limit.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" cat /sys/fs/cgroup/pids/pids.max - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "1234" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/command.bats b/test/command.bats deleted file mode 100644 index 86e58f9db..000000000 --- a/test/command.bats +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -@test "crio commands" { - run ${CRIO_BINARY} --config /dev/null config > /dev/null - echo "$output" - [ "$status" -eq 0 ] - run ${CRIO_BINARY} badoption > /dev/null - echo "$output" - [ "$status" -ne 0 ] -} diff --git a/test/ctr.bats b/test/ctr.bats deleted file mode 100644 index 90f42b687..000000000 --- a/test/ctr.bats +++ /dev/null @@ -1,873 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "ctr not found correct error message" { - start_crio - run crioctl ctr status --id randomid - echo "$output" - [ "$status" -eq 1 ] - [[ "$output" =~ "container with ID starting with randomid not found" ]] - - stop_crio -} - -@test "ctr termination reason Completed" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Reason: Completed" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr termination reason Error" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - errorconfig=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["command"] = ["false"]; json.dump(obj, sys.stdout)') - echo "$errorconfig" > "$TESTDIR"/container_config_error.json - run crioctl ctr create --config "$TESTDIR"/container_config_error.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Reason: Error" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr remove" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr remove --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr lifecycle" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr remove --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr logging" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - - # Create a new container. - newconfig=$(mktemp --tmpdir crio-config.XXXXXX.json) - cp "$TESTDATA"/container_config_logging.json "$newconfig" - sed -i 's|"%shellcommand%"|"echo here is some output \&\& echo and some from stderr >\&2"|' "$newconfig" - run crioctl ctr create --config "$newconfig" --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr stop --id "$ctr_id" - echo "$output" - # Ignore errors on stop. - run crioctl ctr status --id "$ctr_id" - [ "$status" -eq 0 ] - run crioctl ctr remove --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - # Check that the output is what we expect. - logpath="$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log" - [ -f "$logpath" ] - echo "$logpath :: $(cat "$logpath")" - grep -E "^[^\n]+ stdout here is some output$" "$logpath" - grep -E "^[^\n]+ stderr and some from stderr$" "$logpath" - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr logging [tty=true]" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - - # Create a new container. - newconfig=$(mktemp --tmpdir crio-config.XXXXXX.json) - cp "$TESTDATA"/container_config_logging.json "$newconfig" - sed -i 's|"%shellcommand%"|"echo here is some output"|' "$newconfig" - sed -i 's|"tty": false,|"tty": true,|' "$newconfig" - run crioctl ctr create --config "$newconfig" --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr stop --id "$ctr_id" - echo "$output" - # Ignore errors on stop. - run crioctl ctr status --id "$ctr_id" - [ "$status" -eq 0 ] - run crioctl ctr remove --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - # Check that the output is what we expect. - logpath="$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log" - [ -f "$logpath" ] - echo "$logpath :: $(cat "$logpath")" - grep --binary -P "^[^\n]+ stdout here is some output\x0d$" "$logpath" - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr log max" { - LOG_SIZE_MAX_LIMIT=10000 start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - - # Create a new container. - newconfig=$(mktemp --tmpdir crio-config.XXXXXX.json) - cp "$TESTDATA"/container_config_logging.json "$newconfig" - sed -i 's|"%shellcommand%"|"for i in $(seq 250); do echo $i; done"|' "$newconfig" - run crioctl ctr create --config "$newconfig" --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - sleep 6 - run crioctl ctr status --id "$ctr_id" - [ "$status" -eq 0 ] - run crioctl ctr remove --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - # Check that the output is what we expect. - logpath="$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log" - [ -f "$logpath" ] - echo "$logpath :: $(cat "$logpath")" - len=$(wc -l "$logpath" | awk '{print $1}') - [ $len -lt 250 ] - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# regression test for #127 -@test "ctrs status for a pod" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl ctr list --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" != "" ]] - - printf '%s\n' "$output" | while IFS= read -r id - do - run crioctl ctr status --id "$id" - echo "$output" - [ "$status" -eq 0 ] - done - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr list filtering" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json --name pod1 - echo "$output" - [ "$status" -eq 0 ] - pod1_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod1_id" - echo "$output" - [ "$status" -eq 0 ] - ctr1_id="$output" - run crioctl ctr start --id "$ctr1_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod run --config "$TESTDATA"/sandbox_config.json --name pod2 - echo "$output" - [ "$status" -eq 0 ] - pod2_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod2_id" - echo "$output" - [ "$status" -eq 0 ] - ctr2_id="$output" - run crioctl pod run --config "$TESTDATA"/sandbox_config.json --name pod3 - echo "$output" - [ "$status" -eq 0 ] - pod3_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod3_id" - echo "$output" - [ "$status" -eq 0 ] - ctr3_id="$output" - run crioctl ctr start --id "$ctr3_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr stop --id "$ctr3_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr list --id "$ctr1_id" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - run crioctl ctr list --id "${ctr1_id:0:4}" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - run crioctl ctr list --id "$ctr2_id" --pod "$pod2_id" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr2_id" ]] - run crioctl ctr list --id "$ctr2_id" --pod "$pod3_id" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" == "" ]] - run crioctl ctr list --state created --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr2_id" ]] - run crioctl ctr list --state running --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - run crioctl ctr list --state stopped --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr3_id" ]] - run crioctl ctr list --pod "$pod1_id" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - run crioctl ctr list --pod "$pod2_id" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr2_id" ]] - run crioctl ctr list --pod "$pod3_id" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr3_id" ]] - run crioctl pod stop --id "$pod1_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod1_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod stop --id "$pod2_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod2_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod stop --id "$pod3_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod3_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr list label filtering" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" --name ctr1 --label "a=b" --label "c=d" --label "e=f" - echo "$output" - [ "$status" -eq 0 ] - ctr1_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" --name ctr2 --label "a=b" --label "c=d" - echo "$output" - [ "$status" -eq 0 ] - ctr2_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" --name ctr3 --label "a=b" - echo "$output" - [ "$status" -eq 0 ] - ctr3_id="$output" - run crioctl ctr list --label "tier=backend" --label "a=b" --label "c=d" --label "e=f" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - run crioctl ctr list --label "tier=frontend" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" == "" ]] - run crioctl ctr list --label "a=b" --label "c=d" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - [[ "$output" =~ "$ctr2_id" ]] - run crioctl ctr list --label "a=b" --quiet - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" != "" ]] - [[ "$output" =~ "$ctr1_id" ]] - [[ "$output" =~ "$ctr2_id" ]] - [[ "$output" =~ "$ctr3_id" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr metadata in list & status" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr list --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - # TODO: expected value should not hard coded here - [[ "$output" =~ "Name: container1" ]] - [[ "$output" =~ "Attempt: 1" ]] - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - # TODO: expected value should not hard coded here - [[ "$output" =~ "Name: container1" ]] - [[ "$output" =~ "Attempt: 1" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr execsync conflicting with conmon flags parsing" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" sh -c "echo hello world" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "hello world" ]] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr execsync" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" echo HELLO - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "HELLO" ]] - run crioctl ctr execsync --id "$ctr_id" --timeout 1 sleep 10 - echo "$output" - [[ "$output" =~ "command timed out" ]] - [ "$status" -ne 0 ] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr device add" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis_device.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" ls /dev/mynull - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "/dev/mynull" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr execsync failure" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" doesnotexist - echo "$output" - [ "$status" -ne 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr execsync exit code" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" false - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 1" ]] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr execsync std{out,err}" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" echo hello0 stdout - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" == *"$(printf "Stdout:\nhello0 stdout")"* ]] - - stderrconfig=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["image"]["image"] = "runcom/stderr-test"; obj["command"] = ["/bin/sleep", "600"]; json.dump(obj, sys.stdout)') - echo "$stderrconfig" > "$TESTDIR"/container_config_stderr.json - run crioctl ctr create --config "$TESTDIR"/container_config_stderr.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" stderr - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" == *"$(printf "Stderr:\nthis goes to stderr")"* ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr stop idempotent" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr caps drop" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - capsconfig=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["linux"]["security_context"]["capabilities"] = {u"add_capabilities": [], u"drop_capabilities": [u"mknod", u"kill", u"sys_chroot", u"setuid", u"setgid"]}; json.dump(obj, sys.stdout)') - echo "$capsconfig" > "$TESTDIR"/container_config_caps.json - run crioctl ctr create --config "$TESTDIR"/container_config_caps.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "run ctr with image with Config.Volumes" { - start_crio - run crioctl image pull gcr.io/k8s-testimages/redis:e2e - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - volumesconfig=$(cat "$TESTDATA"/container_redis.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["image"]["image"] = "gcr.io/k8s-testimages/redis:e2e"; obj["args"] = []; json.dump(obj, sys.stdout)') - echo "$volumesconfig" > "$TESTDIR"/container_config_volumes.json - run crioctl ctr create --config "$TESTDIR"/container_config_volumes.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr oom" { - if [[ "$TRAVIS" == "true" ]]; then - skip "travis container tests don't support testing OOM" - fi - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - oomconfig=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["image"]["image"] = "mrunalp/oom"; obj["linux"]["resources"]["memory_limit_in_bytes"] = 5120000; obj["command"] = ["/oom"]; json.dump(obj, sys.stdout)') - echo "$oomconfig" > "$TESTDIR"/container_config_oom.json - run crioctl ctr create --config "$TESTDIR"/container_config_oom.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - # Wait for container to OOM - attempt=0 - while [ $attempt -le 100 ]; do - attempt=$((attempt+1)) - run crioctl ctr status --id "$ctr_id" - echo "$output" - if [[ "$output" =~ "OOMKilled" ]]; then - break - fi - sleep 10 - done - [[ "$output" =~ "OOMKilled" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr /etc/resolv.conf rw/ro mode" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_config_resolvconf.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Status: CONTAINER_EXITED" ]] - [[ "$output" =~ "Exit Code: 0" ]] - [[ "$output" =~ "Reason: Completed" ]] - - run crioctl ctr create --name roctr --config "$TESTDATA"/container_config_resolvconf_ro.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Status: CONTAINER_EXITED" ]] - [[ "$output" =~ "Exit Code: 1" ]] - [[ "$output" =~ "Reason: Error" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr create with non-existent command" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - newconfig=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["command"] = ["nonexistent"]; json.dump(obj, sys.stdout)') - echo "$newconfig" > "$TESTDIR"/container_nonexistent.json - run crioctl ctr create --config "$TESTDIR"/container_nonexistent.json --pod "$pod_id" - [ "$status" -ne 0 ] - [[ "$output" =~ "executable file not found" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr create with non-existent command [tty]" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - newconfig=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["command"] = ["nonexistent"]; obj["tty"] = True; json.dump(obj, sys.stdout)') - echo "$newconfig" > "$TESTDIR"/container_nonexistent.json - run crioctl ctr create --config "$TESTDIR"/container_nonexistent.json --pod "$pod_id" - [ "$status" -ne 0 ] - [[ "$output" =~ "executable file not found" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/default_mounts.bats b/test/default_mounts.bats deleted file mode 100644 index 8e727085e..000000000 --- a/test/default_mounts.bats +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -IMAGE="redis:alpine" - -function teardown() { - cleanup_test -} - -@test "bind secrets mounts to container" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl image pull "$IMAGE" - [ "$status" -eq 0 ] - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr execsync --id "$ctr_id" cat /proc/mounts - echo "$output" - [ "$status" -eq 0 ] - mount_info="$output" - run grep /container/path1 <<< "$mount_info" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "default mounts correctly sorted with other mounts" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl image pull "$IMAGE" - [ "$status" -eq 0 ] - host_path="$TESTDIR"/clash - mkdir "$host_path" - echo "clashing..." > "$host_path"/clashing.txt - sed -e "s,%HPATH%,$host_path,g" "$TESTDATA"/container_redis_default_mounts.json > "$TESTDIR"/defmounts_pre.json - sed -e 's,%CPATH%,\/container\/path1\/clash,g' "$TESTDIR"/defmounts_pre.json > "$TESTDIR"/defmounts.json - run crioctl ctr create --config "$TESTDIR"/defmounts.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr execsync --id "$ctr_id" ls -la /container/path1/clash - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" cat /container/path1/clash/clashing.txt - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "clashing..." ]] - run crioctl ctr execsync --id "$ctr_id" ls -la /container/path1 - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" cat /container/path1/test.txt - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Testing secrets mounts!" ]] - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/helpers.bash b/test/helpers.bash index 22955d333..f98e376fb 100644 --- a/test/helpers.bash +++ b/test/helpers.bash @@ -9,17 +9,9 @@ TESTDATA="${INTEGRATION_ROOT}/testdata" # Root directory of the repository. CRIO_ROOT=${CRIO_ROOT:-$(cd "$INTEGRATION_ROOT/../.."; pwd -P)} -# Path of the crio binary. -CRIO_BINARY=${CRIO_BINARY:-${CRIO_ROOT}/cri-o/bin/crio} -# Path of the crictl binary. -CRICTL_PATH=$(command -v crictl || true) -CRICTL_BINARY=${CRICTL_PATH:-/usr/bin/crictl} -# Path to kpod binary. KPOD_BINARY=${KPOD_BINARY:-${CRIO_ROOT}/cri-o/bin/kpod} # Path of the conmon binary. CONMON_BINARY=${CONMON_BINARY:-${CRIO_ROOT}/cri-o/bin/conmon} -# Path of the pause binary. -PAUSE_BINARY=${PAUSE_BINARY:-${CRIO_ROOT}/cri-o/bin/pause} # Path of the default seccomp profile. SECCOMP_PROFILE=${SECCOMP_PROFILE:-${CRIO_ROOT}/cri-o/seccomp.json} # Name of the default apparmor profile. @@ -92,7 +84,6 @@ if [ -e /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then filelabel=$(awk -F'"' '/^file.*=.*/ {print $2}' /etc/selinux/${SELINUXTYPE}/contexts/lxc_contexts) chcon -R ${filelabel} $TESTDIR fi -CRIO_SOCKET="$TESTDIR/crio.sock" CRIO_CONFIG="$TESTDIR/crio.conf" CRIO_CNI_CONFIG="$TESTDIR/cni/net.d/" CRIO_CNI_PLUGIN=${CRIO_CNI_PLUGIN:-/opt/cni/bin/} @@ -216,140 +207,6 @@ function wait_until_reachable() { retry 15 1 crictl status } -# Start crio. -function start_crio() { - if [[ -n "$1" ]]; then - seccomp="$1" - else - seccomp="$SECCOMP_PROFILE" - fi - - if [[ -n "$2" ]]; then - apparmor="$2" - else - apparmor="$APPARMOR_PROFILE" - fi - - # Don't forget: bin2img, copyimg, and crio have their own default drivers, so if you override any, you probably need to override them all - if ! [ "$3" = "--no-pause-image" ] ; then - "$BIN2IMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --source-binary "$PAUSE_BINARY" - fi - "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name=docker.io/library/redis:alpine --import-from=dir:"$ARTIFACTS_PATH"/redis-image --signature-policy="$INTEGRATION_ROOT"/policy.json -# TODO: remove the code below for copying redis:alpine in using a canonical reference once -# https://github.com/kubernetes-incubator/cri-o/issues/531 is complete and we can -# copy the image using a tagged reference and then subsequently find the image without -# having to explicitly record the canonical reference as one of the image's names - "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name=docker.io/library/redis@sha256:03789f402b2ecfb98184bf128d180f398f81c63364948ff1454583b02442f73b --import-from=dir:"$ARTIFACTS_PATH"/redis-image-digest --signature-policy="$INTEGRATION_ROOT"/policy.json - "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name=mrunalp/oom --import-from=dir:"$ARTIFACTS_PATH"/oom-image --signature-policy="$INTEGRATION_ROOT"/policy.json - "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name=docker.io/library/mrunalp/image-volume-test --import-from=dir:"$ARTIFACTS_PATH"/image-volume-test-image --signature-policy="$INTEGRATION_ROOT"/policy.json - "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name=docker.io/library/busybox:latest --import-from=dir:"$ARTIFACTS_PATH"/busybox-image --signature-policy="$INTEGRATION_ROOT"/policy.json - "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name=docker.io/library/runcom/stderr-test:latest --import-from=dir:"$ARTIFACTS_PATH"/stderr-test --signature-policy="$INTEGRATION_ROOT"/policy.json - "$CRIO_BINARY" ${DEFAULT_MOUNTS_OPTS} ${HOOKS_OPTS} --conmon "$CONMON_BINARY" --listen "$CRIO_SOCKET" --cgroup-manager "$CGROUP_MANAGER" --registry "docker.io" --runtime "$RUNTIME_BINARY" --root "$TESTDIR/crio" --runroot "$TESTDIR/crio-run" $STORAGE_OPTIONS --seccomp-profile "$seccomp" --apparmor-profile "$apparmor" --cni-config-dir "$CRIO_CNI_CONFIG" --cni-plugin-dir "$CRIO_CNI_PLUGIN" --signature-policy "$INTEGRATION_ROOT"/policy.json --image-volumes "$IMAGE_VOLUMES" --pids-limit "$PIDS_LIMIT" --log-size-max "$LOG_SIZE_MAX_LIMIT" --config /dev/null config >$CRIO_CONFIG - - # Prepare the CNI configuration files, we're running with non host networking by default - if [[ -n "$4" ]]; then - netfunc="$4" - else - netfunc="prepare_network_conf" - fi - ${netfunc} $POD_CIDR - - "$CRIO_BINARY" --log-level debug --config "$CRIO_CONFIG" & CRIO_PID=$! - wait_until_reachable - - run crictl inspecti redis:alpine - if [ "$status" -ne 0 ] ; then - crictl pull redis:alpine - fi - REDIS_IMAGEID=$(crictl inspecti redis:alpine | head -1 | sed -e "s/ID: //g") - run crictl inspecti redis@sha256:03789f402b2ecfb98184bf128d180f398f81c63364948ff1454583b02442f73b - if [ "$status" -ne 0 ] ; then - crictl pull redis@sha256:03789f402b2ecfb98184bf128d180f398f81c63364948ff1454583b02442f73b - fi - REDIS_IMAGEID_DIGESTED=$(crictl inspecti redis@sha256:03789f402b2ecfb98184bf128d180f398f81c63364948ff1454583b02442f73b | head -1 | sed -e "s/ID: //g") - run crictl inspecti mrunalp/oom - if [ "$status" -ne 0 ] ; then - crictl pull mrunalp/oom - fi - OOM_IMAGEID=$(crictl inspecti mrunalp/oom | head -1 | sed -e "s/ID: //g") - run crioctl image status --id=runcom/stderr-test - if [ "$status" -ne 0 ] ; then - crictl pull runcom/stderr-test:latest - fi - STDERR_IMAGEID=$(crictl inspecti runcom/stderr-test | head -1 | sed -e "s/ID: //g") - run crictl inspecti busybox - if [ "$status" -ne 0 ] ; then - crictl pull busybox:latest - fi - BUSYBOX_IMAGEID=$(crictl inspecti busybox | head -1 | sed -e "s/ID: //g") - run crictl inspecti mrunalp/image-volume-test - if [ "$status" -ne 0 ] ; then - crictl pull mrunalp/image-volume-test:latest - fi - VOLUME_IMAGEID=$(crictl inspecti mrunalp/image-volume-test | head -1 | sed -e "s/ID: //g") -} - -function cleanup_ctrs() { - run crictl ps --quiet - if [ "$status" -eq 0 ]; then - if [ "$output" != "" ]; then - printf '%s\n' "$output" | while IFS= read -r line - do - crictl stop "$line" - crictl rm "$line" - done - fi - fi - rm -f /run/hookscheck -} - -function cleanup_images() { - run crictl images --quiet - if [ "$status" -eq 0 ]; then - if [ "$output" != "" ]; then - printf '%s\n' "$output" | while IFS= read -r line - do - crictl rmi "$line" - done - fi - fi -} - -function cleanup_pods() { - run crictl sandboxes --quiet - if [ "$status" -eq 0 ]; then - if [ "$output" != "" ]; then - printf '%s\n' "$output" | while IFS= read -r line - do - crictl stops "$line" - crictl rms "$line" - done - fi - fi -} - -# Stop crio. -function stop_crio() { - if [ "$CRIO_PID" != "" ]; then - kill "$CRIO_PID" >/dev/null 2>&1 - wait "$CRIO_PID" - rm -f "$CRIO_CONFIG" - fi - - cleanup_network_conf -} - -function restart_crio() { - if [ "$CRIO_PID" != "" ]; then - kill "$CRIO_PID" >/dev/null 2>&1 - wait "$CRIO_PID" - start_crio - else - echo "you must start crio first" - exit 1 - fi -} - function cleanup_test() { rm -rf "$TESTDIR" } diff --git a/test/hooks.bats b/test/hooks.bats deleted file mode 100644 index 92aa725fc..000000000 --- a/test/hooks.bats +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -cp hooks/checkhook.sh ${HOOKSDIR} -sed "s|HOOKSDIR|${HOOKSDIR}|" hooks/checkhook.json > ${HOOKSDIR}/checkhook.json - -@test "pod test hooks" { - rm -f /run/hookscheck - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run cat /run/hookscheck - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/image.bats b/test/image.bats deleted file mode 100644 index 5458fe134..000000000 --- a/test/image.bats +++ /dev/null @@ -1,250 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -IMAGE=kubernetes/pause -SIGNED_IMAGE=registry.access.redhat.com/rhel7-atomic:latest -UNSIGNED_IMAGE=docker.io/library/hello-world:latest - -function teardown() { - cleanup_test -} - -@test "run container in pod with image ID" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - sed -e "s/%VALUE%/$REDIS_IMAGEID/g" "$TESTDATA"/container_config_by_imageid.json > "$TESTDIR"/ctr_by_imageid.json - run crioctl ctr create --config "$TESTDIR"/ctr_by_imageid.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "container status return image:tag if created by image ID" { - start_crio - - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - sed -e "s/%VALUE%/$REDIS_IMAGEID/g" "$TESTDATA"/container_config_by_imageid.json > "$TESTDIR"/ctr_by_imageid.json - - run crioctl ctr create --config "$TESTDIR"/ctr_by_imageid.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Image: redis:alpine" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "container status return image@digest if created by image ID" { - start_crio - - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - sed -e "s/%VALUE%/$REDIS_IMAGEID_DIGESTED/g" "$TESTDATA"/container_config_by_imageid.json > "$TESTDIR"/ctr_by_imageid.json - - run crioctl ctr create --config "$TESTDIR"/ctr_by_imageid.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "ImageRef: redis@sha256:03789f402b2ecfb98184bf128d180f398f81c63364948ff1454583b02442f73b" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "image pull and list" { - start_crio "" "" --no-pause-image - run crioctl image pull "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl image list --quiet "$IMAGE" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - imageid="$output" - - run crioctl image list --quiet @"$imageid" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - - run crioctl image list --quiet "$imageid" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - cleanup_images - stop_crio -} - -@test "image pull with signature" { - start_crio "" "" --no-pause-image - run crioctl image pull "$SIGNED_IMAGE" - echo "$output" - [ "$status" -eq 0 ] - cleanup_images - stop_crio -} - -@test "image pull without signature" { - start_crio "" "" --no-pause-image - run crioctl image pull "$UNSIGNED_IMAGE" - echo "$output" - [ "$status" -ne 0 ] - cleanup_images - stop_crio -} - -@test "image pull and list by tag and ID" { - start_crio "" "" --no-pause-image - run crioctl image pull "$IMAGE:go" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl image list --quiet "$IMAGE:go" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - imageid="$output" - - run crioctl image list --quiet @"$imageid" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - - run crioctl image list --quiet "$imageid" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - cleanup_images - stop_crio -} - -@test "image pull and list by digest and ID" { - start_crio "" "" --no-pause-image - run crioctl image pull nginx@sha256:33eb1ed1e802d4f71e52421f56af028cdf12bb3bfff5affeaf5bf0e328ffa1bc - echo "$output" - [ "$status" -eq 0 ] - - run crioctl image list --quiet nginx@sha256:33eb1ed1e802d4f71e52421f56af028cdf12bb3bfff5affeaf5bf0e328ffa1bc - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - imageid="$output" - - run crioctl image list --quiet @"$imageid" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - - run crioctl image list --quiet "$imageid" - [ "$status" -eq 0 ] - echo "$output" - [ "$output" != "" ] - - cleanup_images - stop_crio -} - -@test "image list with filter" { - start_crio "" "" --no-pause-image - run crioctl image pull "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - run crioctl image list --quiet "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - printf '%s\n' "$output" | while IFS= read -r id; do - run crioctl image remove --id "$id" - echo "$output" - [ "$status" -eq 0 ] - done - run crioctl image list --quiet - echo "$output" - [ "$status" -eq 0 ] - printf '%s\n' "$output" | while IFS= read -r id; do - echo "$id" - status=1 - done - cleanup_images - stop_crio -} - -@test "image list/remove" { - start_crio "" "" --no-pause-image - run crioctl image pull "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - run crioctl image list --quiet - echo "$output" - [ "$status" -eq 0 ] - [ "$output" != "" ] - printf '%s\n' "$output" | while IFS= read -r id; do - run crioctl image remove --id "$id" - echo "$output" - [ "$status" -eq 0 ] - done - run crioctl image list --quiet - echo "$output" - [ "$status" -eq 0 ] - [ "$output" = "" ] - printf '%s\n' "$output" | while IFS= read -r id; do - echo "$id" - status=1 - done - cleanup_images - stop_crio -} - -@test "image status/remove" { - start_crio "" "" --no-pause-image - run crioctl image pull "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - run crioctl image list --quiet - echo "$output" - [ "$status" -eq 0 ] - [ "$output" != "" ] - printf '%s\n' "$output" | while IFS= read -r id; do - run crioctl image status --id "$id" - echo "$output" - [ "$status" -eq 0 ] - [ "$output" != "" ] - run crioctl image remove --id "$id" - echo "$output" - [ "$status" -eq 0 ] - done - run crioctl image list --quiet - echo "$output" - [ "$status" -eq 0 ] - [ "$output" = "" ] - printf '%s\n' "$output" | while IFS= read -r id; do - echo "$id" - status=1 - done - cleanup_images - stop_crio -} diff --git a/test/image_remove.bats b/test/image_remove.bats deleted file mode 100644 index ca2017d00..000000000 --- a/test/image_remove.bats +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -IMAGE=docker.io/kubernetes/pause - -function teardown() { - cleanup_test -} - -@test "image remove with multiple names, by name" { - start_crio "" "" --no-pause-image - # Pull the image, giving it one name. - run crioctl image pull "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - # Add a second name to the image. - run "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name="$IMAGE":latest --add-name="$IMAGE":othertag --signature-policy="$INTEGRATION_ROOT"/policy.json - echo "$output" - [ "$status" -eq 0 ] - # Get the list of image names and IDs. - run crioctl image list - echo "$output" - [ "$status" -eq 0 ] - [ "$output" != "" ] - # Cycle through each name, removing it by name. The image that we assigned a second - # name to should still be around when we get to removing its second name. - grep ^Tag: <<< "$output" | while read -r header tag ; do - run crioctl image remove --id "$tag" - echo "$output" - [ "$status" -eq 0 ] - done - # List all images and their names. There should be none now. - run crioctl image list --quiet - echo "$output" - [ "$status" -eq 0 ] - [ "$output" = "" ] - printf '%s\n' "$output" | while IFS= read -r id; do - echo "$id" - done - # All done. - cleanup_images - stop_crio -} - -@test "image remove with multiple names, by ID" { - start_crio "" "" --no-pause-image - # Pull the image, giving it one name. - run crioctl image pull "$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - # Add a second name to the image. - run "$COPYIMG_BINARY" --root "$TESTDIR/crio" $STORAGE_OPTIONS --runroot "$TESTDIR/crio-run" --image-name="$IMAGE":latest --add-name="$IMAGE":othertag --signature-policy="$INTEGRATION_ROOT"/policy.json - echo "$output" - [ "$status" -eq 0 ] - # Get the image ID of the image we just saved. - run crioctl image status --id="$IMAGE" - echo "$output" - [ "$status" -eq 0 ] - [ "$output" != "" ] - # Try to remove the image using its ID. That should succeed because removing by ID always works. - grep ^ID: <<< "$output" | while read -r header id ; do - run crioctl image remove --id "$id" - echo "$output" - [ "$status" -eq 0 ] - done - # The image should be gone. - run crioctl image status --id="$IMAGE" - echo "$output" - [ "$status" -ne 0 ] - # All done. - cleanup_images - stop_crio -} diff --git a/test/image_volume.bats b/test/image_volume.bats deleted file mode 100644 index ff05e9cda..000000000 --- a/test/image_volume.bats +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "image volume ignore" { - IMAGE_VOLUMES=ignore start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - image_volume_config=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["image"]["image"] = "mrunalp/image-volume-test"; obj["command"] = ["/bin/sleep", "600"]; json.dump(obj, sys.stdout)') - echo "$image_volume_config" > "$TESTDIR"/container_image_volume.json - run crioctl ctr create --config "$TESTDIR"/container_image_volume.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" ls /imagevolume - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 1" ]] - [[ "$output" =~ "ls: /imagevolume: No such file or directory" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "image volume bind" { - IMAGE_VOLUMES=bind start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - image_volume_config=$(cat "$TESTDATA"/container_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["image"]["image"] = "mrunalp/image-volume-test"; obj["command"] = ["/bin/sleep", "600"]; json.dump(obj, sys.stdout)') - echo "$image_volume_config" > "$TESTDIR"/container_image_volume.json - run crioctl ctr create --config "$TESTDIR"/container_image_volume.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" touch /imagevolume/test_file - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 0" ]] - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/inspect.bats b/test/inspect.bats deleted file mode 100644 index c63a688e3..000000000 --- a/test/inspect.bats +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "info inspect" { - start_crio - out=`echo -e "GET /info HTTP/1.1\r\nHost: crio\r\n" | socat - UNIX-CONNECT:$CRIO_SOCKET` - echo "$out" - [[ "$out" =~ "\"cgroup_driver\":\"$CGROUP_MANAGER\"" ]] - [[ "$out" =~ "\"storage_root\":\"$TESTDIR/crio\"" ]] - run crioctl info - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "\"cgroup_driver\": \"$CGROUP_MANAGER\"" ]] - [[ "$output" =~ "\"storage_root\": \"$TESTDIR/crio\"" ]] - - stop_crio -} - -@test "ctr inspect" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - out=`echo -e "GET /containers/$ctr_id HTTP/1.1\r\nHost: crio\r\n" | socat - UNIX-CONNECT:$CRIO_SOCKET` - echo "$out" - [[ "$out" =~ "\"sandbox\":\"$pod_id\"" ]] - [[ "$out" =~ "\"image\":\"redis:alpine\"" ]] - - run crioctl ctr inspect --id $ctr_id - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "\"sandbox\": \"$pod_id\"" ]] - [[ "$output" =~ "\"image\": \"redis:alpine\"" ]] - - inet=`crioctl ctr execsync --id $ctr_id ip addr show dev eth0 scope global 2>&1 | grep inet` - - IFS=" " - ip=`parse_pod_ip $inet` - [[ "$out" =~ "\"ip_address\":\"$ip\"" ]] - [[ "$out" =~ "\"name\":\"k8s_container1_podsandbox1_redhat.test.crio_redhat-test-crio_1\"" ]] - [[ "$output" =~ "\"ip_address\": \"$ip\"" ]] - [[ "$output" =~ "\"name\": \"k8s_container1_podsandbox1_redhat.test.crio_redhat-test-crio_1\"" ]] - - -# TODO: add some other check based on the json below: -# -# {"name":"k8s_container1_podsandbox1_redhat.test.crio_redhat-test-crio_1","pid":27477,"image":"redis:alpine","created_time":1505223601111546169,"labels":{"batch":"no","type":"small"},"annotations":{"daemon":"crio","owner":"dragon"},"log_path":"/var/log/crio/pods/297d014ba2c54236779da0c2f80dfba45dc31b106e4cd126a1c3c6d78edc2201/81567e9573ea798d6494c9aab156103ee91b72180fd3841a7c24d2ca39886ba2.log","root":"/tmp/tmp.0bkjphWudF/crio/overlay/d7cfc1de83cab9f377a4a1542427d2a019e85a70c1c660a9e6cf9e254df68873/merged","sandbox":"297d014ba2c54236779da0c2f80dfba45dc31b106e4cd126a1c3c6d78edc2201","ip_address":"10.88.9.153"} - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "ctr inspect not found" { - start_crio - out=`echo -e "GET /containers/notexists HTTP/1.1\r\nHost: crio\r\n" | socat - UNIX-CONNECT:$CRIO_SOCKET` - echo "$out" - [[ "$out" =~ "can't find the container with id notexists" ]] - - stop_crio -} diff --git a/test/kpod_export.bats b/test/kpod_export.bats index 9454db399..a3e58c498 100644 --- a/test/kpod_export.bats +++ b/test/kpod_export.bats @@ -9,6 +9,7 @@ function teardown() { } @test "kpod export output flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_kill.bats b/test/kpod_kill.bats index 154875145..15eaef924 100644 --- a/test/kpod_kill.bats +++ b/test/kpod_kill.bats @@ -19,6 +19,7 @@ function start_sleep_container () { } @test "kill a running container by id" { + skip "Test needs to be converted to kpod run" start_crio ${KPOD_BINARY} ${KPOD_OPTIONS} pull docker.io/library/busybox:latest ctr_id=$( start_sleep_container ) @@ -35,6 +36,7 @@ function start_sleep_container () { } @test "kill a running container by id with TERM" { + skip "Test needs to be converted to kpod run" start_crio ${KPOD_BINARY} ${KPOD_OPTIONS} pull docker.io/library/busybox:latest ctr_id=$( start_sleep_container ) @@ -51,6 +53,7 @@ function start_sleep_container () { } @test "kill a running container by name" { + skip "Test needs to be converted to kpod run" start_crio ${KPOD_BINARY} ${KPOD_OPTIONS} pull docker.io/library/busybox:latest ctr_id=$( start_sleep_container ) @@ -68,6 +71,7 @@ function start_sleep_container () { } @test "kill a running container by id with a bogus signal" { + skip "Test needs to be converted to kpod run" start_crio ${KPOD_BINARY} ${KPOD_OPTIONS} pull docker.io/library/busybox:latest ctr_id=$( start_sleep_container ) diff --git a/test/kpod_logs.bats b/test/kpod_logs.bats index 1e3015566..a2d74605d 100644 --- a/test/kpod_logs.bats +++ b/test/kpod_logs.bats @@ -9,6 +9,7 @@ function teardown() { } @test "display logs for container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -30,6 +31,7 @@ function teardown() { } @test "tail three lines of logs for container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -53,6 +55,7 @@ function teardown() { } @test "display logs for container since a given time" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_mount.bats b/test/kpod_mount.bats index 237dd5848..446ec1d8d 100644 --- a/test/kpod_mount.bats +++ b/test/kpod_mount.bats @@ -9,6 +9,7 @@ function teardown() { } @test "mount" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_pause.bats b/test/kpod_pause.bats index 84321beb3..c756c6785 100644 --- a/test/kpod_pause.bats +++ b/test/kpod_pause.bats @@ -21,6 +21,7 @@ function teardown() { } @test "pause a created container by id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -46,6 +47,7 @@ function teardown() { } @test "pause a running container by id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -75,6 +77,7 @@ function teardown() { } @test "pause a running container by name" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -103,6 +106,7 @@ function teardown() { } @test "remove a paused container by id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -141,6 +145,7 @@ function teardown() { } @test "stop a paused container created by id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_ps.bats b/test/kpod_ps.bats index a4a7b6cbc..12f13fe5b 100644 --- a/test/kpod_ps.bats +++ b/test/kpod_ps.bats @@ -11,6 +11,7 @@ IMAGE="redis:alpine" } @test "kpod ps default" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -35,6 +36,7 @@ IMAGE="redis:alpine" } @test "kpod ps all flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -58,6 +60,7 @@ IMAGE="redis:alpine" } @test "kpod ps size flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -81,6 +84,7 @@ IMAGE="redis:alpine" } @test "kpod ps quiet flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -104,6 +108,7 @@ IMAGE="redis:alpine" } @test "kpod ps latest flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -127,6 +132,7 @@ IMAGE="redis:alpine" } @test "kpod ps last flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -150,6 +156,7 @@ IMAGE="redis:alpine" } @test "kpod ps no-trunc flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -170,6 +177,7 @@ IMAGE="redis:alpine" } @test "kpod ps namespace flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -192,6 +200,7 @@ IMAGE="redis:alpine" } @test "kpod ps namespace flag and format flag = json" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -212,6 +221,7 @@ IMAGE="redis:alpine" } @test "kpod ps without namespace flag and format flag = json" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -231,6 +241,7 @@ IMAGE="redis:alpine" } @test "kpod ps format flag = go template" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -251,6 +262,7 @@ IMAGE="redis:alpine" } @test "kpod ps filter flag - ancestor" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -271,6 +283,7 @@ IMAGE="redis:alpine" } @test "kpod ps filter flag - id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -292,6 +305,7 @@ IMAGE="redis:alpine" } @test "kpod ps filter flag - status" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_rename.bats b/test/kpod_rename.bats index ed3fdada1..63b723ae2 100644 --- a/test/kpod_rename.bats +++ b/test/kpod_rename.bats @@ -9,6 +9,7 @@ function teardown() { } @test "kpod rename successful" { + skip "Test needs to be converted to kpod run" start_crio run ${KPOD_BINARY} ${KPOD_OPTIONS} pull $IMAGE echo "$output" diff --git a/test/kpod_rm.bats b/test/kpod_rm.bats index 022e3efc2..30a8a9ab0 100644 --- a/test/kpod_rm.bats +++ b/test/kpod_rm.bats @@ -9,6 +9,7 @@ function teardown() { } @test "remove a stopped container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -32,6 +33,7 @@ function teardown() { } @test "refuse to remove a running container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -53,6 +55,7 @@ function teardown() { } @test "remove a created container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -70,6 +73,7 @@ function teardown() { } @test "remove a running container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_stats.bats b/test/kpod_stats.bats index a4b8e61e6..94215a15c 100644 --- a/test/kpod_stats.bats +++ b/test/kpod_stats.bats @@ -7,6 +7,7 @@ function teardown() { } @test "stats single output" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -28,6 +29,7 @@ function teardown() { } @test "stats does not output stopped container" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -46,6 +48,7 @@ function teardown() { } @test "stats outputs stopped container with all flag" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -64,6 +67,7 @@ function teardown() { } @test "stats output only id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -86,6 +90,7 @@ function teardown() { } @test "stats streaming output" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_stop.bats b/test/kpod_stop.bats index 72e818d40..2dbe404b2 100644 --- a/test/kpod_stop.bats +++ b/test/kpod_stop.bats @@ -13,6 +13,7 @@ function teardown() { } @test "stop a running container by id" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" @@ -34,6 +35,7 @@ function teardown() { } @test "stop a running container by name" { + skip "Test needs to be converted to kpod run" start_crio run crioctl pod run --config "$TESTDATA"/sandbox_config.json echo "$output" diff --git a/test/kpod_wait.bats b/test/kpod_wait.bats index ba7556b2e..8d11e634d 100644 --- a/test/kpod_wait.bats +++ b/test/kpod_wait.bats @@ -24,6 +24,7 @@ function container_start() { } @test "wait on a bogus container" { + skip "Needs to be converted to kpod run" start_crio run ${KPOD_BINARY} ${KPOD_OPTIONS} wait 12343 echo $output @@ -32,6 +33,7 @@ function container_start() { } @test "wait on a stopped container" { + skip "Needs to be converted to kpod run" run ${KPOD_BINARY} ${KPOD_OPTIONS} pull docker.io/library/busybox:latest echo $output [ "$status" -eq 0 ] @@ -49,6 +51,7 @@ function container_start() { } @test "wait on a sleeping container" { + skip "Needs to be converted to kpod run" run ${KPOD_BINARY} ${KPOD_OPTIONS} pull docker.io/library/busybox:latest echo $output [ "$status" -eq 0 ] diff --git a/test/network.bats b/test/network.bats deleted file mode 100644 index dc8143c26..000000000 --- a/test/network.bats +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_ctrs - cleanup_pods - stop_crio - rm -f /var/lib/cni/networks/crionet_test_args/* - chmod 0755 $CONMON_BINARY - cleanup_test -} - -@test "ensure correct hostname" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl ctr execsync --id "$ctr_id" sh -c "hostname" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "crioctl_host" ]] - run crioctl ctr execsync --id "$ctr_id" sh -c "echo \$HOSTNAME" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "crioctl_host" ]] - run crioctl ctr execsync --id "$ctr_id" sh -c "cat /etc/hostname" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "crioctl_host" ]] -} - -@test "ensure correct hostname for hostnetwork:true" { - start_crio - hostnetworkconfig=$(cat "$TESTDATA"/sandbox_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["linux"]["security_context"]["namespace_options"]["host_network"] = True; obj["annotations"] = {}; obj["hostname"] = ""; json.dump(obj, sys.stdout)') - echo "$hostnetworkconfig" > "$TESTDIR"/sandbox_hostnetwork_config.json - run crioctl pod run --config "$TESTDIR"/sandbox_hostnetwork_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl ctr execsync --id "$ctr_id" sh -c "hostname" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "$HOSTNAME" ]] - run crioctl ctr execsync --id "$ctr_id" sh -c "echo \$HOSTNAME" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "$HOSTNAME" ]] - run crioctl ctr execsync --id "$ctr_id" sh -c "cat /etc/hostname" - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "$HOSTNAME" ]] -} - -@test "Check for valid pod netns CIDR" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - check_pod_cidr $ctr_id -} - -@test "Ping pod from the host" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - ping_pod $ctr_id -} - -@test "Ping pod from another pod" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod1_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod1_id" - echo "$output" - [ "$status" -eq 0 ] - ctr1_id="$output" - - temp_sandbox_conf cni_test - - run crioctl pod run --config "$TESTDIR"/sandbox_config_cni_test.json - echo "$output" - [ "$status" -eq 0 ] - pod2_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod2_id" - echo "$output" - [ "$status" -eq 0 ] - ctr2_id="$output" - - ping_pod_from_pod $ctr1_id $ctr2_id - - ping_pod_from_pod $ctr2_id $ctr1_id -} - -@test "Ensure correct CNI plugin namespace/name/container-id arguments" { - start_crio "" "" "" "prepare_plugin_test_args_network_conf" - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - [ "$status" -eq 0 ] - - . /tmp/plugin_test_args.out - - [ "$FOUND_CNI_CONTAINERID" != "redhat.test.crio" ] - [ "$FOUND_CNI_CONTAINERID" != "podsandbox1" ] - [ "$FOUND_K8S_POD_NAMESPACE" = "redhat.test.crio" ] - [ "$FOUND_K8S_POD_NAME" = "podsandbox1" ] - - rm -rf /tmp/plugin_test_args.out -} - -@test "Connect to pod hostport from the host" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config_hostport.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - get_host_ip - echo $host_ip - - run crioctl ctr create --config "$TESTDATA"/container_config_hostport.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run nc -w 5 $host_ip 4888 "$TESTDIR"/sandbox_wrong_cgroup_parent.json - - start_crio - run crioctl pod run --config "$TESTDIR"/sandbox_wrong_cgroup_parent.json - echo "$output" - [ "$status" -eq 1 ] - - stop_crio -} - -@test "systemd cgroup_parent correctly set" { - if [[ "$CGROUP_MANAGER" != "systemd" ]]; then - skip "need systemd cgroup manager" - fi - - cgroup_parent_config=$(cat "$TESTDATA"/sandbox_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["linux"]["cgroup_parent"] = "/Burstable/pod_integration_tests-123"; json.dump(obj, sys.stdout)') - echo "$cgroup_parent_config" > "$TESTDIR"/sandbox_systemd_cgroup_parent.json - - start_crio - run crioctl pod run --config "$TESTDIR"/sandbox_systemd_cgroup_parent.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run systemctl list-units --type=slice - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Burstable-pod_integration_tests_123.slice" ]] - - cleanup_pods - stop_crio -} diff --git a/test/restore.bats b/test/restore.bats deleted file mode 100644 index 264096ed8..000000000 --- a/test/restore.bats +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "crio restore" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl pod list --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - pod_list_info="$output" - - run crioctl pod status --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - pod_status_info="$output" - - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr list --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_list_info="$output" - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_status_info="$output" - - stop_crio - - start_crio - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" != "" ]] - [[ "${output}" =~ "${pod_id}" ]] - - run crioctl pod list --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" == "${pod_list_info}" ]] - - run crioctl pod status --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" == "${pod_status_info}" ]] - - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" != "" ]] - [[ "${output}" =~ "${ctr_id}" ]] - - run crioctl ctr list --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" == "${ctr_list_info}" ]] - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" == "${ctr_status_info}" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "crio restore with bad state and pod stopped" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - stop_crio - - # simulate reboot with runc state going away - for i in $("$RUNTIME" list -q | xargs); do "$RUNTIME" delete -f $i; done - - start_crio - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_pods - stop_crio -} - -@test "crio restore with bad state and ctr stopped" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - stop_crio - - # simulate reboot with runc state going away - for i in $("$RUNTIME" list -q | xargs); do "$RUNTIME" delete -f $i; done - - start_crio - - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "crio restore with bad state and ctr removed" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl ctr remove --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - stop_crio - - # simulate reboot with runc state going away - for i in $("$RUNTIME" list -q | xargs); do "$RUNTIME" delete -f $i; done - - start_crio - - run crioctl ctr stop --id "$ctr_id" - echo "$output" - [ "$status" -eq 1 ] - [[ "${output}" =~ "not found" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -@test "crio restore with bad state and pod removed" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - stop_crio - - # simulate reboot with runc state going away - for i in $("$RUNTIME" list -q | xargs); do "$RUNTIME" delete -f $i; done - - start_crio - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_pods - stop_crio -} - -@test "crio restore with bad state" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - - run crioctl pod status --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" =~ "SANDBOX_READY" ]] - - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" =~ "CONTAINER_CREATED" ]] - - stop_crio - - # simulate reboot with runc state going away - for i in $("$RUNTIME" list -q | xargs); do "$RUNTIME" delete -f $i; done - - start_crio - run crioctl pod list - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" != "" ]] - [[ "${output}" =~ "${pod_id}" ]] - - run crioctl pod status --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" =~ "SANDBOX_NOTREADY" ]] - - run crioctl ctr list - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" != "" ]] - [[ "${output}" =~ "${ctr_id}" ]] - - run crioctl ctr status --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - [[ "${output}" =~ "CONTAINER_EXITED" ]] - [[ "${output}" =~ "Exit Code: 255" ]] - - run crioctl pod stop --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl pod remove --id "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/runtimeversion.bats b/test/runtimeversion.bats deleted file mode 100644 index f0d2a4367..000000000 --- a/test/runtimeversion.bats +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "crioctl runtimeversion" { - start_crio - run crioctl runtimeversion - echo "$output" - [ "$status" -eq 0 ] - stop_crio -} diff --git a/test/seccomp.bats b/test/seccomp.bats deleted file mode 100644 index b77a7f8cf..000000000 --- a/test/seccomp.bats +++ /dev/null @@ -1,368 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -# 1. test running with ctr unconfined -# test that we can run with a syscall which would be otherwise blocked -@test "ctr seccomp profiles unconfined" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"container\.seccomp\.security\.alpha\.kubernetes\.io\/testname": "unconfined"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp1.json - run crioctl pod run --name seccomp1 --config "$TESTDIR"/seccomp1.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 2. test running with ctr runtime/default -# test that we cannot run with a syscall blocked by the default seccomp profile -@test "ctr seccomp profiles runtime/default" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"container\.seccomp\.security\.alpha\.kubernetes\.io\/testname2": "runtime\/default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp2.json - run crioctl pod run --name seccomp2 --config "$TESTDIR"/seccomp2.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname2 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 1" ]] - [[ "$output" =~ "Operation not permitted" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 3. test running with ctr wrong profile name -@test "ctr seccomp profiles wrong profile name" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"container\.seccomp\.security\.alpha\.kubernetes\.io\/testname3": "notgood"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp3.json - run crioctl pod run --name seccomp3 --config "$TESTDIR"/seccomp3.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname3 --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -ne 0 ] - [[ "$output" =~ "unknown seccomp profile option:" ]] - [[ "$output" =~ "notgood" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# TODO(runcom): need https://issues.k8s.io/36997 -# 4. test running with ctr localhost/profile_name -@test "ctr seccomp profiles localhost/profile_name" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - #sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - #sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - #sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - #start_crio "$TESTDIR"/seccomp_profile1.json - - skip "need https://issues.k8s.io/36997" -} - -# 5. test running with unkwown ctr profile falls back to pod profile -# unknown ctr -> unconfined -# pod -> runtime/default -# result: fail chmod -@test "ctr seccomp profiles falls back to pod profile" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"container\.seccomp\.security\.alpha\.kubernetes\.io\/redhat\.test\.crio-seccomp2-1-testname2-0-not-exists": "unconfined", "seccomp\.security\.alpha\.kubernetes\.io\/pod": "runtime\/default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp5.json - run crioctl pod run --name seccomp5 --config "$TESTDIR"/seccomp5.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 1" ]] - [[ "$output" =~ "Operation not permitted" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 6. test running with unkwown ctr profile and no pod, falls back to unconfined -# unknown ctr -> runtime/default -# pod -> NO -# result: success, running unconfined -@test "ctr seccomp profiles falls back to unconfined" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"container\.seccomp\.security\.alpha\.kubernetes\.io\/redhat\.test\.crio-seccomp6-1-testname6-0-not-exists": "runtime-default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp6.json - run crioctl pod run --name seccomp6 --config "$TESTDIR"/seccomp6.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname6 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 1. test running with pod unconfined -# test that we can run with a syscall which would be otherwise blocked -@test "pod seccomp profiles unconfined" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"seccomp\.security\.alpha\.kubernetes\.io\/pod": "unconfined"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp1.json - run crioctl pod run --name seccomp1 --config "$TESTDIR"/seccomp1.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 2. test running with pod runtime/default -# test that we cannot run with a syscall blocked by the default seccomp profile -@test "pod seccomp profiles runtime/default" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"seccomp\.security\.alpha\.kubernetes\.io\/pod": "runtime\/default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp2.json - run crioctl pod run --name seccomp2 --config "$TESTDIR"/seccomp2.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 1" ]] - [[ "$output" =~ "Operation not permitted" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# 3. test running with pod wrong profile name -@test "pod seccomp profiles wrong profile name" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - # 3. test running with pod wrong profile name - sed -e 's/%VALUE%/,"seccomp\.security\.alpha\.kubernetes\.io\/pod": "notgood"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp3.json - run crioctl pod run --name seccomp3 --config "$TESTDIR"/seccomp3.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id" - echo "$output" - [ "$status" -ne 0 ] - [[ "$output" =~ "unknown seccomp profile option:" ]] - [[ "$output" =~ "notgood" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} - -# TODO(runcom): need https://issues.k8s.io/36997 -# 4. test running with pod localhost/profile_name -@test "pod seccomp profiles localhost/profile_name" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - #sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - #sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - #sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - #start_crio "$TESTDIR"/seccomp_profile1.json - - skip "need https://issues.k8s.io/36997" -} - -# test running with ctr docker/default -# test that we cannot run with a syscall blocked by the default seccomp profile -@test "ctr seccomp profiles docker/default" { - # this test requires seccomp, so skip this test if seccomp is not enabled. - enabled=$(is_seccomp_enabled) - if [[ "$enabled" -eq 0 ]]; then - skip "skip this test since seccomp is not enabled." - fi - - sed -e 's/"chmod",//' "$CRIO_ROOT"/cri-o/seccomp.json > "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmod",//' "$TESTDIR"/seccomp_profile1.json - sed -i 's/"fchmodat",//g' "$TESTDIR"/seccomp_profile1.json - - start_crio "$TESTDIR"/seccomp_profile1.json - - sed -e 's/%VALUE%/,"container\.seccomp\.security\.alpha\.kubernetes\.io\/testname2": "docker\/default"/g' "$TESTDATA"/sandbox_config_seccomp.json > "$TESTDIR"/seccomp2.json - run crioctl pod run --name seccomp2 --config "$TESTDIR"/seccomp2.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --name testname2 --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - run crioctl ctr execsync --id "$ctr_id" chmod 777 . - echo "$output" - [ "$status" -eq 0 ] - [[ "$output" =~ "Exit code: 1" ]] - [[ "$output" =~ "Operation not permitted" ]] - - cleanup_ctrs - cleanup_pods - stop_crio -} diff --git a/test/selinux.bats b/test/selinux.bats deleted file mode 100644 index 1617e5546..000000000 --- a/test/selinux.bats +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env bats - -load helpers - -function teardown() { - cleanup_test -} - -@test "ctr termination reason Completed" { - start_crio - run crioctl pod run --config "$TESTDATA"/sandbox_config_selinux.json - echo "$output" - [ "$status" -eq 0 ] - pod_id="$output" - run crioctl ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" - echo "$output" - [ "$status" -eq 0 ] - ctr_id="$output" - run crioctl ctr start --id "$ctr_id" - echo "$output" - [ "$status" -eq 0 ] - - cleanup_ctrs - cleanup_pods - stop_crio -} -- cgit v1.2.3-54-g00ecf