github.com/kata-containers/tests@v0.0.0-20240307153542-772105b56064/metrics/density/k8s-sysbench.sh (about)

     1  #!/bin/bash
     2  #
     3  # Copyright (c) 2022 Intel Corporation
     4  #
     5  # SPDX-License-Identifier: Apache-2.0
     6  
     7  set -o errexit
     8  set -o nounset
     9  set -o pipefail
    10  
    11  SCRIPT_PATH=$(dirname "$(readlink -f "$0")")
    12  
    13  source "${SCRIPT_PATH}/../../.ci/lib.sh"
    14  source "${SCRIPT_PATH}/../lib/common.bash"
    15  sysbench_file=$(mktemp sysbenchresults.XXXXXXXXXX)
    16  TEST_NAME="${TEST_NAME:-sysbench}"
    17  CI_JOB="${CI_JOB:-}"
    18  IMAGE="docker.io/library/local-sysbench:latest"
    19  DOCKERFILE="${SCRIPT_PATH}/sysbench-dockerfile/Dockerfile"
    20  
    21  function remove_tmp_file() {
    22  	rm -rf "${sysbench_file}"
    23  }
    24  
    25  trap remove_tmp_file EXIT
    26  
    27  function sysbench_memory() {
    28  	kubectl exec -i "$pod_name" -- sh -c "sysbench memory --threads=2 run" > "${sysbench_file}"
    29  	metrics_json_init
    30  	local memory_latency_sum=$(cat "$sysbench_file" | grep sum | cut -f2 -d':' | sed 's/[[:blank:]]//g')
    31  	metrics_json_start_array
    32  	local json="$(cat << EOF
    33  	{
    34  		"memory-latency-sum": {
    35  			"Result" : $memory_latency_sum,
    36  			"Units" : "ms"
    37  		}
    38  	}
    39  EOF
    40  )"
    41  	metrics_json_add_array_element "$json"
    42  	metrics_json_end_array "Results"
    43  	metrics_json_save
    44  }
    45  
    46  function sysbench_start_deployment() {
    47  	cmds=("bc" "jq")
    48  	check_cmds "${cmds[@]}"
    49  
    50  	# Check no processes are left behind
    51  	check_processes
    52  
    53  	if [ -z "${CI_JOB}" ]; then
    54  		# Start kubernetes
    55  		start_kubernetes
    56  	fi
    57  
    58  	export KUBECONFIG="$HOME/.kube/config"
    59  	export pod_name="test-sysbench"
    60  
    61  	kubectl create -f "${SCRIPT_PATH}/runtimeclass_workloads/sysbench-pod.yaml"
    62  	kubectl wait --for=condition=Ready --timeout=120s pod "$pod_name"
    63  
    64  }
    65  
    66  function sysbench_cleanup() {
    67  	kubectl delete pod "$pod_name"
    68  	if [ -z "${CI_JOB}" ]; then
    69  		end_kubernetes
    70  		check_processes
    71  	fi
    72  }
    73  
    74  function main() {
    75  	init_env
    76  	sysbench_start_deployment
    77  	sysbench_memory
    78  	sysbench_cleanup
    79  }
    80  
    81  main "$@"