From 7ee9ee4e4361fa31d4e565c1b7539006598c0223 Mon Sep 17 00:00:00 2001 From: Victor Morales Date: Thu, 13 Sep 2018 09:19:13 -0700 Subject: Refactor Functional tests The current implementation of Functional tests didn't allow to reuse some functionality. This change exposes common functions and methods to populated CSAR folders. Change-Id: I8f4daf9a0a12633f952677b3e15de42bea5226e6 Signed-off-by: Victor Morales Issue-ID: MULTICLOUD-301 --- vagrant/tests/virtlet.sh | 143 ++++++----------------------------------------- 1 file changed, 18 insertions(+), 125 deletions(-) (limited to 'vagrant/tests/virtlet.sh') diff --git a/vagrant/tests/virtlet.sh b/vagrant/tests/virtlet.sh index a8af071f..4a43ff34 100755 --- a/vagrant/tests/virtlet.sh +++ b/vagrant/tests/virtlet.sh @@ -12,134 +12,27 @@ set -o errexit set -o nounset set -o pipefail -rm -f $HOME/*.yaml +source _common.sh +source _functions.sh -virtlet_image=virtlet.cloud/fedora -pod_name=virtlet-pod -deployment_name=virtlet-deployment +csar_id=6b54a728-b76a-11e8-a1ba-52540053ccc8 -cat << POD > $HOME/$pod_name.yaml -apiVersion: v1 -kind: Pod -metadata: - name: $pod_name - annotations: - # This tells CRI Proxy that this pod belongs to Virtlet runtime - kubernetes.io/target-runtime: virtlet.cloud - VirtletCloudInitUserDataScript: | - #!/bin/sh - echo hello world -spec: - # This nodeAffinity specification tells Kubernetes to run this - # pod only on the nodes that have extraRuntime=virtlet label. - # This label is used by Virtlet DaemonSet to select nodes - # that must have Virtlet runtime - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: extraRuntime - operator: In - values: - - virtlet - containers: - - name: $pod_name - # This specifies the image to use. - # virtlet.cloud/ prefix is used by CRI proxy, the remaining part - # of the image name is prepended with https:// and used to download the image - image: $virtlet_image - imagePullPolicy: IfNotPresent - # tty and stdin required for "kubectl attach -t" to work - tty: true - stdin: true - resources: - limits: - # This memory limit is applied to the libvirt domain definition - memory: 160Mi -POD +# Setup +popule_CSAR_virtlet $csar_id -cat << DEPLOYMENT > $HOME/$deployment_name.yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: $deployment_name - labels: - app: virtlet -spec: - replicas: 1 - selector: - matchLabels: - app: virtlet - template: - metadata: - labels: - app: virtlet - annotations: - # This tells CRI Proxy that this pod belongs to Virtlet runtime - kubernetes.io/target-runtime: virtlet.cloud - VirtletCloudInitUserDataScript: | - #!/bin/sh - echo hello world - spec: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: extraRuntime - operator: In - values: - - virtlet - containers: - - name: $deployment_name - # This specifies the image to use. - # virtlet.cloud/ prefix is used by CRI proxy, the remaining part - # of the image name is prepended with https:// and used to download the image - image: $virtlet_image - imagePullPolicy: IfNotPresent - # tty and stdin required for "kubectl attach -t" to work - tty: true - stdin: true - resources: - limits: - # This memory limit is applied to the libvirt domain definition - memory: 160Mi -DEPLOYMENT +pushd ${CSAR_DIR}/${csar_id} -if $(kubectl version &>/dev/null); then - kubectl delete pod $pod_name --ignore-not-found=true --now - kubectl delete deployment $deployment_name --ignore-not-found=true --now - while kubectl get pod $pod_name &>/dev/null; do - sleep 5 - done - kubectl create -f $HOME/$pod_name.yaml - while kubectl get deployment $deployment_name &>/dev/null; do - sleep 5 - done - kubectl create -f $HOME/$deployment_name.yaml - sleep 5 +setup $virtlet_deployment_name - deployment_pod=$(kubectl get pods | grep $deployment_name | awk '{print $1}') - for pod in $pod_name $deployment_pod; do - status_phase="" - while [[ $status_phase != "Running" ]]; do - new_phase=$(kubectl get pods $pod | awk 'NR==2{print $3}') - if [[ $new_phase != $status_phase ]]; then - echo "$(date +%H:%M:%S) - $pod : $new_phase" - status_phase=$new_phase - fi - if [[ $new_phase == "Err"* ]]; then - exit 1 - fi - done - done - - kubectl plugin virt virsh list - for pod in $pod_name $deployment_name; do - virsh_image=$(kubectl plugin virt virsh list | grep "virtlet-.*-$pod") - if [[ -z "$virsh_image" ]]; then - exit 1 - fi - done +# Test +kubectl plugin virt virsh list +deployment_pod=$(kubectl get pods | grep $virtlet_deployment_name | awk '{print $1}') +virsh_image=$(kubectl plugin virt virsh list | grep "virtlet-.*-$deployment_pod") +if [[ -z "$virsh_image" ]]; then + echo "There is no Virtual Machine running by $deployment_pod pod" + exit 1 fi +popd + +# Teardown +teardown $virtlet_deployment_name -- cgit 1.2.3-korg