diff options
author | Yujun Zhang <zhang.yujunz@zte.com.cn> | 2017-08-18 09:12:33 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-08-18 09:12:33 +0000 |
commit | 17209935c79e52f763aa41fd5da8a3c0f847e994 (patch) | |
tree | 24d6e7966e0ae7bc256817b5f6652cd76c4be117 | |
parent | 3c672cfb23e34e030a8654a8628a6351b1135c8c (diff) | |
parent | 70fc96ee9d7785a46de6847cd8bbb54a26bff3eb (diff) |
Merge "refactor storperf scripts structure"
-rw-r--r-- | integration/storperf/README.md | 45 | ||||
-rw-r--r-- | integration/storperf/docker-compose.yaml | 48 | ||||
-rwxr-xr-x | integration/storperf/launch_containers.sh | 100 | ||||
-rwxr-xr-x | integration/storperf/run_ci.sh | 21 | ||||
-rw-r--r-- | tests/ci/experimental.sh | 2 | ||||
-rwxr-xr-x | tests/ci/run_storage_qpi.sh (renamed from integration/storperf/cleanup.sh) | 8 | ||||
-rwxr-xr-x | tests/ci/storperf/containers.sh | 49 | ||||
-rw-r--r-- | tests/ci/storperf/default_job.json (renamed from integration/storperf/default_job.json) | 2 | ||||
-rw-r--r-- | tests/ci/storperf/default_stack.json (renamed from integration/storperf/default_stack.json) | 0 | ||||
-rwxr-xr-x | tests/ci/storperf/prepare.sh (renamed from integration/storperf/prepare.sh) | 29 | ||||
-rw-r--r-- | tests/ci/storperf/qtip-storperf-docker-compose.yaml | 45 | ||||
-rwxr-xr-x | tests/ci/storperf/start_job.sh (renamed from integration/storperf/start_job.sh) | 1 | ||||
-rw-r--r-- | tests/ci/storperf/storperf_requirements.txt (renamed from integration/storperf/storperf_requirments.txt) | 0 | ||||
-rwxr-xr-x | tests/ci/verify_storage.sh | 62 |
14 files changed, 176 insertions, 236 deletions
diff --git a/integration/storperf/README.md b/integration/storperf/README.md deleted file mode 100644 index bdcc7e70..00000000 --- a/integration/storperf/README.md +++ /dev/null @@ -1,45 +0,0 @@ -# Usage - -Please make sure pip, docker and docker-compose are installer on your environment. - -1. Launch qtip and storperf containers. - - ``` - $ cd qtip/integration/storperf - $ bash launch_containers.sh -t apex -n "" - - Arguments: - - -t : Installer type. For now only supports Apex. - -n : Node name. - ``` - - Then you will get 5 containers: - - ``` - CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES - 2c079d5d88bc opnfv/qtip "/usr/bin/supervisord" 38 minutes ago Up 38 minutes 5000/tcp qtip - 2032a16dab17 opnfv/storperf-httpfrontend "nginx -g 'daemon ..." 38 minutes ago Up 38 minutes 80/tcp, 0.0.0.0:5000->5000/tcp storperf-httpfrontend - c0d3e2763d35 schickling/swagger-ui "sh run.sh" 39 minutes ago Up 38 minutes 80/tcp storperf-swaggerui - 0e08a1968829 opnfv/storperf-reporting "python app.py" 39 minutes ago Up 38 minutes 0.0.0.0:5080->5000/tcp storperf-reporting - b92967139d8e opnfv/storperf-master "/usr/bin/supervisord" 39 minutes ago Up 39 minutes 5000/tcp, 0.0.0.0:8000->8000/tcp storperf-master - ``` - -2. Prepare environment. - - ``` - $ docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/prepare.sh" - ``` - - This command can create a flavor and upload a Ubuntu 16.04 image on OpenStack. - -3. Run storperf job. - - ``` - $ docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/start_job.sh -s stack.json -j job.json" - - Arguments: - - -s : Stack configuration json file. If not given, default_stack.json will be used. - -j : Storperf job configuration json file. If not given, default_job.json will be used. - ``` diff --git a/integration/storperf/docker-compose.yaml b/integration/storperf/docker-compose.yaml deleted file mode 100644 index 8cef5bc3..00000000 --- a/integration/storperf/docker-compose.yaml +++ /dev/null @@ -1,48 +0,0 @@ -############################################################################## -# Copyright (c) 2017 Dell EMC, ZTE and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -version: '2' -services: - - - storperf-master: - container_name: "storperf-master" - image: opnfv/storperf-master - ports: - - "8000:8000" - env_file: ${ENV_FILE} - volumes: - - ${CARBON_DIR}:/opt/graphite/storage/whisper - - storperf-reporting: - container_name: "storperf-reporting" - image: opnfv/storperf-reporting - ports: - - "5080:5000" - - storperf-swaggerui: - container_name: "storperf-swaggerui" - image: "schickling/swagger-ui" - - storperf-httpfrontend: - container_name: "storperf-httpfrontend" - image: opnfv/storperf-httpfrontend - ports: - - "5000:5000" - links: - - storperf-master - - storperf-reporting - - storperf-swaggerui - - qtip: - container_name: qtip - image: opnfv/qtip - env_file: ${ENV_FILE} - links: - - storperf-httpfrontend diff --git a/integration/storperf/launch_containers.sh b/integration/storperf/launch_containers.sh deleted file mode 100755 index 3fcf8052..00000000 --- a/integration/storperf/launch_containers.sh +++ /dev/null @@ -1,100 +0,0 @@ -#! /bin/bash -############################################################################## -# Copyright (c) 2017 ZTE and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -usage(){ - echo "usage: $0 -t <installer_type> -n <node_name>" >&2 -} - -#Get options -while getopts ":t:n:he" optchar; do - case "${optchar}" in - t) installer_type=${OPTARG} ;; - n) node_name=${OPTARG} ;; - h) usage - exit 0 - ;; - *) echo "Non-option argument: '-${OPTARG}'" >&2 - usage - exit 2 - ;; - esac -done - - -#set vars from env if not provided by user as options -installer_type=${installer_type:-$INSTALLER_TYPE} -node_name=${node_name:-$NODE_NAME} - -case $installer_type in - apex) - installer_ip=`sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1` - ;; - *) - - echo "Unsupported $installer_type. Cannot continue!" - exit 1 -esac - -if [[ -z $WORKSPACE ]];then - WORKSPACE=`pwd` -fi - -git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng - -$WORKSPACE/releng/utils/fetch_os_creds.sh -i ${installer_type} -a ${installer_ip} -d $WORKSPACE/openrc - -grep "export" $WORKSPACE/openrc | sed "s/export //" > $WORKSPACE/admin.rc -echo "INSTALLER_TYPE=${installer_type}" >> $WORKSPACE/admin.rc -echo "INSTALLER_IP=${installer_ip}" >> $WORKSPACE/admin.rc -echo "NODE_NAME=${node_name}" >> $WORKSPACE/admin.rc -export ENV_FILE=$WORKSPACE/admin.rc - -export CARBON_DIR=$WORKSPACE/carbon/ -WWW_DATA_UID=33 -WWW_DATA_GID=33 -sudo install --owner=${WWW_DATA_UID} --group=${WWW_DATA_GID} -d "${CARBON_DIR}" - -clean_storperf_container() -{ - docker-compose -f docker-compose.yaml down - - for name in qtip storperf-master storperf-swaggerui storperf-httpfrontend storperf-reporting - do - container=`docker ps -a -q -f name=$name` - if [[ ! -z $container ]];then - echo "Stopping any existing $name container" - docker rm -fv $container - fi - - image=`docker images opnfv/$name` - if [[ ! -z $image ]];then - echo "Deleteing any existing opnfv/$name image" - docker rmi -f opnfv/$container_name - fi - done -} - -launch_storperf_container() -{ - docker-compose pull - docker-compose -f docker-compose.yaml up -d - - echo "Waiting for StorPerf to become active" - - while [ $(curl -s -o /dev/null -I -w "%{http_code}" -X GET http://127.0.0.1:5000/api/v1.0/configurations) != "200" ] - do - sleep 1 - done -} - -echo "Clean existing storperf containers" -clean_storperf_container - -echo "Launch new storperf containers" -launch_storperf_container
\ No newline at end of file diff --git a/integration/storperf/run_ci.sh b/integration/storperf/run_ci.sh deleted file mode 100755 index ca67ac62..00000000 --- a/integration/storperf/run_ci.sh +++ /dev/null @@ -1,21 +0,0 @@ -#! /bin/bash -############################################################################## -# Copyright (c) 2017 ZTE and others. -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - - -source $WORKSPACE/integration/storperf/launch_containers.sh -t $INSTALLER_TYPE -n $NODE_NAME - -docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/prepare.sh" - -docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/start_job.sh" - -docker exec qtip bash -c "/home/opnfv/repos/qtip/integration/storperf/cleanup.sh" - -exit 0 - - diff --git a/tests/ci/experimental.sh b/tests/ci/experimental.sh index c5572059..379e8602 100644 --- a/tests/ci/experimental.sh +++ b/tests/ci/experimental.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -source interation/storperf/run_ci.sh +source tests/ci/verify_storage.sh diff --git a/integration/storperf/cleanup.sh b/tests/ci/run_storage_qpi.sh index 1aee1658..d4859d56 100755 --- a/integration/storperf/cleanup.sh +++ b/tests/ci/run_storage_qpi.sh @@ -7,8 +7,8 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -echo "Deleting image" -openstack image delete "Ubuntu 16.04 x86_64" +#TODO: These will be replaced by qtip cli +script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -echo "Deteing flavor" -openstack flavor delete storperf +$script_dir/storperf/prepare.sh +$script_dir/storperf/start_job.sh
\ No newline at end of file diff --git a/tests/ci/storperf/containers.sh b/tests/ci/storperf/containers.sh new file mode 100755 index 00000000..1c48a62e --- /dev/null +++ b/tests/ci/storperf/containers.sh @@ -0,0 +1,49 @@ +#! /bin/bash +############################################################################## +# Copyright (c) 2017 ZTE and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +clean_containers() +{ + echo "Cleanup existing qtip and storperf containers" + docker-compose -f qtip-storperf-docker-compose.yaml down + + for name in qtip storperf-master storperf-swaggerui storperf-httpfrontend storperf-reporting + do + container=$(docker ps -a | grep "opnfv/${name}:${DOCKER_TAG}" | awk '{print $1}') + if [[ ! -z "$container" ]]; then + echo "Removing any existing $name container" + docker rm -fv $container + fi + + if [[ $(docker images opnfv/${name}:${DOCKER_TAG} | wc -l) -gt 1 ]]; then + echo "QTIP: Removing docker image opnfv/$name :$DOCKER_TAG..." + docker rmi -f opnfv/${name}:${DOCKER_TAG} + fi + done +} + + +launch_containers() +{ + echo "Launch new qtip and storperf containers" + docker-compose -f qtip-storperf-docker-compose.yaml pull + docker-compose -f qtip-storperf-docker-compose.yaml up -d + + echo "Waiting for StorPerf to become active" + + while [ $(curl -s -o /dev/null -I -w "%{http_code}" -X GET http://127.0.0.1:5000/api/v1.0/configurations) != "200" ] + do + sleep 1 + done + + container_id=$(docker ps | grep "opnfv/qtip:${DOCKER_TAG}" | awk '{print $1}' | head -1) + if [[ -z "$container_id" ]]; then + echo "The container opnfv/qtip with ID=${container_id} has not been properly started. Exiting..." + exit 1 + fi +} diff --git a/integration/storperf/default_job.json b/tests/ci/storperf/default_job.json index d0e1516d..4e5e2dfd 100644 --- a/integration/storperf/default_job.json +++ b/tests/ci/storperf/default_job.json @@ -6,7 +6,7 @@ "workload": "rw", "metadata": { "disk_type": "HDD", - "scenario_name": "none", + "scenario_name": "", "storage_node_count": 2, "version": "", "build_tag": "", diff --git a/integration/storperf/default_stack.json b/tests/ci/storperf/default_stack.json index 79d8fc46..79d8fc46 100644 --- a/integration/storperf/default_stack.json +++ b/tests/ci/storperf/default_stack.json diff --git a/integration/storperf/prepare.sh b/tests/ci/storperf/prepare.sh index 345a80bc..fe0708ad 100755 --- a/integration/storperf/prepare.sh +++ b/tests/ci/storperf/prepare.sh @@ -7,34 +7,32 @@ # http://www.apache.org/licenses/LICENSE-2.0 ############################################################################## -# See https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within -script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" - -pip install -r $script_dir/storperf_requirements.txt - if [[ -z $WORKSPACE ]];then WORKSPACE=`pwd` fi +script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +pip install -r $script_dir/storperf_requirements.txt delete_storperf_stack() { - echo "Checking for an existing stack" + echo "Checking for storperf stack" STACK_ID=`openstack stack list | grep StorPerfAgentGroup | awk '{print $2}'` if [[ ! -z $STACK_ID ]];then + echo "Deleting any existing storperf stack" openstack stack delete --yes --wait StorPerfAgentGroup fi } - load_ubuntu_image() { echo "Checking for Ubuntu 16.04 image in Glance" - IMAGE=`openstack image list | grep "Ubuntu 16.04 x86_64"` + IMAGE=`openstack image list | grep "Ubuntu 16.04 x86_64" | awk '{print $2}'` if [[ -z "$IMAGE" ]];then cd $WORKSPACE if [[ ! -f ubuntu-16.04-server-cloudimg-amd64-disk1.img ]];then - echo "download Ubuntu 16.04 image" + echo "Download Ubuntu 16.04 image" wget -q https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img wget -q https://cloud-images.ubuntu.com/releases/16.04/release/MD5SUMS checksum=$(cat ./MD5SUMS |grep ubuntu-16.04-server-cloudimg-amd64-disk1.img | md5sum -c) @@ -44,31 +42,30 @@ load_ubuntu_image() fi fi - echo "Create openstack image Ubuntu 16.04" + echo "Creating openstack image Ubuntu 16.04" openstack image create "Ubuntu 16.04 x86_64" --disk-format qcow2 --public \ --container-format bare --file $WORKSPACE/ubuntu-16.04-server-cloudimg-amd64-disk1.img + else + openstack image show "Ubuntu 16.04 x86_64" fi - - openstack image show "Ubuntu 16.04 x86_64" } - create_storperf_flavor() { echo "Checking for StorPerf flavor" openstack flavor delete storperf - FLAVOR=`openstack flavor list | grep "storperf"` + FLAVOR=`openstack flavor list | grep "storperf" | awk '{print $2}'` if [[ -z "$FLAVOR" ]];then openstack flavor create storperf \ --id auto \ --ram 2048 \ --disk 4 \ --vcpus 2 + else + openstack flavor show storperf fi - openstack flavor show storperf } - delete_storperf_stack load_ubuntu_image create_storperf_flavor diff --git a/tests/ci/storperf/qtip-storperf-docker-compose.yaml b/tests/ci/storperf/qtip-storperf-docker-compose.yaml new file mode 100644 index 00000000..fc837139 --- /dev/null +++ b/tests/ci/storperf/qtip-storperf-docker-compose.yaml @@ -0,0 +1,45 @@ +############################################################################## +# Copyright (c) 2017 Dell EMC, ZTE and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +version: '2' +services: + + storperf-master: + container_name: "storperf-master" + image: opnfv/storperf-master:${DOCKER_TAG} + ports: + - "8000:8000" + env_file: ${ENV_FILE} + + storperf-reporting: + container_name: "storperf-reporting" + image: opnfv/storperf-reporting:${DOCKER_TAG} + ports: + - "5080:5000" + + storperf-swaggerui: + container_name: "storperf-swaggerui" + image: "schickling/swagger-ui" + + storperf-httpfrontend: + container_name: "storperf-httpfrontend" + image: opnfv/storperf-httpfrontend:${DOCKER_TAG} + ports: + - "5000:5000" + links: + - storperf-master + - storperf-reporting + - storperf-swaggerui + + qtip: + container_name: qtip + image: opnfv/qtip:${DOCKER_TAG} + env_file: ${ENV_FILE} + links: + - storperf-httpfrontend
\ No newline at end of file diff --git a/integration/storperf/start_job.sh b/tests/ci/storperf/start_job.sh index 672dabef..15785036 100755 --- a/integration/storperf/start_job.sh +++ b/tests/ci/storperf/start_job.sh @@ -42,6 +42,7 @@ nova_vm_mapping() openstack server list --name storperf-agent -c ID -c Host --long -f json > $WORKSPACE/nova_vm.json echo ========================================================================== + echo "Vms vs. Compute nodes" cat $WORKSPACE/nova_vm.json echo ========================================================================== } diff --git a/integration/storperf/storperf_requirments.txt b/tests/ci/storperf/storperf_requirements.txt index 4a279ae5..4a279ae5 100644 --- a/integration/storperf/storperf_requirments.txt +++ b/tests/ci/storperf/storperf_requirements.txt diff --git a/tests/ci/verify_storage.sh b/tests/ci/verify_storage.sh new file mode 100755 index 00000000..00120211 --- /dev/null +++ b/tests/ci/verify_storage.sh @@ -0,0 +1,62 @@ +#! /bin/bash -x +############################################################################## +# Copyright (c) 2017 ZTE and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +WORKSPACE=${WORKSPACE:=`pwd`} + +export DOCKER_TAG=${DOCKER_TAG:-latest} +export ENV_FILE=$WORKSPACE/env_file + +script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +case $INSTALLER_TYPE in + apex) + INSTALLER_IP=`sudo virsh domifaddr undercloud | grep ipv4 | awk '{print $4}' | cut -d/ -f1` + ;; +esac + +git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng $WORKSPACE/releng +$WORKSPACE/releng/utils/fetch_os_creds.sh -i $INSTALLER_TYPE -a $INSTALLER_IP -d $WORKSPACE/openrc + +grep "export" $WORKSPACE/openrc | sed "s/export //" > $WORKSPACE/env_file +echo "INSTALLER_TYPE=$INSTALLER_TYPE" >> $WORKSPACE/env_file +echo "INSTALLER_IP=$INSTALLER_IP" >> $WORKSPACE/env_file +echo "NODE_NAME=$NODE_NAME" >> $WORKSPACE/env_file +echo "SCENARIO=$DEPLOY_SCENARIO" >> $WORKSPACE/env_file +echo "TESTAPI_URL=$TESTAPI_URL" >> $WORKSPACE/env_file +echo "DOCKER_TAG=$DOCKER_TAG" >> $WORKSPACE/env_file + +echo "--------------------ENV_FILE----------------------------" +cat $WORKSPACE/env_file +echo "--------------------------------------------------------" + +source $script_dir/storperf/containers.sh +cd $script_dir/storperf +clean_containers +launch_containers + +container_id=$(docker ps | grep "opnfv/qtip:${DOCKER_TAG}" | awk '{print $1}' | head -1) + +if [[ "$INSTALLER_TYPE" == "apex" ]];then + if [ -f /root/.ssh/id_rsa ]; then + sudo chmod 600 /root/.ssh/id_rsa + sudo docker cp /root/.ssh/id_rsa ${container_id}:/root/.ssh/ + fi +fi + +QTIP_REPO=/home/opnfv/repos/qtip + +echo "QTIP: Copying current submit patch to the container ${container_id}" +cd $WORKSPACE +docker cp . ${container_id}:${QTIP_REPO} +docker exec ${container_id} bash -c "cd ${QTIP_REPO} && pip install -U -e ." + +docker exec -t ${container_id} bash -c "bash ${QTIP_REPO}/tests/ci/run_storage_qpi.sh" + +echo "Verify storage done!" +exit 0
\ No newline at end of file |