65527da361
The main purpose of these tests is to make sure that the log actually contains output from the container. We don't test the timestamps or the stream that's stated at the moment. Signed-off-by: Aleksa Sarai <asarai@suse.de>
476 lines
12 KiB
Bash
476 lines
12 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers
|
|
|
|
function teardown() {
|
|
cleanup_test
|
|
}
|
|
|
|
@test "ctr remove" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr remove --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod stop --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod remove --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr lifecycle" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic pod list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr status --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr status --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr stop --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr status --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr remove --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod stop --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod remove --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr logging" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic pod list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
# Create a new container.
|
|
newconfig=$(mktemp --tmpdir ocid-config.XXXXXX.json)
|
|
cp "$TESTDATA"/container_config_logging.json "$newconfig"
|
|
sed -i 's|"%echooutput%"|"here", "is", "some", "output"|' "$newconfig"
|
|
run ocic ctr create --config "$newconfig" --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr stop --id "$ctr_id"
|
|
echo "$output"
|
|
# Ignore errors on stop.
|
|
run ocic ctr status --id "$ctr_id"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr remove --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
# Check that the output is what we expect.
|
|
run cat "$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log"
|
|
echo "$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log ::" "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" == *"here is some output" ]]
|
|
|
|
run ocic pod stop --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod remove --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr logging [tty=true]" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic pod list
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
# Create a new container.
|
|
newconfig=$(mktemp --tmpdir ocid-config.XXXXXX.json)
|
|
cp "$TESTDATA"/container_config_logging.json "$newconfig"
|
|
sed -i 's|"%echooutput%"|"here", "is", "some", "output"|' "$newconfig"
|
|
sed -i 's|"tty": false,|"tty": true,|' "$newconfig"
|
|
run ocic ctr create --config "$newconfig" --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr stop --id "$ctr_id"
|
|
echo "$output"
|
|
# Ignore errors on stop.
|
|
run ocic ctr status --id "$ctr_id"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr remove --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
# Check that the output is what we expect.
|
|
run cat "$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log"
|
|
echo "$DEFAULT_LOG_PATH/$pod_id/$ctr_id.log ::" "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" == *"here is some output" ]]
|
|
|
|
run ocic pod stop --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod remove --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
# regression test for #127
|
|
@test "ctrs status for a pod" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
run ocic ctr list --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "${output}" != "" ]]
|
|
|
|
printf '%s\n' "$output" | while IFS= read -r id
|
|
do
|
|
run ocic ctr status --id "$id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
done
|
|
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr list filtering" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json --name pod1
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod1_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod1_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr1_id="$output"
|
|
run ocic ctr start --id "$ctr1_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json --name pod2
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod2_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod2_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr2_id="$output"
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json --name pod3
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod3_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod3_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr3_id="$output"
|
|
run ocic ctr start --id "$ctr3_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr stop --id "$ctr3_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr list --id "$ctr1_id" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr1_id" ]]
|
|
run ocic ctr list --id "${ctr1_id:0:4}" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr1_id" ]]
|
|
run ocic ctr list --id "$ctr2_id" --pod "$pod2_id" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr2_id" ]]
|
|
run ocic ctr list --id "$ctr2_id" --pod "$pod3_id" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" == "" ]]
|
|
run ocic ctr list --state created --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr2_id" ]]
|
|
run ocic ctr list --state running --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr1_id" ]]
|
|
run ocic ctr list --state stopped --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr3_id" ]]
|
|
run ocic ctr list --pod "$pod1_id" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr1_id" ]]
|
|
run ocic ctr list --pod "$pod2_id" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr2_id" ]]
|
|
run ocic ctr list --pod "$pod3_id" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr3_id" ]]
|
|
run ocic pod remove --id "$pod1_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod remove --id "$pod2_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic pod remove --id "$pod3_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr list label filtering" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic 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 ocic 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 ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id" --name ctr3 --label "a=b"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr3_id="$output"
|
|
run ocic 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 ocic ctr list --label "tier=frontend" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" == "" ]]
|
|
run ocic ctr list --label "a=b" --label "c=d" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr1_id" ]]
|
|
[[ "$output" =~ "$ctr2_id" ]]
|
|
run ocic ctr list --label "a=b" --quiet
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" != "" ]]
|
|
[[ "$output" =~ "$ctr1_id" ]]
|
|
[[ "$output" =~ "$ctr2_id" ]]
|
|
[[ "$output" =~ "$ctr3_id" ]]
|
|
run ocic pod remove --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr metadata in list & status" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_config.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
|
|
run ocic 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 ocic 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_ocid
|
|
}
|
|
|
|
@test "ctr execsync" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr execsync --id "$ctr_id" echo HELLO
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" =~ "HELLO" ]]
|
|
run ocic ctr execsync --id "$ctr_id" --timeout 1 sleep 10
|
|
echo "$output"
|
|
[[ "$output" =~ "command timed out" ]]
|
|
run ocic pod remove --id "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr execsync failure" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr execsync --id "$ctr_id" doesnotexist
|
|
echo "$output"
|
|
[ "$status" -ne 0 ]
|
|
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|
|
|
|
@test "ctr stop idempotent" {
|
|
start_ocid
|
|
run ocic pod run --config "$TESTDATA"/sandbox_config.json
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
pod_id="$output"
|
|
run ocic ctr create --config "$TESTDATA"/container_redis.json --pod "$pod_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
ctr_id="$output"
|
|
run ocic ctr start --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr stop --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
run ocic ctr stop --id "$ctr_id"
|
|
echo "$output"
|
|
[ "$status" -eq 0 ]
|
|
|
|
cleanup_ctrs
|
|
cleanup_pods
|
|
stop_ocid
|
|
}
|