mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-06-26 15:32:30 +00:00
tests: Add a simple test to check the VMM vcpu allocation
As we've done some changes in the VMM vcpu allocation, let's introduce basic tests to make sure that we're getting the expected behaviour. The test consists in checking 3 scenarios: * default_vcpus = 0 | no limits set * this should allocate 1 vcpu * default_vcpus = 0.75 | limits set to 0.25 * this should allocate 1 vcpu * default_vcpus = 0.75 | limits set to 1.2 * this should allocate 2 vcpus The tests are very basic, but they do ensure we're rounding things up to what the new logic is supposed to do. Signed-off-by: Fabiano Fidêncio <fabiano.fidencio@intel.com>
This commit is contained in:
parent
5e9cf75937
commit
849253e55c
@ -117,9 +117,11 @@ function deploy_kata() {
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[4].value' --tag '!!str' "true"
|
||||
# Let the `kata-deploy` create the default `kata` runtime class
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[5].value' --tag '!!str' "true"
|
||||
# Enable 'default_vcpus' hypervisor annotation
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[6].value' "default_vcpus"
|
||||
|
||||
if [ "${KATA_HOST_OS}" = "cbl-mariner" ]; then
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[6].value' "initrd kernel"
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[6].value' "initrd kernel default_vcpus"
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[+].name' "HOST_OS"
|
||||
yq write -i "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" 'spec.template.spec.containers[0].env[-1].value' "${KATA_HOST_OS}"
|
||||
fi
|
||||
|
@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env bats
|
||||
#
|
||||
# Copyright (c) 2023 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
||||
load "${BATS_TEST_DIRNAME}/../../common.bash"
|
||||
load "${BATS_TEST_DIRNAME}/tests_common.sh"
|
||||
|
||||
setup() {
|
||||
[ "${KATA_HYPERVISOR}" == "dragonball" ] && \
|
||||
skip "runtime-rs is still using the old vcpus allocation algorithm, skipping the test"
|
||||
|
||||
get_pod_config_dir
|
||||
pods=( "vcpus-less-than-one-with-no-limits" "vcpus-less-than-one-with-limits" "vcpus-more-than-one-with-limits" )
|
||||
expected_vcpus=( 1 1 2 )
|
||||
}
|
||||
|
||||
@test "Check the number vcpus are correctly allocated to the sandbox" {
|
||||
# Create the pods
|
||||
kubectl create -f "${pod_config_dir}/pod-sandbox-vcpus-allocation.yaml"
|
||||
|
||||
# Check the pods
|
||||
for i in {0..2}; do
|
||||
kubectl wait --for=jsonpath='{.status.conditions[0].reason}'=PodCompleted --timeout=$timeout pod ${pods[$i]}
|
||||
[ `kubectl logs ${pods[$i]}` -eq ${expected_vcpus[$i]} ]
|
||||
done
|
||||
}
|
||||
|
||||
teardown() {
|
||||
[ "${KATA_HYPERVISOR}" == "dragonball" ] && \
|
||||
skip "runtime-rs is still using the old vcpus allocation algorithm, skipping the test"
|
||||
|
||||
for pod in "${pods[@]}"; do
|
||||
kubectl logs ${pod}
|
||||
done
|
||||
|
||||
kubectl delete -f "${pod_config_dir}/pod-sandbox-vcpus-allocation.yaml"
|
||||
}
|
@ -60,6 +60,7 @@ else
|
||||
K8S_TEST_NORMAL_HOST_UNION=( \
|
||||
"k8s-number-cpus.bats" \
|
||||
"k8s-parallel.bats" \
|
||||
"k8s-sandbox-vcpus-allocation.bats" \
|
||||
"k8s-scale-nginx.bats" \
|
||||
)
|
||||
|
||||
|
@ -0,0 +1,54 @@
|
||||
#
|
||||
# Copyright (c) 2023 Intel Corporation
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: vcpus-less-than-one-with-no-limits
|
||||
annotations:
|
||||
io.katacontainers.config.hypervisor.default_vcpus: "0"
|
||||
spec:
|
||||
runtimeClassName: kata
|
||||
containers:
|
||||
- name: vcpus-less-than-one-with-no-limits
|
||||
image: quay.io/prometheus/busybox:latest
|
||||
command: ['nproc', '--all']
|
||||
restartPolicy: Never
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: vcpus-less-than-one-with-limits
|
||||
annotations:
|
||||
io.katacontainers.config.hypervisor.default_vcpus: "0.75"
|
||||
spec:
|
||||
runtimeClassName: kata
|
||||
containers:
|
||||
- name: vcpus-less-than-one-with-limits
|
||||
image: quay.io/prometheus/busybox:latest
|
||||
resources:
|
||||
limits:
|
||||
cpu: "0.25"
|
||||
command: ['nproc', '--all']
|
||||
restartPolicy: Never
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: vcpus-more-than-one-with-limits
|
||||
annotations:
|
||||
io.katacontainers.config.hypervisor.default_vcpus: "0.75"
|
||||
spec:
|
||||
runtimeClassName: kata
|
||||
containers:
|
||||
- name: vcpus-more-than-one-with-limits
|
||||
image: quay.io/prometheus/busybox:latest
|
||||
resources:
|
||||
limits:
|
||||
cpu: "1.2"
|
||||
command: ['nproc', '--all']
|
||||
restartPolicy: Never
|
||||
---
|
Loading…
Reference in New Issue
Block a user