aboutsummaryrefslogtreecommitdiffstats
path: root/tools/performance/cloud/reboot-test-environment.sh
blob: 853df148656c602f6075ed02e755549197fbc074 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/env bash
# ============LICENSE_START=======================================================
# dcaegen2-collectors-veshv
# ================================================================================
# Copyright (C) 2019 NOKIA
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============LICENSE_END=========================================================

ONAP_NAMESPACE=onap
HVVES_POD_NAME=$(kubectl -n ${ONAP_NAMESPACE} get pods --no-headers=true -o custom-columns=:metadata.name | grep hv-ves-collector)
HVVES_CONTAINER_NAME=dep-dcae-hv-ves-collector
HV_VES_IMAGE="nexus3.dyn.nesc.nokia.net:10001/onap/org.onap.dcaegen2.collectors.hv-ves.hv-collector-main:latest"
KAFKA_ROUTER_0_POD_NAME=$(kubectl -n ${ONAP_NAMESPACE} get pods --no-headers=true -o custom-columns=:metadata.name | grep router-kafka-0)
KAFKA_TOPIC_RESET_CMD='kafka-topics.sh --delete  --zookeeper message-router-zookeeper:2181  --topic HV_VES_PERF3GPP'
HIDE_OUTPUT='grep abc | grep 123'

function usage() {
    echo ""
    echo "Reebot test environment for performance tests"
    echo "Usage $0 reboot|help"
    echo "  reboot: reboots the test environment"
    echo "  help  : print usage"
    echo "Example invocation:"
    echo "./reboot-test-environment.sh reboot"
    echo ""
}

function rebootEnvironment(){
    ./cloud-based-performance-test.sh clean

    redeployPod

    waitForPodRedeployment

    echo "Updating HV-VES image"
    kubectl patch pod ${HVVES_POD_NAME} -n ${ONAP_NAMESPACE} --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"'${HV_VES_IMAGE}'"}]'

    echo "Deleting Kafka topic"
    kubectl exec -it ${KAFKA_ROUTER_0_POD_NAME} -n ${ONAP_NAMESPACE} -- ${KAFKA_TOPIC_RESET_CMD} | eval $HIDE_OUTPUT

    waitForHvVesRunning

    ./cloud-based-performance-test.sh setup
}


function redeployPod(){
    kubectl scale --replicas=0 deploy ${HVVES_CONTAINER_NAME} -n ${ONAP_NAMESPACE}
    waitForPodTermination
    kubectl scale --replicas=1 deploy ${HVVES_CONTAINER_NAME} -n ${ONAP_NAMESPACE}
    sleep 10s
}

function waitForPodTermination(){
    echo "Waiting for pod termination..."

    while [ "${HVVES_POD_NAME}" != "" ] ; do
      HVVES_POD_NAME=$(kubectl -n ${ONAP_NAMESPACE} get pods --no-headers=true -o custom-columns=:metadata.name | grep hv-ves-collector)
      sleep 1s
    done
}

function waitForPodRedeployment(){
    HVVES_POD_NAME=""
    echo "Waiting for pod redeploy..."

    while [ "${HVVES_POD_NAME}" = "" ] ; do
      HVVES_POD_NAME=$(kubectl -n ${ONAP_NAMESPACE} get pods --no-headers=true -o custom-columns=:metadata.name | grep hv-ves-collector)
      sleep 1s
    done
}

function waitForHvVesRunning(){
    echo "Waiting for HV-VES running..."
    POD_STATUS="";
    while [ "${POD_STATUS}" != "2/2" ]; do
      POD_STATUS=$(kubectl get pod ${HVVES_POD_NAME} -n ${ONAP_NAMESPACE} --no-headers=true | awk '{print $2}')
      sleep 1s
    done
}

function loadHvVesPodName(){
    HVVES_POD_NAME=$(kubectl -n ${ONAP_NAMESPACE} get pods --no-headers=true -o custom-columns=:metadata.name | grep hv-ves-collector)
}


if [[ $# -eq 0 ]]; then
    usage
else
    for arg in ${@}
    do
        case ${arg} in
            reboot)
            rebootEnvironment
            ;;
            help)
            usage
            ;;
            *)
            echo "Unknown action: ${arg}" >&2
            usage
            ;;
        esac
    done
fi