aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xkud/tests/cmk.sh32
1 files changed, 19 insertions, 13 deletions
diff --git a/kud/tests/cmk.sh b/kud/tests/cmk.sh
index 1a14b5b8..e8e77c6c 100755
--- a/kud/tests/cmk.sh
+++ b/kud/tests/cmk.sh
@@ -1,4 +1,7 @@
#!/bin/bash
+
+source _common.sh
+
ENV=$(kubectl get nodes --all-namespaces | wc -l)
if [[ $ENV -gt 2 ]]; then
COMPUTE_NODE=$(kubectl get nodes --all-namespaces | grep -v master | awk 'NR==2{print $1}')
@@ -31,13 +34,11 @@ function wait_for_pod_up {
done
}
-
function start_nginx_pod {
kubectl delete deployment -n default nginx --ignore-not-found=true
kubectl create deployment nginx --image=nginx
- sleep 2
+ kubectl wait deployment nginx --for=condition=available
nginx_pod=$(kubectl get pods --all-namespaces| grep nginx | awk 'NR==1{print $2}')
- wait_for_pod_up $nginx_pod
kubectl delete deployment -n default nginx --ignore-not-found=true
pod_status="Running"
until [[ $pod_status == "" ]]; do
@@ -59,8 +60,8 @@ for ((i=0;i<$num;i++)); do
echo "##################################"
if [ "${case[$POOL]}" == "exclusive" ]; then
echo "TC: to allocate ${case[$CORE]} CPU(s) from pool of ${case[$POOL]} on node of ${case[$NODE]}"
- TOTAL=$(kubectl get cmk-nodereport ${case[$NODE]} -o json | jq .spec.report.description.pools.${case[$POOL]} | jq .cpuLists | awk -F '{' '{print $(NF)}' | awk -F '}' '{print $(NF)}' | awk -F ',' '{print $(NF)}' | grep "\"tasks\": \[" | wc -l)
- echo "ready to generate yaml"
+ TOTAL=$(kubectl get cmk-nodereport ${case[$NODE]} -o json | jq --arg pool "${case[$POOL]}" '.spec.report.description.pools[$pool].cpuLists|length')
+ echo "ready to generate yaml"
cat << EOF > $DIR/$pod_name.yaml
apiVersion: v1
kind: Pod
@@ -113,8 +114,11 @@ EOF
done
echo "waiting for CPU allocation finished ..."
rest=$TOTAL
- until [[ $TOTAL -gt $rest ]]; do
- rest=$(kubectl get cmk-nodereport ${case[$NODE]} -o json | jq .spec.report.description.pools.exclusive | jq .cpuLists | awk -F '{' '{print $(NF)}' | awk -F '}' '{print $(NF)}' | awk -F ',' '{print $(NF)}' | grep "\"tasks\": \[\]" | wc -l)
+ timeout=0
+ until [[ $TOTAL -gt $rest || $timeout == 180 ]]; do
+ sleep 1
+ rest=$(kubectl get cmk-nodereport ${case[$NODE]} -o json | jq '.spec.report.description.pools.exclusive.cpuLists[].tasks|select(type=="array" and length==0)' | wc -l) || echo "$TOTAL"
+ timeout=$((timeout+1))
done
let allocated=`expr $TOTAL - $rest`
echo "The allocated CPU amount is:" $allocated
@@ -123,7 +127,7 @@ EOF
if [[ $allocated == ${case[$CORE]} ]]; then
echo "CPU was allocated as expected, TC passed !!"
else
- echo "failed to allocate CPU, TC failed !!"
+ echo "failed to allocate CPU ($allocated != ${case[$CORE]}), TC failed !!"
fi
rm -f $DIR/$pod_name.yaml
echo "ready to delete pod"
@@ -132,6 +136,7 @@ EOF
echo "##################################"
echo
echo
+ [[ $allocated == ${case[$CORE]} ]]
else
echo "TC: to allocate CPU(s) from pool of ${case[$POOL]} on node of ${case[$NODE]}"
echo "ready to generate yaml"
@@ -207,10 +212,10 @@ EOF
echo "waiting for CPU allocation finished ..."
rest=0
timeout=0
- until [ $rest == 2 -o $timeout == 180 ]; do
- rest=$(kubectl get cmk-nodereport ${case[$NODE]} -o json | jq .spec.report.description.pools.shared | jq .cpuLists | awk -F '{' '{print $(NF)}' | awk -F '}' '{print $(NF)}' | grep -v "cpus" | grep " "| grep -v "tasks"| grep -v "\]" | wc -l)
- sleep -- 1
- let timeout++
+ until [[ $rest == 2 || $timeout == 180 ]]; do
+ sleep 1
+ rest=$(kubectl get cmk-nodereport ${case[$NODE]} -o json | jq '.spec.report.description.pools.shared.cpuLists[].tasks' | jq length) || echo "0"
+ timeout=$((timeout+1))
done
echo "The CPU allocated in shared pool for 2 tasks"
echo "deploy a nginx pod"
@@ -218,7 +223,7 @@ EOF
if [[ $rest == 2 ]]; then
echo "CPU was allocated as expected, TC passed !!"
else
- echo "failed to allocate CPU, TC failed !!"
+ echo "failed to allocate CPU ($rest != 2), TC failed !!"
fi
rm -f $DIR/$pod_name.yaml
echo "ready to delete pod"
@@ -227,5 +232,6 @@ EOF
echo "##################################"
echo
echo
+ [[ $rest == 2 ]]
fi
done