diff options
Diffstat (limited to 'dovetail')
-rw-r--r-- | dovetail/compliance/proposed_tests.yml | 8 | ||||
-rwxr-xr-x | dovetail/run.py | 1 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc002.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc003.yml | 1 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc004.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc005.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc018.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc019.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc020.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc021.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc022.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc023.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc024.yml | 2 | ||||
-rw-r--r-- | dovetail/testcase/ipv6.tc025.yml | 2 | ||||
-rw-r--r-- | dovetail/utils/dovetail_utils.py | 25 | ||||
-rw-r--r-- | dovetail/utils/local_db/init_db.py | 80 | ||||
-rwxr-xr-x | dovetail/utils/local_db/launch_db.sh | 96 | ||||
-rwxr-xr-x | dovetail/utils/local_db/restart_db.sh | 29 |
18 files changed, 243 insertions, 19 deletions
diff --git a/dovetail/compliance/proposed_tests.yml b/dovetail/compliance/proposed_tests.yml index fa9c5b8a..aaaa2023 100644 --- a/dovetail/compliance/proposed_tests.yml +++ b/dovetail/compliance/proposed_tests.yml @@ -7,10 +7,10 @@ proposed_tests: # - dovetail.defcore.tc002 # ipv6 - dovetail.ipv6.tc001 - # - dovetail.ipv6.tc002 - # - dovetail.ipv6.tc003 - # - dovetail.ipv6.tc004 - # - dovetail.ipv6.tc005 + - dovetail.ipv6.tc002 + - dovetail.ipv6.tc003 + - dovetail.ipv6.tc004 + - dovetail.ipv6.tc005 - dovetail.ipv6.tc006 - dovetail.ipv6.tc007 - dovetail.ipv6.tc008 diff --git a/dovetail/run.py b/dovetail/run.py index 607e1b15..4bea9b53 100755 --- a/dovetail/run.py +++ b/dovetail/run.py @@ -204,6 +204,7 @@ def main(*args, **kwargs): logger.info('Dovetail compliance: %s!', (kwargs['testsuite'])) logger.info('================================================') logger.info('Build tag: %s', dt_cfg.dovetail_config['build_tag']) + dt_utils.check_docker_version(logger) validate_input(kwargs, dt_cfg.dovetail_config['validate_input'], logger) configs = filter_config(kwargs, logger) diff --git a/dovetail/testcase/ipv6.tc002.yml b/dovetail/testcase/ipv6.tc002.yml index 48aeafa3..c8254bb8 100644 --- a/dovetail/testcase/ipv6.tc002.yml +++ b/dovetail/testcase/ipv6.tc002.yml @@ -11,5 +11,3 @@ dovetail.ipv6.tc002: report: sub_testcase_list: - tempest.api.network.test_networks.NetworksIpV6Test.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221,smoke] - - tempest.api.network.test_networks.NetworksIpV6TestAttrs.test_create_update_delete_network_subnet - diff --git a/dovetail/testcase/ipv6.tc003.yml b/dovetail/testcase/ipv6.tc003.yml index d9c93799..339d405b 100644 --- a/dovetail/testcase/ipv6.tc003.yml +++ b/dovetail/testcase/ipv6.tc003.yml @@ -11,4 +11,3 @@ dovetail.ipv6.tc003: report: sub_testcase_list: - tempest.api.network.test_networks.NetworksIpV6Test.test_external_network_visibility[id-af774677-42a9-4e4b-bb58-16fe6a5bc1ec,smoke] - - tempest.api.network.test_networks.NetworksIpV6TestAttrs.test_external_network_visibility diff --git a/dovetail/testcase/ipv6.tc004.yml b/dovetail/testcase/ipv6.tc004.yml index a69b9fcd..514a846e 100644 --- a/dovetail/testcase/ipv6.tc004.yml +++ b/dovetail/testcase/ipv6.tc004.yml @@ -12,5 +12,3 @@ dovetail.ipv6.tc004: sub_testcase_list: - tempest.api.network.test_networks.NetworksIpV6Test.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43,smoke] - tempest.api.network.test_networks.NetworksIpV6Test.test_list_subnets[id-db68ba48-f4ea-49e9-81d1-e367f6d0b20a,smoke] - - tempest.api.network.test_networks.NetworksIpV6TestAttrs.test_list_networks - - tempest.api.network.test_networks.NetworksIpV6TestAttrs.test_list_subnets diff --git a/dovetail/testcase/ipv6.tc005.yml b/dovetail/testcase/ipv6.tc005.yml index 52cae5f5..3dcca9b2 100644 --- a/dovetail/testcase/ipv6.tc005.yml +++ b/dovetail/testcase/ipv6.tc005.yml @@ -12,5 +12,3 @@ dovetail.ipv6.tc005: sub_testcase_list: - tempest.api.network.test_networks.NetworksIpV6Test.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e,smoke] - tempest.api.network.test_networks.NetworksIpV6Test.test_show_subnet[id-bd635d81-6030-4dd1-b3b9-31ba0cfdf6cc,smoke] - - tempest.api.network.test_networks.NetworksIpV6TestAttrs.test_show_network - - tempest.api.network.test_networks.NetworksIpV6TestAttrs.test_show_subnet diff --git a/dovetail/testcase/ipv6.tc018.yml b/dovetail/testcase/ipv6.tc018.yml index 93ae1235..406e02af 100644 --- a/dovetail/testcase/ipv6.tc018.yml +++ b/dovetail/testcase/ipv6.tc018.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc018: name: dovetail.ipv6.tc018 - objective: VIM ipv6 operations, to show information of an IPv6 port + objective: VIM ipv6 operations, to show information of an IPv6 port, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc019.yml b/dovetail/testcase/ipv6.tc019.yml index fab0acdb..1e3c171b 100644 --- a/dovetail/testcase/ipv6.tc019.yml +++ b/dovetail/testcase/ipv6.tc019.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc019: name: dovetail.ipv6.tc019 - objective: VIM ipv6 operations, to do IPv6 address assignment - dual stack, DHCPv6 stateless + objective: VIM ipv6 operations, to do IPv6 address assignment - dual stack, DHCPv6 stateless, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc020.yml b/dovetail/testcase/ipv6.tc020.yml index b31cd727..f7ab8b47 100644 --- a/dovetail/testcase/ipv6.tc020.yml +++ b/dovetail/testcase/ipv6.tc020.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc020: name: dovetail.ipv6.tc020 - objective: VIM ipv6 operations, to do IPv6 Address Assignment - Multiple Prefixes, DHCPv6 Stateless + objective: VIM ipv6 operations, to do IPv6 Address Assignment - Multiple Prefixes, DHCPv6 Stateless, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc021.yml b/dovetail/testcase/ipv6.tc021.yml index f8820f1d..466b75ca 100644 --- a/dovetail/testcase/ipv6.tc021.yml +++ b/dovetail/testcase/ipv6.tc021.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc021: name: dovetail.ipv6.tc021 - objective: VIM ipv6 operations, to do IPv6 Address Assignment - Dual Stack, Multiple Prefixes, DHCPv6 Stateless + objective: VIM ipv6 operations, to do IPv6 Address Assignment - Dual Stack, Multiple Prefixes, DHCPv6 Stateless, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc022.yml b/dovetail/testcase/ipv6.tc022.yml index 6c61702e..c1d371d6 100644 --- a/dovetail/testcase/ipv6.tc022.yml +++ b/dovetail/testcase/ipv6.tc022.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc022: name: dovetail.ipv6.tc022 - objective: VIM ipv6 operations, to do IPv6 Address Assignment - SLAAC + objective: VIM ipv6 operations, to do IPv6 Address Assignment - SLAAC, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc023.yml b/dovetail/testcase/ipv6.tc023.yml index 25193708..aea1a12b 100644 --- a/dovetail/testcase/ipv6.tc023.yml +++ b/dovetail/testcase/ipv6.tc023.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc023: name: dovetail.ipv6.tc023 - objective: VIM ipv6 operations, to do IPv6 Address Assignment - Dual Stack, SLAAC + objective: VIM ipv6 operations, to do IPv6 Address Assignment - Dual Stack, SLAAC, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc024.yml b/dovetail/testcase/ipv6.tc024.yml index 9a5f331e..8d248901 100644 --- a/dovetail/testcase/ipv6.tc024.yml +++ b/dovetail/testcase/ipv6.tc024.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc024: name: dovetail.ipv6.tc024 - objective: VIM ipv6 operations, to do IPv6 address assignment - multiple prefixes, SLAAC + objective: VIM ipv6 operations, to do IPv6 address assignment - multiple prefixes, SLAAC, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/testcase/ipv6.tc025.yml b/dovetail/testcase/ipv6.tc025.yml index 4cf3a005..35ef78c7 100644 --- a/dovetail/testcase/ipv6.tc025.yml +++ b/dovetail/testcase/ipv6.tc025.yml @@ -1,7 +1,7 @@ --- dovetail.ipv6.tc025: name: dovetail.ipv6.tc025 - objective: VIM ipv6 operations, to do IPv6 address assignment - dual stack, multiple prefixes, SLAAC + objective: VIM ipv6 operations, to do IPv6 address assignment - dual stack, multiple prefixes, SLAAC, scenario os-nosdn-nofeature dependent validate: type: functest testcase: tempest_custom diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py index 020617b8..83390e9d 100644 --- a/dovetail/utils/dovetail_utils.py +++ b/dovetail/utils/dovetail_utils.py @@ -17,6 +17,7 @@ from collections import Mapping, Set, Sequence import json import urllib2 from datetime import datetime +from distutils.version import LooseVersion def exec_log(verbose, logger, msg, level, flush=False): @@ -165,3 +166,27 @@ def show_progress_bar(length): sys.stdout.flush() sys.stdout.write('Running ' + '.' * length + '\r') sys.stdout.flush() + + +def check_docker_version(logger=None): + ret, server_ver = exec_cmd("sudo docker version -f'{{.Server.Version}}'", + logger=logger) + ret, client_ver = exec_cmd("sudo docker version -f'{{.Client.Version}}'", + logger=logger) + logger.info("\ndocker version: \nclient:%s\nserver:%s", client_ver, + server_ver) + if(LooseVersion(client_ver) <= LooseVersion('1.8.0') or + LooseVersion(server_ver) <= LooseVersion('1.8.0')): + logger.warn("\n\nDocker version is too old, may cause unpredictable " + "errors, you can update or install the lastest docker " + "for both host and container as below:\nwget -qO- " + "https://get.docker.com/ | sh\n\nClient:%s\nServer:%s", + client_ver, server_ver) + exit(-1) + + if(client_ver != server_ver): + logger.warn("\n\nVersion mismatch, may cause unpredictable " + "errors, you can update or install the lastest " + "docker for both host and container as below:\nwget " + "-qO- https://get.docker.com/ | " + "sh\n\nClient:%s\nServer:%s", client_ver, server_ver) diff --git a/dovetail/utils/local_db/init_db.py b/dovetail/utils/local_db/init_db.py new file mode 100644 index 00000000..246139c4 --- /dev/null +++ b/dovetail/utils/local_db/init_db.py @@ -0,0 +1,80 @@ +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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 +############################################################################## + +import requests +import json +import sys + +db_host_ip = sys.argv[1] +testapi_port = sys.argv[2] + +target_url = 'http://{}:{}/api/v1'.format(db_host_ip, testapi_port) +print(target_url) + + +def get(url): + return requests.get(url).json() + + +def post(url, data): + headers = {'Content-Type': 'application/json'} + res = requests.post(url, data=json.dumps(data), headers=headers) + print(res.text) + + +def pod(): + target = '{}/pods'.format(target_url) + + with open('pods.json', 'r') as f: + pods = json.load(f) + for p in pods: + post(target, p) + + add_pod('master', 'metal') + add_pod('virtual_136_2', 'virtual') + + +def project(): + target = '{}/projects'.format(target_url) + with open('projects.json', 'r') as f: + projects = json.load(f) + for p in projects: + post(target, p) + + +def cases(): + with open('cases.json', 'r') as f: + for line in f: + try: + cases = json.loads(line) + for c in cases["testcases"]: + target = '{}/projects/{}/cases'.format(target_url, + c['project_name']) + print(target) + post(target, c) + except: + print("useless data") + + +def add_pod(name, mode): + data = { + "role": "", + "name": name, + "details": '', + "mode": mode, + "creation_date": "2017-2-23 11:23:03.765581" + } + pod_url = '{}/pods'.format(target_url) + post(pod_url, data) + + +if __name__ == '__main__': + pod() + project() + cases() diff --git a/dovetail/utils/local_db/launch_db.sh b/dovetail/utils/local_db/launch_db.sh new file mode 100755 index 00000000..77646713 --- /dev/null +++ b/dovetail/utils/local_db/launch_db.sh @@ -0,0 +1,96 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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 +############################################################################## + +if [ "$#" -ne 1 ]; then + echo "Error: missing parameter! try again like this:" + echo "" + echo "./launch_db.sh 192.168.115.2" + echo "" + echo "parameters:" + echo " db_host_ip: your localhost ip address " + echo "" + exit 1 +fi + +export mongodb_port=${mongodb_port:-"27017"} +export testapi_port=${testapi_port:-"8000"} +export db_host_ip=${db_host_ip:-"$1"} + +set -e + +echo "===================" +echo "Create the mongodb." +echo "===================" + +set +e +# pull image kkltcjk/mongodb:reporting +mongodb_img="kkltcjk/mongodb:reporting" +echo "Step1: pull the image $mongodb_img." +sudo docker pull $mongodb_img +set -e + +container_name='mongodb' + +echo "Step2: remove the exist container with the same name '$container_name' if exists." +sudo docker ps -a -f "name=${container_name}" + +if [[ ! -z $(sudo docker ps -aq -f "name=${container_name}") ]]; then + sudo docker ps -aq -f "name=${container_name}" | xargs sudo docker rm -f +fi + +# run mongodb container +echo "Step3: run ${container_name} container." +cmd="sudo docker run -itd -p ${mongodb_port}:27017 --name ${container_name} ${mongodb_img}" +echo $cmd +${cmd} + +echo "Successfully create mongo DB." + + +echo "==========================" +echo "Create the testapi service." +echo "==========================" + +set +e +# pull image kkltcjk/testapi:reporting +testapi_img="kkltcjk/testapi:reporting" +echo "Step1: pull the image $testapi_img." +sudo docker pull $testapi_img +set -e + +container_name='testapi' + +echo "Step2: remove the exist container with the same name '$container_name' if exists." +sudo docker ps -a -f "name=${container_name}" + +if [[ ! -z $(sudo docker ps -aq -f "name=${container_name}") ]]; then + sudo docker ps -aq -f "name=${container_name}" | xargs sudo docker rm -f +fi + +# run testapi container +echo "Step3: run ${container_name} container." +cmd="sudo docker run -itd -p ${testapi_port}:8000 --name ${container_name} -e mongodb_url=mongodb://${db_host_ip}:${mongodb_port}/ ${testapi_img}" +echo $cmd +${cmd} + +echo "Wait for testapi to work..." +sleep 10 + +echo "=================================" +echo "Upload default project info to DB" +echo "=================================" + +echo "Init DB info..." +cmd="python ./init_db.py ${db_host_ip} ${testapi_port}" +echo ${cmd} +${cmd} + +echo "Successfully load DB info." + diff --git a/dovetail/utils/local_db/restart_db.sh b/dovetail/utils/local_db/restart_db.sh new file mode 100755 index 00000000..39b60e05 --- /dev/null +++ b/dovetail/utils/local_db/restart_db.sh @@ -0,0 +1,29 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD 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 +############################################################################## + + +if [ "$#" -ne 1 ]; then + echo "Error: missing parameter! try again like this:" + echo "" + echo "./restart_db.sh 192.168.115.2" + echo "" + echo "parameters:" + echo " db_host_ip: your localhost ip address" + echo "" + exit 1 +fi + +export mongodb_port=${mongodb_port:-"27017"} +export testapi_port=${testapi_port:-"8000"} +export db_host_ip=${db_host_ip:-"$1"} + +sudo docker rm -f testapi +sudo docker run -itd -p $testapi_port:8000 --name testapi \ + -e mongodb_url=mongodb://$db_host_ip:$mongodb_port/ kkltcjk/testapi:reporting |