summaryrefslogtreecommitdiffstats
path: root/dovetail
diff options
context:
space:
mode:
Diffstat (limited to 'dovetail')
-rw-r--r--dovetail/compliance/proposed_tests.yml8
-rwxr-xr-xdovetail/run.py1
-rw-r--r--dovetail/testcase/ipv6.tc002.yml2
-rw-r--r--dovetail/testcase/ipv6.tc003.yml1
-rw-r--r--dovetail/testcase/ipv6.tc004.yml2
-rw-r--r--dovetail/testcase/ipv6.tc005.yml2
-rw-r--r--dovetail/testcase/ipv6.tc018.yml2
-rw-r--r--dovetail/testcase/ipv6.tc019.yml2
-rw-r--r--dovetail/testcase/ipv6.tc020.yml2
-rw-r--r--dovetail/testcase/ipv6.tc021.yml2
-rw-r--r--dovetail/testcase/ipv6.tc022.yml2
-rw-r--r--dovetail/testcase/ipv6.tc023.yml2
-rw-r--r--dovetail/testcase/ipv6.tc024.yml2
-rw-r--r--dovetail/testcase/ipv6.tc025.yml2
-rw-r--r--dovetail/utils/dovetail_utils.py25
-rw-r--r--dovetail/utils/local_db/init_db.py80
-rwxr-xr-xdovetail/utils/local_db/launch_db.sh96
-rwxr-xr-xdovetail/utils/local_db/restart_db.sh29
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