aboutsummaryrefslogtreecommitdiff
path: root/test/pod.bats
diff options
context:
space:
mode:
Diffstat (limited to 'test/pod.bats')
-rw-r--r--test/pod.bats365
1 files changed, 365 insertions, 0 deletions
diff --git a/test/pod.bats b/test/pod.bats
new file mode 100644
index 000000000..2b5837903
--- /dev/null
+++ b/test/pod.bats
@@ -0,0 +1,365 @@
+#!/usr/bin/env bats
+
+load helpers
+
+function teardown() {
+ cleanup_test
+}
+
+# PR#59
+@test "pod release name on remove" {
+ start_crio
+ run crioctl pod run --config "$TESTDATA"/sandbox_config.json
+ echo "$output"
+ [ "$status" -eq 0 ]
+ id="$output"
+ run crioctl pod stop --id "$id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ run crioctl pod remove --id "$id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ run crioctl pod run --config "$TESTDATA"/sandbox_config.json
+ echo "$output"
+ [ "$status" -eq 0 ]
+ id="$output"
+ run crioctl pod stop --id "$id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ run crioctl pod remove --id "$id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ cleanup_ctrs
+ cleanup_pods
+ stop_crio
+}
+
+@test "pod 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 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 "pod stop ignores not found sandboxes" {
+ 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 ]
+
+ run crioctl pod stop --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+
+ cleanup_ctrs
+ cleanup_pods
+ stop_crio
+}
+
+@test "pod list filtering" {
+ start_crio
+ run crioctl pod run --config "$TESTDATA"/sandbox_config.json -name pod1 --label "a=b" --label "c=d" --label "e=f"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ pod1_id="$output"
+ run crioctl pod run --config "$TESTDATA"/sandbox_config.json -name pod2 --label "a=b" --label "c=d"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ pod2_id="$output"
+ run crioctl pod run --config "$TESTDATA"/sandbox_config.json -name pod3 --label "a=b"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ pod3_id="$output"
+ run crioctl pod list --label "a=b" --label "c=d" --label "e=f" --quiet
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod1_id" ]]
+ run crioctl pod list --label "g=h" --quiet
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" == "" ]]
+ run crioctl pod list --label "a=b" --label "c=d" --quiet
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod1_id" ]]
+ [[ "$output" =~ "$pod2_id" ]]
+ run crioctl pod list --label "a=b" --quiet
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod1_id" ]]
+ [[ "$output" =~ "$pod2_id" ]]
+ [[ "$output" =~ "$pod3_id" ]]
+ run crioctl pod list --id "$pod1_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod1_id" ]]
+ # filter by truncated id should work as well
+ run crioctl pod list --id "${pod1_id:0:4}"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod1_id" ]]
+ run crioctl pod list --id "$pod2_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod2_id" ]]
+ run crioctl pod list --id "$pod3_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod3_id" ]]
+ run crioctl pod list --id "$pod1_id" --label "a=b"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod1_id" ]]
+ run crioctl pod list --id "$pod2_id" --label "a=b"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod2_id" ]]
+ run crioctl pod list --id "$pod3_id" --label "a=b"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" != "" ]]
+ [[ "$output" =~ "$pod3_id" ]]
+ run crioctl pod list --id "$pod3_id" --label "c=d"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" == "" ]]
+ 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_pods
+ stop_crio
+}
+
+@test "pod 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 pod list --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ # TODO: expected value should not hard coded here
+ [[ "$output" =~ "Name: podsandbox1" ]]
+ [[ "$output" =~ "UID: redhat-test-crio" ]]
+ [[ "$output" =~ "Namespace: redhat.test.crio" ]]
+ [[ "$output" =~ "Attempt: 1" ]]
+
+ run crioctl pod status --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ # TODO: expected value should not hard coded here
+ [[ "$output" =~ "Name: podsandbox1" ]]
+ [[ "$output" =~ "UID: redhat-test-crio" ]]
+ [[ "$output" =~ "Namespace: redhat.test.crio" ]]
+ [[ "$output" =~ "Attempt: 1" ]]
+
+ cleanup_pods
+ stop_crio
+}
+
+@test "pass pod sysctls to runtime" {
+ start_crio
+ run crioctl pod run --config "$TESTDATA"/sandbox_config.json
+ echo "$output"
+ [ "$status" -eq 0 ]
+ pod_id="$output"
+
+ run crioctl ctr create --pod "$pod_id" --config "$TESTDATA"/container_redis.json
+ echo "$output"
+ [ "$status" -eq 0 ]
+ container_id="$output"
+
+ run crioctl ctr start --id "$container_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+
+ run crioctl ctr execsync --id "$container_id" sysctl kernel.shm_rmid_forced
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" =~ "kernel.shm_rmid_forced = 1" ]]
+
+ run crioctl ctr execsync --id "$container_id" sysctl kernel.msgmax
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" =~ "kernel.msgmax = 8192" ]]
+
+ run crioctl ctr execsync --id "$container_id" sysctl net.ipv4.ip_local_port_range
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [[ "$output" =~ "net.ipv4.ip_local_port_range = 1024 65000" ]]
+
+ cleanup_pods
+ stop_crio
+}
+
+@test "pod stop idempotent" {
+ 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 stop --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+
+ cleanup_ctrs
+ cleanup_pods
+ stop_crio
+}
+
+@test "pod remove idempotent" {
+ 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 ]
+ run crioctl pod remove --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+
+ cleanup_ctrs
+ cleanup_pods
+ stop_crio
+}
+
+@test "pod stop idempotent with ctrs already 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 start --id "$ctr_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ run crioctl pod stop --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+
+ cleanup_ctrs
+ cleanup_pods
+ stop_crio
+}
+
+@test "restart crio and still get pod status" {
+ 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 ]
+
+ restart_crio
+ run crioctl pod status --id "$pod_id"
+ echo "$output"
+ [ "$status" -eq 0 ]
+ [ "$output" != "" ]
+
+ cleanup_ctrs
+ cleanup_pods
+ stop_crio
+}
+
+@test "invalid systemd cgroup_parent fail" {
+ if [[ "$CGROUP_MANAGER" != "systemd" ]]; then
+ skip "need systemd cgroup manager"
+ fi
+
+ wrong_cgroup_parent_config=$(cat "$TESTDATA"/sandbox_config.json | python -c 'import json,sys;obj=json.load(sys.stdin);obj["linux"]["cgroup_parent"] = "podsandbox1.slice:container:infra"; json.dump(obj, sys.stdout)')
+ echo "$wrong_cgroup_parent_config" > "$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
+}