summaryrefslogtreecommitdiffstats
path: root/dovetail
diff options
context:
space:
mode:
Diffstat (limited to 'dovetail')
-rw-r--r--dovetail/compliance/debug.yml5
-rw-r--r--dovetail/compliance/proposed_tests.yml15
-rw-r--r--dovetail/conf/bottlenecks_config.yml20
-rw-r--r--dovetail/conf/cmd_config.yml16
-rw-r--r--dovetail/conf/dovetail_config.yml30
-rw-r--r--dovetail/conf/functest_config.yml2
-rw-r--r--dovetail/conf/yardstick_config.yml17
-rw-r--r--dovetail/container.py191
-rw-r--r--dovetail/parser.py9
-rw-r--r--dovetail/patch/0001-Adjust-Yardstick-HA-test-cases-SLA.patch119
-rw-r--r--dovetail/report.py144
-rwxr-xr-xdovetail/run.py132
-rw-r--r--dovetail/test_runner.py123
-rw-r--r--dovetail/testcase.py78
-rw-r--r--dovetail/testcase/defcore.tc001.yml4
-rw-r--r--dovetail/testcase/ipv6.tc001.yml4
-rw-r--r--dovetail/testcase/ipv6.tc002.yml4
-rw-r--r--dovetail/testcase/ipv6.tc003.yml4
-rw-r--r--dovetail/testcase/ipv6.tc004.yml4
-rw-r--r--dovetail/testcase/ipv6.tc005.yml4
-rw-r--r--dovetail/testcase/ipv6.tc006.yml4
-rw-r--r--dovetail/testcase/ipv6.tc007.yml4
-rw-r--r--dovetail/testcase/ipv6.tc008.yml4
-rw-r--r--dovetail/testcase/ipv6.tc009.yml4
-rw-r--r--dovetail/testcase/ipv6.tc010.yml4
-rw-r--r--dovetail/testcase/ipv6.tc011.yml4
-rw-r--r--dovetail/testcase/ipv6.tc012.yml4
-rw-r--r--dovetail/testcase/ipv6.tc013.yml4
-rw-r--r--dovetail/testcase/ipv6.tc014.yml4
-rw-r--r--dovetail/testcase/ipv6.tc015.yml4
-rw-r--r--dovetail/testcase/ipv6.tc016.yml4
-rw-r--r--dovetail/testcase/ipv6.tc017.yml4
-rw-r--r--dovetail/testcase/ipv6.tc018.yml4
-rw-r--r--dovetail/testcase/ipv6.tc019.yml4
-rw-r--r--dovetail/testcase/ipv6.tc020.yml4
-rw-r--r--dovetail/testcase/ipv6.tc021.yml4
-rw-r--r--dovetail/testcase/ipv6.tc022.yml4
-rw-r--r--dovetail/testcase/ipv6.tc023.yml6
-rw-r--r--dovetail/testcase/ipv6.tc024.yml4
-rw-r--r--dovetail/testcase/ipv6.tc025.yml4
-rw-r--r--dovetail/testcase/nfvi.tc101.yml9
-rw-r--r--dovetail/testcase/nfvi.tc102.yml9
-rw-r--r--dovetail/testcase/resiliency.tc001.yml11
-rw-r--r--dovetail/testcase/sdnvpn.tc001.yml4
-rw-r--r--dovetail/testcase/sdnvpn.tc002.yml4
-rw-r--r--dovetail/testcase/sdnvpn.tc003.yml4
-rw-r--r--dovetail/testcase/sdnvpn.tc004.yml4
-rw-r--r--dovetail/testcase/sdnvpn.tc008.yml4
-rw-r--r--dovetail/testcase/tempest.tc001.yml15
-rw-r--r--dovetail/testcase/tempest.tc002.yml20
-rw-r--r--dovetail/testcase/tempest.tc003.yml19
-rw-r--r--dovetail/testcase/tempest.tc004.yml27
-rw-r--r--dovetail/testcase/tempest.tc005.yml20
-rw-r--r--dovetail/testcase/vping.tc001.yml (renamed from dovetail/testcase/nfvi.tc002.yml)4
-rw-r--r--dovetail/testcase/vping.tc002.yml (renamed from dovetail/testcase/nfvi.tc001.yml)4
-rw-r--r--dovetail/userconfig/hosts.yaml.sample2
-rw-r--r--dovetail/userconfig/pod.yaml.sample50
-rw-r--r--dovetail/userconfig/sdnvpn_config_testcase1.yaml33
-rw-r--r--dovetail/userconfig/sdnvpn_config_testcase2.yaml43
-rw-r--r--dovetail/userconfig/sdnvpn_config_testcase3.yaml32
-rw-r--r--dovetail/userconfig/sdnvpn_config_testcase4.yaml33
-rw-r--r--dovetail/userconfig/sdnvpn_config_testcase8.yaml29
-rw-r--r--dovetail/userconfig/tempest_conf.yaml.sample16
-rw-r--r--dovetail/utils/dovetail_config.py5
-rw-r--r--dovetail/utils/dovetail_utils.py89
-rw-r--r--dovetail/utils/local_db/cases.json36
-rw-r--r--dovetail/utils/local_db/get_db_schema.py61
-rw-r--r--dovetail/utils/local_db/init_db.py10
-rw-r--r--dovetail/utils/local_db/init_dovetail.py59
-rwxr-xr-xdovetail/utils/local_db/launch_db.sh52
-rw-r--r--dovetail/utils/local_db/pods.json382
-rw-r--r--dovetail/utils/local_db/projects.json218
-rwxr-xr-xdovetail/utils/local_db/restart_db.sh2
-rw-r--r--dovetail/utils/offline/config.yaml20
-rwxr-xr-xdovetail/utils/offline/download.py8
-rwxr-xr-xdovetail/utils/offline/load.py22
76 files changed, 2047 insertions, 320 deletions
diff --git a/dovetail/compliance/debug.yml b/dovetail/compliance/debug.yml
index 0ae734ea..9f6d2389 100644
--- a/dovetail/compliance/debug.yml
+++ b/dovetail/compliance/debug.yml
@@ -12,6 +12,5 @@ debug:
# - dovetail.ipv6.tc009
# - dovetail.ipv6.tc018
# - dovetail.ipv6.tc019
- - dovetail.nfvi.tc001
- - dovetail.nfvi.tc002
- - dovetail.nfvi.tc101
+ - dovetail.vping.tc001
+ - dovetail.vping.tc002
diff --git a/dovetail/compliance/proposed_tests.yml b/dovetail/compliance/proposed_tests.yml
index de892e5d..18b8cec9 100644
--- a/dovetail/compliance/proposed_tests.yml
+++ b/dovetail/compliance/proposed_tests.yml
@@ -5,6 +5,9 @@ proposed_tests:
# defcore,defcore.tc001 used for auto-method, defcore.tc002 used for manually method
- dovetail.defcore.tc001
# - dovetail.defcore.tc002
+ # vping
+ - dovetail.vping.tc001
+ - dovetail.vping.tc002
# ipv6
- dovetail.ipv6.tc001
- dovetail.ipv6.tc002
@@ -31,9 +34,6 @@ proposed_tests:
- dovetail.ipv6.tc023
- dovetail.ipv6.tc024
- dovetail.ipv6.tc025
- # nfvi, vping_ssh, vping_userdata
- - dovetail.nfvi.tc001
- - dovetail.nfvi.tc002
# HA
- dovetail.ha.tc001
- dovetail.ha.tc002
@@ -46,6 +46,13 @@ proposed_tests:
# sdnvpn
- dovetail.sdnvpn.tc001
- dovetail.sdnvpn.tc002
- - dovetail.sdnvpn.tc003
- dovetail.sdnvpn.tc004
- dovetail.sdnvpn.tc008
+ # tempest
+ - dovetail.tempest.tc001
+ - dovetail.tempest.tc002
+ - dovetail.tempest.tc003
+ - dovetail.tempest.tc004
+ - dovetail.tempest.tc005
+ # resiliency
+ - dovetail.resiliency.tc001
diff --git a/dovetail/conf/bottlenecks_config.yml b/dovetail/conf/bottlenecks_config.yml
new file mode 100644
index 00000000..43df8c55
--- /dev/null
+++ b/dovetail/conf/bottlenecks_config.yml
@@ -0,0 +1,20 @@
+---
+bottlenecks:
+ image_name: opnfv/bottlenecks
+ docker_tag: cvp.0.4.0
+ opts: '-id --privileged=true'
+ config:
+ dir: '/home/opnfv/userconfig'
+ pre_condition:
+ - 'echo test for precondition in bottlenecks'
+ cmds:
+ - '/home/opnfv/bottlenecks/run_tests.sh -c {{validate_testcase}}'
+ post_condition:
+ - 'echo test for postcondition in bottlenecks'
+ result:
+ dir: '/tmp'
+ file_path: 'bottlenecks.log'
+ openrc: '/tmp/admin_rc.sh'
+ extra_container:
+ - 'Bottlenecks-Yardstick'
+ - 'Bottlenecks-ELK'
diff --git a/dovetail/conf/cmd_config.yml b/dovetail/conf/cmd_config.yml
index da8c4732..58409f2b 100644
--- a/dovetail/conf/cmd_config.yml
+++ b/dovetail/conf/cmd_config.yml
@@ -21,21 +21,21 @@ cli:
- '-y'
path:
- 'yardstick/docker_tag'
- help: 'Overwrite tag for yardstick docker container (e.g. stable or latest)'
+ help: 'Overwrite tag for yardstick docker container (e.g. danube.3.2)'
func_tag:
flags:
- '--func_tag'
- '-f'
path:
- 'functest/docker_tag'
- help: 'Overwrite tag for functest docker container (e.g. stable or latest)'
- openrc:
+ help: 'Overwrite tag for functest docker container (e.g. cvp.0.5.0)'
+ bott_tag:
flags:
- - '--openrc'
- - '-o'
+ - '--bott_tag'
+ - '-b'
path:
- - 'openrc'
- help: 'Openstack Credential file location'
+ - 'bottlenecks/docker_tag'
+ help: 'Overwrite tag for bottlenecks docker container (e.g. cvp.0.4.0)'
control:
testsuite:
flags:
@@ -57,7 +57,7 @@ cli:
flags:
- '--report'
- '-r'
- help: 'push results to DB (e.g. --report http://192.168.135.2:8000/api/v1)'
+ help: 'push results to DB (e.g. --report http://192.168.135.2:8000/api/v1/results)'
offline:
flags:
- '--offline'
diff --git a/dovetail/conf/dovetail_config.yml b/dovetail/conf/dovetail_config.yml
index 934ff6a6..de849a52 100644
--- a/dovetail/conf/dovetail_config.yml
+++ b/dovetail/conf/dovetail_config.yml
@@ -5,7 +5,20 @@ report_dest: 'file'
result_file: 'results.json'
# OPENSTACK Credential file
-openrc: '/home/opnfv/dovetail/openrc.sh'
+env_file: 'env_config.sh'
+
+# POD info file
+pod_file: 'pod.yaml'
+
+# JUMPSERVER private key used in pod_file to login hosts
+# If use password to login hosts, there's no need to provide the private key
+pri_key: 'id_rsa'
+
+# SDNVPN offline image
+sdnvpn_image: 'ubuntu-16.04-server-cloudimg-amd64-disk1.img'
+
+# Tempest image
+cirros_image: 'cirros-0.3.5-x86_64-disk.img'
COMPLIANCE_PATH: compliance/
TESTCASE_PATH: testcase/
@@ -20,9 +33,10 @@ testarea_supported:
- example
- ha
- ipv6
- - nfvi
- sdnvpn
- - vimops
+ - vping
+ - resiliency
+ - tempest
functest_testsuite:
- refstack_defcore
@@ -57,10 +71,12 @@ parameters:
include_config:
- functest_config.yml
- yardstick_config.yml
+ - bottlenecks_config.yml
test_project:
- 'yardstick'
- 'functest'
+ - 'bottlenecks'
validate_input:
valid_docker_tag:
@@ -69,3 +85,11 @@ validate_input:
- 'danube.1.0'
- 'danube.2.0'
- 'danube.3.0'
+ - 'danube.3.1'
+ - 'danube.3.2'
+ - 'cvp.0.1.0'
+ - 'cvp.0.2.0'
+ - 'cvp.0.3.0'
+ - 'cvp.0.4.0'
+ - 'cvp.0.5.0'
+ - 'cvp.0.6.0'
diff --git a/dovetail/conf/functest_config.yml b/dovetail/conf/functest_config.yml
index 460506a6..11c49e32 100644
--- a/dovetail/conf/functest_config.yml
+++ b/dovetail/conf/functest_config.yml
@@ -1,7 +1,7 @@
---
functest:
image_name: opnfv/functest
- docker_tag: latest
+ docker_tag: cvp.0.5.0
opts: '-id --privileged=true'
config:
dir: '/home/opnfv/userconfig'
diff --git a/dovetail/conf/yardstick_config.yml b/dovetail/conf/yardstick_config.yml
index ae59a9ec..f49d044d 100644
--- a/dovetail/conf/yardstick_config.yml
+++ b/dovetail/conf/yardstick_config.yml
@@ -1,22 +1,28 @@
---
yardstick:
image_name: opnfv/yardstick
- docker_tag: latest
+ docker_tag: danube.3.2
opts: '-id --privileged=true'
config:
dir: '/home/opnfv/userconfig'
pre_condition:
- - ''
# - 'cd /home/opnfv/repos/yardstick && source tests/ci/prepare_env.sh &&
# source tests/ci/clean_images.sh && cleanup'
# - 'cd /home/opnfv/repos/yardstick && source tests/ci/prepare_env.sh &&
# source tests/ci/load_images.sh'
+ # Copy Yardstick bugfix patches to Yardstick repository
+ - "cp -r /home/opnfv/userconfig/patch/ /home/opnfv/repos/yardstick/"
+ # Config git user info for applying bugfix patches
+ - "cd /home/opnfv/repos/yardstick && git config --global user.email 'you@example.com'"
+ - "cd /home/opnfv/repos/yardstick && git config --global user.name 'Your Name'"
+ # Apply all bugfix patchs on tempest code
+ - "cd /home/opnfv/repos/yardstick && git am ./patch/*.patch"
cmds:
- 'mkdir -p /home/opnfv/yardstick/results/'
- "cd /home/opnfv/repos/yardstick && source tests/ci/prepare_env.sh &&
yardstick -d task start tests/opnfv/test_cases/{{validate_testcase}}.yaml
- --output-file /home/opnfv/yardstick/results/{{validate_testcase}}.out
- --task-args '{'file': '/home/opnfv/userconfig/pod.yaml'}'"
+ --output-file /home/opnfv/yardstick/results/{{testcase}}.out
+ --task-args '{'file': '/home/opnfv/userconfig/pre_config/pod.yaml'}'"
post_condition:
- ''
result:
@@ -25,3 +31,6 @@ yardstick:
file_path: 'yardstick.log'
key_path: '/root/.ssh/id_rsa'
openrc: '/etc/yardstick/openstack.creds'
+ yard_conf:
+ src_file: '/home/opnfv/repos/yardstick/etc/yardstick/yardstick.conf.sample'
+ dest_file: '/etc/yardstick/yardstick.conf'
diff --git a/dovetail/container.py b/dovetail/container.py
index ae7c8e2e..14045165 100644
--- a/dovetail/container.py
+++ b/dovetail/container.py
@@ -8,6 +8,7 @@
#
import os
+import yaml
import utils.dovetail_logger as dt_logger
import utils.dovetail_utils as dt_utils
@@ -17,7 +18,8 @@ from utils.dovetail_config import DovetailConfig as dt_cfg
class Container(object):
container_list = {}
- has_pull_latest_image = {'yardstick': False, 'functest': False}
+ has_pull_latest_image = {'yardstick': False, 'functest': False,
+ 'bottlenecks': False}
logger = None
@@ -41,20 +43,23 @@ class Container(object):
return '%s:%s' % (dt_cfg.dovetail_config[type]['image_name'],
dt_cfg.dovetail_config[type]['docker_tag'])
except KeyError as e:
- cls.logger.error('There is no %s in %s config file.', e, type)
+ cls.logger.exception(
+ 'There is no key {} in {} config file.'.format(e, type))
return None
# get the openrc_volume for creating the container
@classmethod
def openrc_volume(cls, type):
dovetail_config = dt_cfg.dovetail_config
- dovetail_config['openrc'] = os.path.abspath(dovetail_config['openrc'])
+ dovetail_config['openrc'] = os.path.join(dovetail_config['config_dir'],
+ dovetail_config['env_file'])
if os.path.isfile(dovetail_config['openrc']):
openrc = ' -v %s:%s ' % (dovetail_config['openrc'],
dovetail_config[type]['openrc'])
return openrc
else:
- cls.logger.error("File %s is not exist", dovetail_config['openrc'])
+ cls.logger.error(
+ "File {} doesn't exist.".format(dovetail_config['openrc']))
return None
# set functest envs and TEST_DB_URL for creating functest container
@@ -72,8 +77,7 @@ class Container(object):
if 'sdnvpn' in testcase_name:
ins_type = "-e INSTALLER_TYPE=netvirt"
scenario = " -e DEPLOY_SCENARIO=bgpvpn"
- node = " -e NODE_NAME=master"
- envs = "%s %s %s" % (ins_type, scenario, node)
+ envs = "%s %s" % (ins_type, scenario)
dovetail_config = dt_cfg.dovetail_config
if dovetail_config['report_dest'].startswith("http"):
@@ -99,18 +103,40 @@ class Container(object):
cls.logger.error("Can't find any external network.")
return None
- if dovetail_config['report_dest'].startswith("http"):
- cls.logger.info("Yardstick can't push results to DB.")
- cls.logger.info("Results will be stored with files.")
-
log_vol = '-v %s:%s ' % (dovetail_config['result_dir'],
dovetail_config["yardstick"]['result']['log'])
- key_path = os.path.join(dovetail_config['userconfig_dir'], 'id_rsa')
- key_con_path = dovetail_config["yardstick"]['result']['key_path']
- key_vol = '-v %s:%s ' % (key_path, key_con_path)
+
+ # for yardstick, support pod.yaml configuration
+ pod_file = os.path.join(dovetail_config['config_dir'],
+ dovetail_config['pod_file'])
+ if not os.path.isfile(pod_file):
+ cls.logger.error("File {} doesn't exist.".format(pod_file))
+ return None
+ key_file = os.path.join(dovetail_config['config_dir'],
+ dovetail_config['pri_key'])
+ key_container_path = dovetail_config["yardstick"]['result']['key_path']
+ if not os.path.isfile(key_file):
+ cls.logger.debug("Key file {} is not found, must use password in "
+ "{} to do HA test.".format(key_file, pod_file))
+ key_vol = ''
+ else:
+ key_vol = '-v %s:%s ' % (key_file, key_container_path)
return "%s %s %s" % (envs, log_vol, key_vol)
@classmethod
+ def set_bottlenecks_config(cls, testcase_name):
+ dovetail_config = dt_cfg.dovetail_config
+ yard_tag = dovetail_config['yardstick']['docker_tag']
+ docker_vol = '-v /var/run/docker.sock:/var/run/docker.sock'
+ env = ('-e Yardstick_TAG={} -e OUTPUT_FILE={}.out'
+ .format(yard_tag, testcase_name))
+ report = ""
+ if dovetail_config['report_dest'].startswith("http"):
+ report = ("-e BOTTLENECKS_DB_TARGET={}"
+ .format(dovetail_config['report_dest']))
+ return "{} {} {}".format(docker_vol, env, report)
+
+ @classmethod
def create(cls, type, testcase_name):
dovetail_config = dt_cfg.dovetail_config
docker_image = cls.get_docker_image(type)
@@ -123,42 +149,91 @@ class Container(object):
# CI_DEBUG is used for showing the debug logs of the upstream projects
# BUILD_TAG is the unique id for this test
- envs = ' -e CI_DEBUG=true'
+ envs = ' -e CI_DEBUG=true -e NODE_NAME=master'
envs = envs + ' -e BUILD_TAG=%s-%s' % (dovetail_config['build_tag'],
testcase_name)
+ hosts_config = ""
+ hosts_config_file = os.path.join(dovetail_config['config_dir'],
+ 'hosts.yaml')
+ try:
+ with open(hosts_config_file) as f:
+ hosts_info = yaml.safe_load(f)
+ if hosts_info['hosts_info']:
+ for host in hosts_info['hosts_info']:
+ dt_utils.add_hosts_info(host)
+ hosts_config += " --add-host "
+ hosts_config += str(host)
+ cls.logger.debug('Get hosts info {}.'.format(host))
+ except Exception:
+ cls.logger.warn('Failed to get hosts info in {}, '
+ 'maybe some issues with domain name resolution.'
+ .format(hosts_config_file))
+
config = ""
if type.lower() == "functest":
config = cls.set_functest_config(testcase_name)
if type.lower() == "yardstick":
config = cls.set_yardstick_config()
+ if type.lower() == "bottlenecks":
+ config = cls.set_bottlenecks_config(testcase_name)
if not config:
return None
# for refstack, support user self_defined configuration
- # for yardstick, support pod.yaml configuration
- pod_file = os.path.join(dovetail_config['userconfig_dir'], 'pod.yaml')
- if type.lower() == "yardstick" and not os.path.exists(pod_file):
- cls.logger.error("File %s doesn't exist.", pod_file)
- return None
- key_file = os.path.join(dovetail_config['userconfig_dir'], 'id_rsa')
- if type.lower() == "yardstick" and not os.path.exists(key_file):
- cls.logger.debug("File %s doesn't exist.", key_file)
- cls.logger.debug("Can just use password in %s.", pod_file)
config_volume = \
- ' -v %s:%s ' % (dovetail_config['userconfig_dir'],
- dovetail_config["functest"]['config']['dir'])
+ ' -v %s:%s ' % (os.getenv("DOVETAIL_HOME"),
+ dovetail_config[type]['config']['dir'])
+
+ cacert_volume = ""
+ https_enabled = dt_utils.check_https_enabled(cls.logger)
+ cacert = os.getenv('OS_CACERT',)
+ if https_enabled:
+ cls.logger.info("https enabled...")
+ if cacert is not None:
+ if not os.path.isfile(cacert):
+ cls.logger.error("Env variable 'OS_CACERT' is set to {} "
+ "but the file does not exist."
+ .format(cacert))
+ return None
+ elif not dovetail_config['config_dir'] in cacert:
+ cls.logger.error("Credential file has to be put in {}, "
+ "which can be mount into container."
+ .format(dovetail_config['config_dir']))
+ return None
+ cacert_volume = ' -v %s:%s ' % (cacert, cacert)
+ else:
+ cls.logger.warn("https enabled, OS_CACERT not set, insecure "
+ "connection used or OS_CACERT missed")
result_volume = ' -v %s:%s ' % (dovetail_config['result_dir'],
dovetail_config[type]['result']['dir'])
- cmd = 'sudo docker run %s %s %s %s %s %s %s /bin/bash' % \
- (opts, envs, config, openrc, config_volume,
- result_volume, docker_image)
+ cmd = 'sudo docker run %s %s %s %s %s %s %s %s %s /bin/bash' % \
+ (opts, envs, config, hosts_config, openrc, cacert_volume,
+ config_volume, result_volume, docker_image)
dt_utils.exec_cmd(cmd, cls.logger)
ret, container_id = \
dt_utils.exec_cmd("sudo docker ps | grep " + docker_image +
" | awk '{print $1}' | head -1", cls.logger)
cls.container_list[type] = container_id
+
+ if 'sdnvpn' in str(testcase_name):
+ prefix_path = dt_cfg.dovetail_config[type]['config']['dir']
+ file_name = dt_cfg.dovetail_config['sdnvpn_image']
+ src_path = os.path.join(prefix_path, 'pre_config', file_name)
+ dest_path = '/home/opnfv/functest/images'
+ Container.pre_copy(container_id, src_path, dest_path)
+
+ if type.lower() == 'functest':
+ prefix_path = dt_cfg.dovetail_config[type]['config']['dir']
+ file_name = dt_cfg.dovetail_config['cirros_image']
+ src_path = os.path.join(prefix_path, 'pre_config', file_name)
+ dest_path = '/home/opnfv/functest/images'
+ Container.pre_copy(container_id, src_path, dest_path)
+
+ if type.lower() == 'yardstick':
+ cls.set_yardstick_conf_file(container_id)
+
return container_id
@classmethod
@@ -177,15 +252,15 @@ class Container(object):
cmd = "sudo docker ps -aq -f 'ancestor=%s'" % (image_id)
ret, msg = dt_utils.exec_cmd(cmd, cls.logger)
if msg and ret == 0:
- cls.logger.debug('image %s has containers, skip.', image_id)
+ cls.logger.debug('Image {} has containers, skip.'.format(image_id))
return True
cmd = 'sudo docker rmi %s' % (image_id)
- cls.logger.debug('remove image %s', image_id)
+ cls.logger.debug('Remove image {}.'.format(image_id))
ret, msg = dt_utils.exec_cmd(cmd, cls.logger)
if ret == 0:
- cls.logger.debug('remove image %s successfully', image_id)
+ cls.logger.debug('Remove image {} successfully.'.format(image_id))
return True
- cls.logger.error('fail to remove image %s.', image_id)
+ cls.logger.error('Failed to remove image {}.'.format(image_id))
return False
@classmethod
@@ -193,9 +268,10 @@ class Container(object):
cmd = 'sudo docker pull %s' % (image_name)
ret, msg = dt_utils.exec_cmd(cmd, cls.logger)
if ret != 0:
- cls.logger.error('fail to pull docker image %s!', image_name)
+ cls.logger.error(
+ 'Failed to pull docker image {}!'.format(image_name))
return False
- cls.logger.debug('success to pull docker image %s!', image_name)
+ cls.logger.debug('Success to pull docker image {}!'.format(image_name))
return True
@classmethod
@@ -204,7 +280,8 @@ class Container(object):
if not docker_image:
return None
if cls.has_pull_latest_image[validate_type] is True:
- cls.logger.debug('%s is already the newest version.', docker_image)
+ cls.logger.debug(
+ '{} is already the newest version.'.format(docker_image))
return docker_image
old_image_id = cls.get_image_id(docker_image)
if not cls.pull_image_only(docker_image):
@@ -212,13 +289,14 @@ class Container(object):
cls.has_pull_latest_image[validate_type] = True
new_image_id = cls.get_image_id(docker_image)
if not new_image_id:
- cls.logger.error("fail to get the new image's id %s", docker_image)
+ cls.logger.error(
+ "Failed to get the id of image {}.".format(docker_image))
return None
if not old_image_id:
return docker_image
if new_image_id == old_image_id:
- cls.logger.debug('image %s has no changes, no need to remove.',
- docker_image)
+ cls.logger.debug('Image {} has no changes, no need to remove.'
+ .format(docker_image))
else:
cls.remove_image(old_image_id)
return docker_image
@@ -230,11 +308,23 @@ class Container(object):
return image_id
@classmethod
- def clean(cls, container_id):
- cmd1 = 'sudo docker stop %s' % (container_id)
- dt_utils.exec_cmd(cmd1, cls.logger)
- cmd2 = 'sudo docker rm %s' % (container_id)
- dt_utils.exec_cmd(cmd2, cls.logger)
+ def check_container_exist(cls, container_name):
+ cmd = ('sudo docker ps -aq -f name={}'.format(container_name))
+ ret, msg = dt_utils.exec_cmd(cmd, cls.logger)
+ if ret == 0 and msg:
+ return True
+ return False
+
+ @classmethod
+ def clean(cls, container_id, valid_type):
+ cmd = ('sudo docker rm -f {}'.format(container_id))
+ dt_utils.exec_cmd(cmd, cls.logger)
+ if valid_type.lower() == 'bottlenecks':
+ containers = dt_cfg.dovetail_config[valid_type]['extra_container']
+ for container in containers:
+ if cls.check_container_exist(container):
+ cmd = ('sudo docker rm -f {}'.format(container))
+ dt_utils.exec_cmd(cmd, cls.logger)
@classmethod
def exec_cmd(cls, container_id, sub_cmd, exit_on_error=False):
@@ -250,3 +340,18 @@ class Container(object):
return (1, 'src_path or dest_path is empty')
cmd = 'cp %s %s' % (src_path, dest_path)
return cls.exec_cmd(container_id, cmd, exit_on_error)
+
+ @classmethod
+ def set_yardstick_conf_file(cls, container_id):
+ valid_type = 'yardstick'
+ src = dt_cfg.dovetail_config[valid_type]['yard_conf']['src_file']
+ dest = dt_cfg.dovetail_config[valid_type]['yard_conf']['dest_file']
+ cls.pre_copy(container_id, src, dest)
+ url = dt_cfg.dovetail_config['report_dest']
+ if url.startswith("http"):
+ cmd = ("sed -i '16s#http://127.0.0.1:8000/results#{}#g' {}"
+ .format(url, dest))
+ cls.exec_cmd(container_id, cmd)
+ if url.lower() == 'file':
+ cmd = ("sed -i '12s/http/file/g' {}".format(dest))
+ cls.exec_cmd(container_id, cmd)
diff --git a/dovetail/parser.py b/dovetail/parser.py
index fdde4f9e..1b539c85 100644
--- a/dovetail/parser.py
+++ b/dovetail/parser.py
@@ -32,15 +32,16 @@ class Parser(object):
kwargs = {}
for arg in dt_cfg.dovetail_config['parameters']:
path = eval(arg['path'])
- cls.logger.debug('name: %s, eval path: %s ',
- arg['name'], path)
+ cls.logger.debug(
+ 'name: {}, eval path: {}'.format(arg['name'], path))
kwargs[arg['name']] = \
dt_utils.get_obj_by_path(testcase.testcase, path)
- cls.logger.debug('kwargs: %s', kwargs)
+ cls.logger.debug('kwargs: {}'.format(kwargs))
cmd_lines = template.render(**kwargs)
except Exception as e:
- cls.logger.error('failed to parse cmd %s, exception:%s', cmd, e)
+ cls.logger.exception(
+ 'Failed to parse cmd {}, exception: {}'.format(cmd, e))
return None
return cmd_lines
diff --git a/dovetail/patch/0001-Adjust-Yardstick-HA-test-cases-SLA.patch b/dovetail/patch/0001-Adjust-Yardstick-HA-test-cases-SLA.patch
new file mode 100644
index 00000000..92c68032
--- /dev/null
+++ b/dovetail/patch/0001-Adjust-Yardstick-HA-test-cases-SLA.patch
@@ -0,0 +1,119 @@
+From 3beb6cdffa830f009d246e6352efa7ccf70463a0 Mon Sep 17 00:00:00 2001
+From: Jing Lu <hanazawarei@icloud.com>
+Date: Sat, 26 Aug 2017 10:07:52 +0800
+Subject: [PATCH] Adjust Yardstick HA test cases SLA
+
+---
+ tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml | 4 ++--
+ tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml | 4 ++--
+ tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml | 4 ++--
+ tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml | 4 ++--
+ tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml | 4 ++--
+ tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml | 4 ++--
+ 6 files changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
+index 5d3057d..c1d3645 100644
+--- a/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
++++ b/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
+@@ -34,10 +34,10 @@ scenarios:
+ - monitor_type: "process"
+ process_name: "nova-api"
+ host: node1
+- monitor_time: 20
++ monitor_time: 30
+ monitor_number: 3
+ sla:
+- max_recover_time: 20
++ max_recover_time: 30
+
+ nodes:
+ node1: node1.LF
+diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
+index d851d5a..8c7348b 100644
+--- a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
++++ b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
+@@ -33,10 +33,10 @@ scenarios:
+ - monitor_type: "process"
+ process_name: "neutron-server"
+ host: node1
+- monitor_time: 20
++ monitor_time: 30
+ monitor_number: 3
+ sla:
+- max_recover_time: 20
++ max_recover_time: 30
+
+ nodes:
+ node1: node1.LF
+diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
+index ad81a14..635e4d9 100644
+--- a/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
++++ b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
+@@ -33,10 +33,10 @@ scenarios:
+ - monitor_type: "process"
+ process_name: "keystone"
+ host: node1
+- monitor_time: 20
++ monitor_time: 30
+ monitor_number: 3
+ sla:
+- max_recover_time: 20
++ max_recover_time: 30
+
+ nodes:
+ node1: node1.LF
+diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
+index cc99036..57fa739 100644
+--- a/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
++++ b/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
+@@ -33,10 +33,10 @@ scenarios:
+ - monitor_type: "process"
+ process_name: "glance-api"
+ host: node1
+- monitor_time: 20
++ monitor_time: 30
+ monitor_number: 3
+ sla:
+- max_recover_time: 20
++ max_recover_time: 30
+
+ nodes:
+ node1: node1.LF
+diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
+index 237f845..06ad641 100644
+--- a/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
++++ b/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
+@@ -33,10 +33,10 @@ scenarios:
+ - monitor_type: "process"
+ process_name: "cinder-api"
+ host: node1
+- monitor_time: 20
++ monitor_time: 30
+ monitor_number: 3
+ sla:
+- max_recover_time: 20
++ max_recover_time: 30
+
+ nodes:
+ node1: node1.LF
+diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
+index 9e05cc8..e3f0934 100644
+--- a/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
++++ b/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
+@@ -32,10 +32,10 @@ scenarios:
+ key: "service-status"
+ process_name: "haproxy"
+ host: node1
+- monitor_time: 20
++ monitor_time: 30
+ monitor_number: 3
+ sla:
+- max_recover_time: 20
++ max_recover_time: 30
+
+ -
+ monitor_type: "openstack-cmd"
+--
+2.13.1 (Apple Git-89)
+
diff --git a/dovetail/report.py b/dovetail/report.py
index 0d83831d..fa6a0ba4 100644
--- a/dovetail/report.py
+++ b/dovetail/report.py
@@ -13,6 +13,7 @@ import urllib2
import re
import os
import datetime
+import tarfile
from pbr import version
@@ -25,7 +26,7 @@ from testcase import Testcase
class Report(object):
- results = {'functest': {}, 'yardstick': {}, 'shell': {}}
+ results = {'functest': {}, 'yardstick': {}, 'bottlenecks': {}, 'shell': {}}
logger = None
@@ -112,8 +113,8 @@ class Report(object):
'|'.join(dt_cfg.dovetail_config['testarea_supported']))
area = pattern.findall(testcase['name'])
if not area:
- cls.logger.error("testcase %s not in supported testarea",
- testcase['name'])
+ cls.logger.error("Test case {} not in supported testarea."
+ .format(testcase['name']))
return None
area = area[0]
testarea_scope.append(area)
@@ -162,6 +163,17 @@ class Report(object):
# cls.save(report_txt)
return report_txt
+ @classmethod
+ def save_logs(cls):
+ logs_gz = "logs.tar.gz"
+ result_dir = dt_cfg.dovetail_config['result_dir']
+
+ with tarfile.open(os.path.join(result_dir, logs_gz), "w:gz") as f_out:
+ files = os.listdir(result_dir)
+ for f in files:
+ if f not in ['workspace']:
+ f_out.add(os.path.join(result_dir, f))
+
# save to disk as default
@classmethod
def save(cls, report):
@@ -170,9 +182,9 @@ class Report(object):
with open(os.path.join(dt_cfg.dovetail_config['result_dir'],
report_file_name), 'w') as report_file:
report_file.write(report)
- cls.logger.info('save report to %s', report_file_name)
+ cls.logger.info('Save report to {}'.format(report_file_name))
except Exception:
- cls.logger.error('Failed to save: %s', report_file_name)
+ cls.logger.exception('Failed to save: {}'.format(report_file_name))
@classmethod
def get_result(cls, testcase):
@@ -180,7 +192,7 @@ class Report(object):
type = testcase.validate_type()
crawler = CrawlerFactory.create(type)
if crawler is None:
- cls.logger.error('crawler is None:%s', testcase.name())
+ cls.logger.error('Crawler is None: {}'.format(testcase.name()))
return None
# if validate_testcase in cls.results[type]:
@@ -191,12 +203,12 @@ class Report(object):
if result is not None:
cls.results[type][validate_testcase] = result
# testcase.script_result_acquired(True)
- cls.logger.debug('testcase: %s -> result acquired',
- validate_testcase)
+ cls.logger.debug(
+ 'Test case: {} -> result acquired'.format(validate_testcase))
else:
retry = testcase.increase_retry()
- cls.logger.debug('testcase: %s -> result acquired retry:%d',
- validate_testcase, retry)
+ cls.logger.debug('Test case: {} -> result acquired retry: {}'
+ .format(validate_testcase, retry))
return result
@@ -206,7 +218,7 @@ class FunctestCrawler(object):
def __init__(self):
self.type = 'functest'
- self.logger.debug('create crawler:%s', self.type)
+ self.logger.debug('Create crawler: {}'.format(self.type))
@classmethod
def create_log(cls):
@@ -234,14 +246,15 @@ class FunctestCrawler(object):
os.path.join(dovetail_config['result_dir'],
dovetail_config[self.type]['result']['file_path'])
if not os.path.exists(file_path):
- self.logger.info('result file not found: %s', file_path)
+ self.logger.error('Result file not found: {}'.format(file_path))
return None
if testcase_name in dt_cfg.dovetail_config['functest_testcase']:
complex_testcase = False
elif testcase_name in dt_cfg.dovetail_config['functest_testsuite']:
complex_testcase = True
else:
- self.logger.error("Wrong Functest test case %s.", testcase_name)
+ self.logger.error(
+ "Wrong Functest test case {}.".format(testcase_name))
return None
with open(file_path, 'r') as f:
for jsonfile in f:
@@ -264,7 +277,8 @@ class FunctestCrawler(object):
"errors": error_case,
"skipped": skipped_case}
except KeyError as e:
- self.logger.error("Key error, exception: %s", e)
+ self.logger.exception(
+ "Result data don't have key {}.".format(e))
return None
except ValueError:
continue
@@ -273,20 +287,20 @@ class FunctestCrawler(object):
'timestop': timestop, 'duration': duration,
'details': details}
- self.logger.debug('Results: %s', str(json_results))
+ self.logger.debug('Results: {}'.format(str(json_results)))
return json_results
def crawl_from_url(self, testcase=None):
url = "%s?case=%s&last=1" % \
(dt_cfg.dovetail_config['report_dest'],
testcase.validate_testcase())
- self.logger.debug("Query to rest api: %s", url)
+ self.logger.debug("Query to rest api: {}".format(url))
try:
data = json.load(urllib2.urlopen(url))
return data['results'][0]
except Exception as e:
- self.logger.error("Cannot read content from the url: %s, "
- "exception: %s", url, e)
+ self.logger.exception("Cannot read content from the url: {}, "
+ "exception: {}".format(url, e))
return None
@@ -296,7 +310,7 @@ class YardstickCrawler(object):
def __init__(self):
self.type = 'yardstick'
- self.logger.debug('create crawler:%s', self.type)
+ self.logger.debug('Create crawler: {}'.format(self.type))
@classmethod
def create_log(cls):
@@ -313,9 +327,9 @@ class YardstickCrawler(object):
def crawl_from_file(self, testcase=None):
file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
- testcase.validate_testcase() + '.out')
+ testcase.name() + '.out')
if not os.path.exists(file_path):
- self.logger.info('result file not found: %s', file_path)
+ self.logger.error('Result file not found: {}'.format(file_path))
return None
criteria = 'FAIL'
with open(file_path, 'r') as f:
@@ -327,9 +341,57 @@ class YardstickCrawler(object):
if 1 == v:
criteria = 'PASS'
except KeyError as e:
- self.logger.error('pass flag not found %s', e)
+ self.logger.exception(
+ 'Pass flag not found {}'.format(e))
json_results = {'criteria': criteria}
- self.logger.debug('Results: %s', str(json_results))
+ self.logger.debug('Results: {}'.format(str(json_results)))
+ return json_results
+
+ def crawl_from_url(self, testcase=None):
+ return None
+
+
+class BottlenecksCrawler(object):
+
+ logger = None
+
+ def __init__(self):
+ self.type = 'bottlenecks'
+ self.logger.debug('Create crawler: {}'.format(self.type))
+
+ @classmethod
+ def create_log(cls):
+ cls.logger = \
+ dt_logger.Logger(__name__ + '.BottlenecksCrawler').getLogger()
+
+ def crawl(self, testcase=None):
+ report_dest = dt_cfg.dovetail_config['report_dest']
+ if report_dest.lower() == 'file':
+ return self.crawl_from_file(testcase)
+
+ if report_dest.lower().startswith('http'):
+ return self.crawl_from_url(testcase)
+
+ def crawl_from_file(self, testcase=None):
+ file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
+ testcase.name() + '.out')
+ if not os.path.exists(file_path):
+ self.logger.error('Result file not found: {}'.format(file_path))
+ return None
+ criteria = 'FAIL'
+ with open(file_path, 'r') as f:
+ for jsonfile in f:
+ data = json.loads(jsonfile)
+ try:
+ if 'PASS' == data["data_body"]["result"]:
+ criteria = 'PASS'
+ else:
+ criteria = 'FAIL'
+ break
+ except KeyError as e:
+ self.logger.exception('Pass flag not found {}'.format(e))
+ json_results = {'criteria': criteria}
+ self.logger.debug('Results: {}'.format(str(json_results)))
return json_results
def crawl_from_url(self, testcase=None):
@@ -361,6 +423,7 @@ class CrawlerFactory(object):
CRAWLER_MAP = {'functest': FunctestCrawler,
'yardstick': YardstickCrawler,
+ 'bottlenecks': BottlenecksCrawler,
'shell': ShellCrawler}
@classmethod
@@ -394,14 +457,16 @@ class FunctestChecker(object):
sub_testcase = re.sub("\[.*?\]", "", sub_testcase)
reg = sub_testcase + '[\s+\d+]'
find_reg = re.compile(reg)
- match = find_reg.findall(result)
- if match:
- return True
+ for tc in result:
+ match = find_reg.findall(tc)
+ if match:
+ return True
reg = sub_testcase + '$'
find_reg = re.compile(reg)
- match = find_reg.findall(result)
- if match:
- return True
+ for tc in result:
+ match = find_reg.findall(tc)
+ if match:
+ return True
return False
def check(self, testcase, db_result):
@@ -420,7 +485,7 @@ class FunctestChecker(object):
testcase_passed = 'SKIP'
for sub_testcase in sub_testcase_list:
- self.logger.debug('check sub_testcase:%s', sub_testcase)
+ self.logger.debug('Check sub_testcase: {}'.format(sub_testcase))
try:
if self.get_sub_testcase(sub_testcase,
db_result['details']['errors']):
@@ -463,6 +528,24 @@ class YardstickChecker(object):
return
+class BottlenecksChecker(object):
+
+ logger = None
+
+ @classmethod
+ def create_log(cls):
+ cls.logger = \
+ dt_logger.Logger(__name__ + '.BottlenecksChecker').getLogger()
+
+ @staticmethod
+ def check(testcase, result):
+ if not result:
+ testcase.passed('FAIL')
+ else:
+ testcase.passed(result['criteria'])
+ return
+
+
class ShellChecker(object):
@staticmethod
@@ -477,6 +560,7 @@ class CheckerFactory(object):
CHECKER_MAP = {'functest': FunctestChecker,
'yardstick': YardstickChecker,
+ 'bottlenecks': BottlenecksChecker,
'shell': ShellChecker}
@classmethod
diff --git a/dovetail/run.py b/dovetail/run.py
index 5b4dca8e..1133b864 100755
--- a/dovetail/run.py
+++ b/dovetail/run.py
@@ -22,8 +22,8 @@ from container import Container
from testcase import Testcase
from testcase import Testsuite
from report import Report
-from report import FunctestCrawler, YardstickCrawler
-from report import FunctestChecker, YardstickChecker
+from report import FunctestCrawler, YardstickCrawler, BottlenecksCrawler
+from report import FunctestChecker, YardstickChecker, BottlenecksChecker
from utils.dovetail_config import DovetailConfig as dt_cfg
from test_runner import DockerRunner, ShellRunner
@@ -46,11 +46,11 @@ def run_test(testsuite, testarea, logger):
duration = 0
start_time = time.time()
for testcase_name in testarea_list:
- logger.info('>>[testcase]: %s', testcase_name)
+ logger.info('>>[testcase]: {}'.format(testcase_name))
testcase = Testcase.get(testcase_name)
if testcase is None:
- logger.error('test case %s is not defined in testcase folder, \
- skipping', testcase_name)
+ logger.error('Test case {} is not defined in testcase folder, '
+ 'skipping.'.format(testcase_name))
continue
run_testcase = True
@@ -77,27 +77,30 @@ def check_tc_result(testcase, logger):
dovetail_result = os.path.join(result_dir,
dt_cfg.dovetail_config['result_file'])
if dt_cfg.dovetail_config['report_dest'].startswith("http"):
- if validate_type.lower() == 'yardstick':
- logger.info("Results have been stored with file %s.",
- os.path.join(result_dir,
- testcase.validate_testcase() + '.out'))
+ if dt_utils.store_db_results(dt_cfg.dovetail_config['report_dest'],
+ dt_cfg.dovetail_config['build_tag'],
+ testcase.name(), dovetail_result,
+ logger):
+ logger.info("Results have been pushed to database and stored "
+ "with local file {}.".format(dovetail_result))
else:
- if dt_utils.store_db_results(dt_cfg.dovetail_config['report_dest'],
- dt_cfg.dovetail_config['build_tag'],
- testcase.name(), dovetail_result,
- logger):
- logger.info("Results have been pushed to database and stored "
- "with local file %s.", dovetail_result)
- else:
- logger.error("Fail to push results to database.")
+ logger.error("Failed to push results to database.")
if dt_cfg.dovetail_config['report_dest'] == "file":
if validate_type.lower() == 'yardstick':
- logger.info("Results have been stored with file %s.",
- os.path.join(result_dir,
- testcase.validate_testcase() + '.out'))
- if validate_type.lower() == 'functest':
- logger.info("Results have been stored with file %s.",
- os.path.join(result_dir, functest_result))
+ result_file = os.path.join(result_dir, testcase.name() + '.out')
+ elif validate_type.lower() == 'functest':
+ result_file = os.path.join(result_dir, functest_result)
+ elif validate_type.lower() == 'bottlenecks':
+ result_file = os.path.join(result_dir, testcase.name() + '.out')
+ else:
+ logger.error("Don't support {} now.".format(validate_type))
+ return
+ if os.path.isfile(result_file):
+ logger.info(
+ "Results have been stored with file {}.".format(result_file))
+ else:
+ logger.error(
+ "Failed to store results with file {}.".format(result_file))
result = Report.get_result(testcase)
Report.check_result(testcase, result)
@@ -106,20 +109,27 @@ def validate_input(input_dict, check_dict, logger):
# for 'func_tag' and 'yard_tag' options
func_tag = input_dict['func_tag']
yard_tag = input_dict['yard_tag']
+ bott_tag = input_dict['bott_tag']
valid_tag = check_dict['valid_docker_tag']
if func_tag is not None and func_tag not in valid_tag:
- logger.error("func_tag can't be %s, valid in %s", func_tag, valid_tag)
+ logger.error("The input option 'func_tag' can't be {}, "
+ "valid values are {}.".format(func_tag, valid_tag))
raise SystemExit(1)
if yard_tag is not None and yard_tag not in valid_tag:
- logger.error("yard_tag can't be %s, valid in %s", yard_tag, valid_tag)
+ logger.error("The input option 'yard_tag' can't be {}, "
+ "valid values are {}.".format(yard_tag, valid_tag))
+ raise SystemExit(1)
+ if bott_tag is not None and bott_tag not in valid_tag:
+ logger.error("The input option 'bott_tag' can't be {}, "
+ "valid values are {}.".format(bott_tag, valid_tag))
raise SystemExit(1)
# for 'report' option
report = input_dict['report']
if report:
if not (report.startswith("http") or report == "file"):
- logger.error("report can't be %s", input_dict['report'])
- logger.info("valid report types are 'file' and 'http'")
+ logger.error("Report type can't be {}, valid types are 'file' "
+ "and 'http'.".format(input_dict['report']))
raise SystemExit(1)
@@ -148,7 +158,7 @@ def filter_config(input_dict, logger):
configs[key.upper()] = value_dict
break
except KeyError as e:
- logger.exception('%s lacks subsection %s', config_key, e)
+ logger.exception('KeyError {}.'.format(e))
raise SystemExit(1)
if not configs:
return None
@@ -161,8 +171,10 @@ def create_logs():
Report.create_log()
FunctestCrawler.create_log()
YardstickCrawler.create_log()
+ BottlenecksCrawler.create_log()
FunctestChecker.create_log()
YardstickChecker.create_log()
+ BottlenecksChecker.create_log()
Testcase.create_log()
Testsuite.create_log()
DockerRunner.create_log()
@@ -174,39 +186,77 @@ def clean_results_dir():
if os.path.exists(result_path):
if os.path.isdir(result_path):
cmd = 'sudo rm -rf %s/*' % (result_path)
- dt_utils.exec_cmd(cmd, exit_on_error=False)
+ dt_utils.exec_cmd(cmd, exit_on_error=False, exec_msg_on=False)
else:
print "result_dir in dovetail_config.yml is not a directory."
raise SystemExit(1)
def get_result_path():
- dovetail_home = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+ try:
+ dovetail_home = os.environ["DOVETAIL_HOME"]
+ except Exception:
+ print("ERROR: mandatory env variable 'DOVETAIL_HOME' is not found, "
+ "please set in env_config.sh and source this file before "
+ "running.")
+ return None
result_path = os.path.join(dovetail_home, 'results')
dt_cfg.dovetail_config['result_dir'] = result_path
+ pre_config_path = os.path.join(dovetail_home, 'pre_config')
+ patch_set_path = os.path.join(dovetail_home, 'patch')
+ dt_cfg.dovetail_config['config_dir'] = pre_config_path
+ dt_cfg.dovetail_config['patch_dir'] = patch_set_path
+ return dovetail_home
-def get_userconfig_path():
- dovetail_home = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+def copy_userconfig_files(logger):
+ dovetail_home = os.path.dirname(os.path.abspath(__file__))
userconfig_path = os.path.join(dovetail_home, 'userconfig')
- dt_cfg.dovetail_config['userconfig_dir'] = userconfig_path
+ pre_config_path = dt_cfg.dovetail_config['config_dir']
+ if not os.path.isdir(pre_config_path):
+ os.makedirs(pre_config_path)
+ cmd = 'sudo cp -r %s/* %s' % (userconfig_path, pre_config_path)
+ dt_utils.exec_cmd(cmd, logger, exit_on_error=False)
+
+
+def copy_patch_files(logger):
+ dovetail_home = os.path.dirname(os.path.abspath(__file__))
+ patch_path = os.path.join(dovetail_home, 'patch')
+ patch_set_path = dt_cfg.dovetail_config['patch_dir']
+ if not os.path.isdir(patch_set_path):
+ os.makedirs(patch_set_path)
+ cmd = 'sudo cp -r %s/* %s' % (patch_path, patch_set_path)
+ dt_utils.exec_cmd(cmd, logger, exit_on_error=False)
+
+
+# env_init can source some env variable used in dovetail, such as
+# when https+credential used, OS_CACERT
+def env_init(logger):
+ openrc = os.path.join(dt_cfg.dovetail_config['config_dir'],
+ dt_cfg.dovetail_config['env_file'])
+ if not os.path.isfile(openrc):
+ logger.error("File {} does not exist.".format(openrc))
+ dt_utils.source_env(openrc)
def main(*args, **kwargs):
"""Dovetail compliance test entry!"""
- build_tag = "daily-master-%s" % str(uuid.uuid4())
+ build_tag = "daily-master-%s" % str(uuid.uuid1())
dt_cfg.dovetail_config['build_tag'] = build_tag
- get_result_path()
- get_userconfig_path()
+ if not get_result_path():
+ return
clean_results_dir()
if kwargs['debug']:
os.environ['DEBUG'] = 'true'
create_logs()
logger = dt_logger.Logger('run').getLogger()
logger.info('================================================')
- logger.info('Dovetail compliance: %s!', (kwargs['testsuite']))
+ logger.info('Dovetail compliance: {}!'.format(kwargs['testsuite']))
logger.info('================================================')
- logger.info('Build tag: %s', dt_cfg.dovetail_config['build_tag'])
+ logger.info('Build tag: {}'.format(dt_cfg.dovetail_config['build_tag']))
+ env_init(logger)
+ copy_userconfig_files(logger)
+ copy_patch_files(logger)
dt_utils.check_docker_version(logger)
validate_input(kwargs, dt_cfg.dovetail_config['validate_input'], logger)
configs = filter_config(kwargs, logger)
@@ -218,6 +268,7 @@ def main(*args, **kwargs):
if(kwargs['report'].endswith('/')):
kwargs['report'] = kwargs['report'][0:kwargs['report'].rfind('/')]
dt_cfg.dovetail_config['report_dest'] = kwargs['report']
+ dt_cfg.update_cmds()
if kwargs['offline']:
dt_cfg.dovetail_config['offline'] = True
@@ -238,9 +289,10 @@ def main(*args, **kwargs):
duration = run_test(testsuite_yaml, testarea, logger)
if dt_cfg.dovetail_config['report_dest'] == "file":
Report.generate(testsuite_yaml, testarea, duration)
+ Report.save_logs()
else:
- logger.error('invalid input commands, testsuite %s testarea %s',
- kwargs['testsuite'], testarea)
+ logger.error('Invalid input commands, testsuite {} testarea {}'
+ .format(kwargs['testsuite'], testarea))
dt_cfg.load_config_files()
diff --git a/dovetail/test_runner.py b/dovetail/test_runner.py
index cfc49018..d2697f6d 100644
--- a/dovetail/test_runner.py
+++ b/dovetail/test_runner.py
@@ -22,58 +22,83 @@ class DockerRunner(object):
def __init__(self, testcase):
self.testcase = testcase
- self.logger.debug('create runner: %s', self.type)
+ self.logger.debug('Create runner: {}'.format(self.type))
@classmethod
def create_log(cls):
cls.logger = dt_logger.Logger(__name__ + '.DockerRunner').getLogger()
+ def pre_copy(self, container_id=None, dest_path=None,
+ src_file=None, exist_file=None):
+ if not dest_path:
+ self.logger.error("There has no dest_path in {} config file."
+ .format(self.testcase.name()))
+ return None
+ if src_file:
+ self.testcase.mk_src_file()
+ file_path = dt_cfg.dovetail_config[self.type]['result']['dir']
+ src_path = os.path.join(file_path, src_file)
+ if exist_file:
+ file_path = dt_cfg.dovetail_config[self.type]['config']['dir']
+ src_path = os.path.join(file_path, 'pre_config', exist_file)
+
+ Container.pre_copy(container_id, src_path, dest_path)
+ return dest_path
+
def run(self):
if dt_cfg.dovetail_config['offline']:
exist = Container.check_image_exist(self.testcase.validate_type())
if not exist:
- self.logger.error('%s image not exist offline running',
- self.testcase.validate_type())
+ self.logger.error("{} image doesn't exist, can't run offline."
+ .format(self.testcase.validate_type()))
return
else:
if not Container.pull_image(self.testcase.validate_type()):
self.logger.error("Failed to pull the image.")
return
+ # for sdnvpn, there is a need to download needed images to config_dir
+ # in dovetail_config.yml first.
+ if 'sdnvpn' in str(self.testcase.name()):
+ img_name = dt_cfg.dovetail_config['sdnvpn_image']
+ img_file = os.path.join(dt_cfg.dovetail_config['config_dir'],
+ img_name)
+ if not os.path.isfile(img_file):
+ self.logger.error('Image {} not found.'.format(img_name))
+ return
container_id = Container.create(self.testcase.validate_type(),
self.testcase.name())
if not container_id:
- self.logger.error('failed to create container')
+ self.logger.error('Failed to create container.')
return
- self.logger.debug('container id:%s', container_id)
+ self.logger.debug('container id: {}'.format(container_id))
- dest_path = self.testcase.pre_copy_dest_path()
- if dest_path:
- self.testcase.mk_src_file()
- src_path = self.testcase.pre_copy_src_path(self.type)
- ret, msg = Container.pre_copy(container_id, src_path,
- dest_path)
- if not self.testcase.prepared():
- prepare_failed = False
- cmds = self.testcase.pre_condition()
- if cmds:
- for cmd in cmds:
- ret, msg = Container.exec_cmd(container_id, cmd)
- if ret != 0:
- prepare_failed = True
- break
- if not prepare_failed:
- self.testcase.prepared(True)
+ dest_path = self.testcase.pre_copy_path("dest_path")
+ src_file_name = self.testcase.pre_copy_path("src_file")
+ exist_file_name = self.testcase.pre_copy_path("exist_src_file")
+
+ if src_file_name or exist_file_name:
+ if not self.pre_copy(container_id, dest_path, src_file_name,
+ exist_file_name):
+ return
+
+ cmds = self.testcase.pre_condition()
+ if cmds:
+ for cmd in cmds:
+ ret, msg = Container.exec_cmd(container_id, cmd)
+ if ret != 0:
+ self.logger.error("Failed to exec all pre_condition cmds.")
+ break
if not self.testcase.prepare_cmd(self.type):
- self.logger.error('failed to prepare testcase:%s',
- self.testcase.name())
+ self.logger.error(
+ 'Failed to prepare test case: {}'.format(self.testcase.name()))
else:
for cmd in self.testcase.cmds:
ret, msg = Container.exec_cmd(container_id, cmd)
if ret != 0:
- self.logger.error('Failed to exec %s, ret:%d, msg:%s',
- cmd, ret, msg)
+ self.logger.error('Failed to exec {}, ret: {}, msg: {}'
+ .format(cmd, ret, msg))
break
cmds = self.testcase.post_condition()
@@ -82,7 +107,10 @@ class DockerRunner(object):
ret, msg = Container.exec_cmd(container_id, cmd)
self.testcase.cleaned(True)
- Container.clean(container_id)
+ Container.clean(container_id, self.type)
+
+ def save_logs(self):
+ pass
class FunctestRunner(DockerRunner):
@@ -91,6 +119,27 @@ class FunctestRunner(DockerRunner):
self.type = 'functest'
super(FunctestRunner, self).__init__(testcase)
+ def save_logs(self):
+ validate_testcase = self.testcase.validate_testcase()
+ test_area = self.testcase.name().split(".")[1]
+ result_path = os.path.join(os.environ["DOVETAIL_HOME"], 'results')
+ dest_path = os.path.join(result_path, test_area + '_logs')
+ dest_file = os.path.join(dest_path, self.testcase.name() + '.log')
+ if validate_testcase == 'tempest_custom':
+ source_file = os.path.join(result_path, 'tempest', 'tempest.log')
+ elif validate_testcase == 'refstack_defcore':
+ source_file = os.path.join(result_path, 'refstack', 'refstack.log')
+ elif validate_testcase == 'bgpvpn':
+ source_file = os.path.join(result_path, 'bgpvpn.log')
+ else:
+ source_file = None
+ if source_file:
+ if os.path.isfile(source_file):
+ os.renames(source_file, dest_file)
+ else:
+ self.logger.error("Tempest log file for test case {} is not "
+ "found.".format(self.testcase.name()))
+
class YardstickRunner(DockerRunner):
@@ -99,6 +148,13 @@ class YardstickRunner(DockerRunner):
super(YardstickRunner, self).__init__(testcase)
+class BottlenecksRunner(DockerRunner):
+
+ def __init__(self, testcase):
+ self.type = 'bottlenecks'
+ super(BottlenecksRunner, self).__init__(testcase)
+
+
class ShellRunner(object):
logger = None
@@ -111,7 +167,7 @@ class ShellRunner(object):
super(ShellRunner, self).__init__()
self.testcase = testcase
self.type = 'shell'
- self.logger.debug('create runner:%s', self.type)
+ self.logger.debug('Create runner: {}'.format(self.type))
def run(self):
testcase_passed = 'PASS'
@@ -129,8 +185,8 @@ class ShellRunner(object):
self.testcase.prepared(True)
if not self.testcase.prepare_cmd(self.type):
- self.logger.error('failed to prepare cmd:%s',
- self.testcase.name())
+ self.logger.error(
+ 'Failed to prepare cmd: {}'.format(self.testcase.name()))
else:
for cmd in self.testcase.cmds:
ret, msg = dt_utils.exec_cmd(cmd, self.logger)
@@ -147,13 +203,13 @@ class ShellRunner(object):
result_filename = os.path.join(dt_cfg.dovetail_config['result_dir'],
self.testcase.name()) + '.out'
- self.logger.debug('save result:%s', result_filename)
+ self.logger.debug('Save result: {}'.format(result_filename))
try:
with open(result_filename, 'w') as f:
f.write(json.dumps(result))
except Exception as e:
- self.logger.exception('Failed to write result into file:%s, \
- except:%s', result_filename, e)
+ self.logger.exception('Failed to write result into file: {}, '
+ 'exception: {}'.format(result_filename, e))
class TestRunnerFactory(object):
@@ -161,6 +217,7 @@ class TestRunnerFactory(object):
TEST_RUNNER_MAP = {
"functest": FunctestRunner,
"yardstick": YardstickRunner,
+ "bottlenecks": BottlenecksRunner,
"shell": ShellRunner,
}
diff --git a/dovetail/testcase.py b/dovetail/testcase.py
index 408599fc..b6819964 100644
--- a/dovetail/testcase.py
+++ b/dovetail/testcase.py
@@ -39,7 +39,7 @@ class Testcase(object):
return False
# self.logger.debug('cmd_lines:%s', cmd_lines)
self.cmds.append(cmd_lines)
- self.logger.debug('cmds:%s', self.cmds)
+ self.logger.debug('cmds: {}'.format(self.cmds))
return True
def prepare_cmd(self, test_type):
@@ -55,7 +55,7 @@ class Testcase(object):
return self.parse_cmd(testcase_cmds)
if config_cmds:
return self.parse_cmd(config_cmds)
- self.logger.error('testcase %s has no cmds', self.name())
+ self.logger.error('Test case {} has no cmds.'.format(self.name()))
return False
def __str__(self):
@@ -75,7 +75,8 @@ class Testcase(object):
def sub_testcase_passed(self, name, passed=None):
if passed is not None:
- self.logger.debug('sub_testcase_passed:%s %s', name, passed)
+ self.logger.debug(
+ 'sub_testcase_passed: {} {}'.format(name, passed))
self.sub_testcase_status[name] = passed
return self.sub_testcase_status[name]
@@ -111,28 +112,16 @@ class Testcase(object):
return pre_condition
pre_condition = self.pre_condition_cls(self.validate_type())
if not pre_condition:
- self.logger.debug('testcase:%s pre_condition is empty',
- self.name())
+ self.logger.debug(
+ 'Test case: {} pre_condition is empty.'.format(self.name()))
return pre_condition
- def pre_copy_src_path(self, test_type):
+ def pre_copy_path(self, key_name):
try:
- pre_copy_src_file = \
- self.testcase['validate']['pre_copy']['src_file']
- result_dir = dt_cfg.dovetail_config[test_type]['result']['dir']
- except KeyError as e:
- self.logger.error('src file Key error %s', e)
- return None
- src_path = os.path.join(result_dir, pre_copy_src_file)
- return src_path
-
- def pre_copy_dest_path(self):
- try:
- pre_copy_dest_path = \
- self.testcase['validate']['pre_copy']['dest_path']
+ path = self.testcase['validate']['pre_copy'][key_name]
except KeyError:
- pre_copy_dest_path = ''
- return pre_copy_dest_path
+ return None
+ return path
def post_condition(self):
try:
@@ -143,34 +132,35 @@ class Testcase(object):
return post_condition
post_condition = self.post_condition_cls(self.validate_type())
if not post_condition:
- self.logger.debug('testcae:%s post_condition is empty',
- self.name())
+ self.logger.debug(
+ 'Test case: {} post_condition is empty.'.format(self.name()))
return post_condition
def mk_src_file(self):
- testcase_src_file = self.testcase['validate']['pre_copy']['src_file']
+ testcase_src_file = self.pre_copy_path('src_file')
try:
file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
testcase_src_file)
with open(file_path, 'w+') as src_file:
if self.sub_testcase() is not None:
for sub_test in self.sub_testcase():
- self.logger.debug('save testcases %s', sub_test)
+ self.logger.debug(
+ 'Save test cases {}'.format(sub_test))
src_file.write(sub_test + '\n')
- self.logger.debug('save testcases to %s', file_path)
+ self.logger.debug('Save test cases to {}'.format(file_path))
+ return file_path
except Exception:
- self.logger.error('Failed to save: %s', file_path)
-
- src_file_path = os.path.join(dt_cfg.dovetail_config['result_dir'],
- testcase_src_file)
- return src_file_path
+ self.logger.exception('Failed to save: {}'.format(file_path))
+ return None
def run(self):
runner = TestRunnerFactory.create(self)
try:
runner.run()
+ runner.save_logs()
except AttributeError as e:
- self.logger.exception('testcase:%s except:%s', self.name, e)
+ self.logger.exception(
+ 'Test case: {} Exception: {}'.format(self.name, e))
# testcase in upstream testing project
# validate_testcase_list = {'functest': {}, 'yardstick': {}, 'shell': {}}
@@ -244,8 +234,8 @@ class Testcase(object):
cls.testcase_list[next(testcase_yaml.iterkeys())] = \
testcase
else:
- cls.logger.error('failed to create testcase: %s',
- testcase_file)
+ cls.logger.error('Failed to create test case: {}'
+ .format(testcase_file))
@classmethod
def get(cls, testcase_name):
@@ -265,13 +255,30 @@ class FunctestTestcase(Testcase):
class YardstickTestcase(Testcase):
- validate_testcae_list = {}
+ validate_testcase_list = {}
def __init__(self, testcase_yaml):
super(YardstickTestcase, self).__init__(testcase_yaml)
self.type = 'yardstick'
+class BottlenecksTestcase(Testcase):
+
+ validate_testcase_list = {}
+
+ def __init__(self, testcase_yaml):
+ super(BottlenecksTestcase, self).__init__(testcase_yaml)
+ self.type = 'bottlenecks'
+ self._update_cmds()
+
+ def _update_cmds(self):
+ if dt_cfg.dovetail_config['report_dest'].startswith("http"):
+ try:
+ self.testcase['validate']['cmds'][0] += ' --report'
+ except KeyError:
+ return
+
+
class ShellTestcase(Testcase):
validate_testcase_list = {}
@@ -285,6 +292,7 @@ class TestcaseFactory(object):
TESTCASE_TYPE_MAP = {
'functest': FunctestTestcase,
'yardstick': YardstickTestcase,
+ 'bottlenecks': BottlenecksTestcase,
'shell': ShellTestcase,
}
diff --git a/dovetail/testcase/defcore.tc001.yml b/dovetail/testcase/defcore.tc001.yml
index 39be7471..19092c09 100644
--- a/dovetail/testcase/defcore.tc001.yml
+++ b/dovetail/testcase/defcore.tc001.yml
@@ -9,10 +9,10 @@ dovetail.defcore.tc001:
type: functest
testcase: refstack_defcore
pre_condition:
- - 'echo test for precondition in testcase'
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: defcore.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/refstack_client/defcore.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/refstack_client/defcore.txt
cmds:
- 'functest env prepare'
- 'functest testcase run refstack_defcore -r'
diff --git a/dovetail/testcase/ipv6.tc001.yml b/dovetail/testcase/ipv6.tc001.yml
index a70d41eb..6a2f2543 100644
--- a/dovetail/testcase/ipv6.tc001.yml
+++ b/dovetail/testcase/ipv6.tc001.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc001:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_network[id-d4f9024d-1e28-4fc1-a6b1-25dbc6fa11e2,smoke]
diff --git a/dovetail/testcase/ipv6.tc002.yml b/dovetail/testcase/ipv6.tc002.yml
index c8254bb8..77720581 100644
--- a/dovetail/testcase/ipv6.tc002.yml
+++ b/dovetail/testcase/ipv6.tc002.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc002:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_create_update_delete_network_subnet[id-0e269138-0da6-4efc-a46d-578161e7b221,smoke]
diff --git a/dovetail/testcase/ipv6.tc003.yml b/dovetail/testcase/ipv6.tc003.yml
index 339d405b..a3b0b9d1 100644
--- a/dovetail/testcase/ipv6.tc003.yml
+++ b/dovetail/testcase/ipv6.tc003.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc003:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_external_network_visibility[id-af774677-42a9-4e4b-bb58-16fe6a5bc1ec,smoke]
diff --git a/dovetail/testcase/ipv6.tc004.yml b/dovetail/testcase/ipv6.tc004.yml
index 514a846e..41d703c3 100644
--- a/dovetail/testcase/ipv6.tc004.yml
+++ b/dovetail/testcase/ipv6.tc004.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc004:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_list_networks[id-f7ffdeda-e200-4a7a-bcbe-05716e86bf43,smoke]
diff --git a/dovetail/testcase/ipv6.tc005.yml b/dovetail/testcase/ipv6.tc005.yml
index 3dcca9b2..7b197ec1 100644
--- a/dovetail/testcase/ipv6.tc005.yml
+++ b/dovetail/testcase/ipv6.tc005.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc005:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_networks.NetworksIpV6Test.test_show_network[id-2bf13842-c93f-4a69-83ed-717d2ec3b44e,smoke]
diff --git a/dovetail/testcase/ipv6.tc006.yml b/dovetail/testcase/ipv6.tc006.yml
index dc6b2da6..0f9fd286 100644
--- a/dovetail/testcase/ipv6.tc006.yml
+++ b/dovetail/testcase/ipv6.tc006.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc006:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_in_allowed_allocation_pools[id-0435f278-40ae-48cb-a404-b8a087bc09b1,smoke]
diff --git a/dovetail/testcase/ipv6.tc007.yml b/dovetail/testcase/ipv6.tc007.yml
index b2658ec9..92ba2fba 100644
--- a/dovetail/testcase/ipv6.tc007.yml
+++ b/dovetail/testcase/ipv6.tc007.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc007:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_with_no_securitygroups[id-4179dcb9-1382-4ced-84fe-1b91c54f5735,smoke]
diff --git a/dovetail/testcase/ipv6.tc008.yml b/dovetail/testcase/ipv6.tc008.yml
index 597a4716..b1b60049 100644
--- a/dovetail/testcase/ipv6.tc008.yml
+++ b/dovetail/testcase/ipv6.tc008.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc008:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_update_delete_port[id-c72c1c0c-2193-4aca-aaa4-b1442640f51c,smoke]
diff --git a/dovetail/testcase/ipv6.tc009.yml b/dovetail/testcase/ipv6.tc009.yml
index 013a76ea..579cee54 100644
--- a/dovetail/testcase/ipv6.tc009.yml
+++ b/dovetail/testcase/ipv6.tc009.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc009:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_list_ports[id-cf95b358-3e92-4a29-a148-52445e1ac50e,smoke]
diff --git a/dovetail/testcase/ipv6.tc010.yml b/dovetail/testcase/ipv6.tc010.yml
index 48191f0b..a44ab44a 100644
--- a/dovetail/testcase/ipv6.tc010.yml
+++ b/dovetail/testcase/ipv6.tc010.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc010:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_ports.PortsIpV6TestJSON.test_show_port[id-c9a685bd-e83f-499c-939f-9f7863ca259f,smoke]
diff --git a/dovetail/testcase/ipv6.tc011.yml b/dovetail/testcase/ipv6.tc011.yml
index 18373ef5..16a214fd 100644
--- a/dovetail/testcase/ipv6.tc011.yml
+++ b/dovetail/testcase/ipv6.tc011.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc011:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces[id-802c73c9-c937-4cef-824b-2191e24a6aab,smoke]
diff --git a/dovetail/testcase/ipv6.tc012.yml b/dovetail/testcase/ipv6.tc012.yml
index 620fdd6b..a987ccb6 100644
--- a/dovetail/testcase/ipv6.tc012.yml
+++ b/dovetail/testcase/ipv6.tc012.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc012:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_port_id[id-2b7d2f37-6748-4d78-92e5-1d590234f0d5,smoke]
diff --git a/dovetail/testcase/ipv6.tc013.yml b/dovetail/testcase/ipv6.tc013.yml
index 8f739bc7..738c8207 100644
--- a/dovetail/testcase/ipv6.tc013.yml
+++ b/dovetail/testcase/ipv6.tc013.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc013:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id[id-b42e6e39-2e37-49cc-a6f4-8467e940900a,smoke]
diff --git a/dovetail/testcase/ipv6.tc014.yml b/dovetail/testcase/ipv6.tc014.yml
index 8d3ed342..bf89464a 100644
--- a/dovetail/testcase/ipv6.tc014.yml
+++ b/dovetail/testcase/ipv6.tc014.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc014:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_routers.RoutersIpV6Test.test_create_show_list_update_delete_router[id-f64403e2-8483-4b34-8ccd-b09a87bcc68c,smoke]
diff --git a/dovetail/testcase/ipv6.tc015.yml b/dovetail/testcase/ipv6.tc015.yml
index 19a9806d..225dd719 100644
--- a/dovetail/testcase/ipv6.tc015.yml
+++ b/dovetail/testcase/ipv6.tc015.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc015:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_list_update_show_delete_security_group[id-bfd128e5-3c92-44b6-9d66-7fe29d22c802,smoke]
diff --git a/dovetail/testcase/ipv6.tc016.yml b/dovetail/testcase/ipv6.tc016.yml
index f5899058..3489aa57 100644
--- a/dovetail/testcase/ipv6.tc016.yml
+++ b/dovetail/testcase/ipv6.tc016.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc016:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_show_delete_security_group_rule[id-cfb99e0e-7410-4a3d-8a0c-959a63ee77e9,smoke]
diff --git a/dovetail/testcase/ipv6.tc017.yml b/dovetail/testcase/ipv6.tc017.yml
index 8bef6036..5642ba38 100644
--- a/dovetail/testcase/ipv6.tc017.yml
+++ b/dovetail/testcase/ipv6.tc017.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc017:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.api.network.test_security_groups.SecGroupIPv6Test.test_list_security_groups[id-e30abd17-fef9-4739-8617-dc26da88e686,smoke]
diff --git a/dovetail/testcase/ipv6.tc018.yml b/dovetail/testcase/ipv6.tc018.yml
index 406e02af..0345d071 100644
--- a/dovetail/testcase/ipv6.tc018.yml
+++ b/dovetail/testcase/ipv6.tc018.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc018:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os[compute,id-d7e1f858-187c-45a6-89c9-bdafde619a9f,network,slow]
diff --git a/dovetail/testcase/ipv6.tc019.yml b/dovetail/testcase/ipv6.tc019.yml
index 1e3c171b..afa1d06b 100644
--- a/dovetail/testcase/ipv6.tc019.yml
+++ b/dovetail/testcase/ipv6.tc019.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc019:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os[compute,id-76f26acd-9688-42b4-bc3e-cd134c4cb09e,network,slow]
diff --git a/dovetail/testcase/ipv6.tc020.yml b/dovetail/testcase/ipv6.tc020.yml
index f7ab8b47..caa423f4 100644
--- a/dovetail/testcase/ipv6.tc020.yml
+++ b/dovetail/testcase/ipv6.tc020.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc020:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_dhcpv6_stateless[compute,id-7ab23f41-833b-4a16-a7c9-5b42fe6d4123,network,slow]
diff --git a/dovetail/testcase/ipv6.tc021.yml b/dovetail/testcase/ipv6.tc021.yml
index 466b75ca..c5578184 100644
--- a/dovetail/testcase/ipv6.tc021.yml
+++ b/dovetail/testcase/ipv6.tc021.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc021:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_dhcpv6_stateless[compute,id-cf1c4425-766b-45b8-be35-e2959728eb00,network]
diff --git a/dovetail/testcase/ipv6.tc022.yml b/dovetail/testcase/ipv6.tc022.yml
index c1d371d6..f8b7e262 100644
--- a/dovetail/testcase/ipv6.tc022.yml
+++ b/dovetail/testcase/ipv6.tc022.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc022:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os[compute,id-2c92df61-29f0-4eaa-bee3-7c65bef62a43,network,slow]
diff --git a/dovetail/testcase/ipv6.tc023.yml b/dovetail/testcase/ipv6.tc023.yml
index aea1a12b..f97ec799 100644
--- a/dovetail/testcase/ipv6.tc023.yml
+++ b/dovetail/testcase/ipv6.tc023.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc023:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- - tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os[compute,id-76f26acd-9688-42b4-bc3e-cd134c4cb09e,network,slow]
+ - tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os[compute,id-b6399d76-4438-4658-bcf5-0d6c8584fde2,network,slow]
diff --git a/dovetail/testcase/ipv6.tc024.yml b/dovetail/testcase/ipv6.tc024.yml
index 8d248901..705e3be7 100644
--- a/dovetail/testcase/ipv6.tc024.yml
+++ b/dovetail/testcase/ipv6.tc024.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc024:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_slaac[compute,id-dec222b1-180c-4098-b8c5-cc1b8342d611,network,slow]
diff --git a/dovetail/testcase/ipv6.tc025.yml b/dovetail/testcase/ipv6.tc025.yml
index 35ef78c7..a4013530 100644
--- a/dovetail/testcase/ipv6.tc025.yml
+++ b/dovetail/testcase/ipv6.tc025.yml
@@ -5,9 +5,11 @@ dovetail.ipv6.tc025:
validate:
type: functest
testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
pre_copy:
src_file: tempest_custom.txt
- dest_path: /home/opnfv/repos/functest/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
report:
sub_testcase_list:
- tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_slaac[compute,id-9178ad42-10e4-47e9-8987-e02b170cc5cd,network]
diff --git a/dovetail/testcase/nfvi.tc101.yml b/dovetail/testcase/nfvi.tc101.yml
deleted file mode 100644
index 2fa47dee..00000000
--- a/dovetail/testcase/nfvi.tc101.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-dovetail.nfvi.tc101:
- name: dovetail.nfvi.tc101
- objective: measure number of cores and threads, available memory size and cache size
- validate:
- type: yardstick
- testcase: opnfv_yardstick_tc001
- report:
- sub_testcase_list:
diff --git a/dovetail/testcase/nfvi.tc102.yml b/dovetail/testcase/nfvi.tc102.yml
deleted file mode 100644
index 6da52243..00000000
--- a/dovetail/testcase/nfvi.tc102.yml
+++ /dev/null
@@ -1,9 +0,0 @@
----
-dovetail.nfvi.tc102:
- name: dovetail.nfvi.tc102
- objective: measure number of cores and threads, available memory size and cache size
- validate:
- type: yardstick
- testcase: opnfv_yardstick_tc002
- report:
- sub_testcase_list:
diff --git a/dovetail/testcase/resiliency.tc001.yml b/dovetail/testcase/resiliency.tc001.yml
new file mode 100644
index 00000000..86399849
--- /dev/null
+++ b/dovetail/testcase/resiliency.tc001.yml
@@ -0,0 +1,11 @@
+---
+dovetail.resiliency.tc001:
+ name: dovetail.resiliency.tc001
+ objective: > # This test case verifies the ability of the SUT setting up VM pairs
+ # for different tenants and providing acceptable capacity after the amount of
+ # VM pairs reaches certain quantity.
+ validate:
+ type: bottlenecks
+ testcase: posca_factor_ping
+ report:
+ sub_testcase_list:
diff --git a/dovetail/testcase/sdnvpn.tc001.yml b/dovetail/testcase/sdnvpn.tc001.yml
index a453838a..9ab3d445 100644
--- a/dovetail/testcase/sdnvpn.tc001.yml
+++ b/dovetail/testcase/sdnvpn.tc001.yml
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc001:
type: functest
testcase: bgpvpn
pre_copy:
- src_file: sdnvpn_config_testcase1.yaml
- dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
+ exist_src_file: sdnvpn_config_testcase1.yaml
+ dest_path: /usr/local/lib/python2.7/dist-packages/sdnvpn/test/functest/config.yaml
report:
sub_testcase_list:
diff --git a/dovetail/testcase/sdnvpn.tc002.yml b/dovetail/testcase/sdnvpn.tc002.yml
index 0e4cb51e..a5c70ba9 100644
--- a/dovetail/testcase/sdnvpn.tc002.yml
+++ b/dovetail/testcase/sdnvpn.tc002.yml
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc002:
type: functest
testcase: bgpvpn
pre_copy:
- src_file: sdnvpn_config_testcase2.yaml
- dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
+ exist_src_file: sdnvpn_config_testcase2.yaml
+ dest_path: /usr/local/lib/python2.7/dist-packages/sdnvpn/test/functest/config.yaml
report:
sub_testcase_list:
diff --git a/dovetail/testcase/sdnvpn.tc003.yml b/dovetail/testcase/sdnvpn.tc003.yml
index 3da7ccd1..c8c8b2be 100644
--- a/dovetail/testcase/sdnvpn.tc003.yml
+++ b/dovetail/testcase/sdnvpn.tc003.yml
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc003:
type: functest
testcase: bgpvpn
pre_copy:
- src_file: sdnvpn_config_testcase3.yaml
- dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
+ exist_src_file: sdnvpn_config_testcase3.yaml
+ dest_path: /usr/local/lib/python2.7/dist-packages/sdnvpn/test/functest/config.yaml
report:
sub_testcase_list:
diff --git a/dovetail/testcase/sdnvpn.tc004.yml b/dovetail/testcase/sdnvpn.tc004.yml
index 6e6727d2..f6a4a6ff 100644
--- a/dovetail/testcase/sdnvpn.tc004.yml
+++ b/dovetail/testcase/sdnvpn.tc004.yml
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc004:
type: functest
testcase: bgpvpn
pre_copy:
- src_file: sdnvpn_config_testcase4.yaml
- dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
+ exist_src_file: sdnvpn_config_testcase4.yaml
+ dest_path: /usr/local/lib/python2.7/dist-packages/sdnvpn/test/functest/config.yaml
report:
sub_testcase_list:
diff --git a/dovetail/testcase/sdnvpn.tc008.yml b/dovetail/testcase/sdnvpn.tc008.yml
index 80b01d7b..5713e102 100644
--- a/dovetail/testcase/sdnvpn.tc008.yml
+++ b/dovetail/testcase/sdnvpn.tc008.yml
@@ -6,7 +6,7 @@ dovetail.sdnvpn.tc008:
type: functest
testcase: bgpvpn
pre_copy:
- src_file: sdnvpn_config_testcase8.yaml
- dest_path: /home/opnfv/repos/sdnvpn/sdnvpn/test/functest/config.yaml
+ exist_src_file: sdnvpn_config_testcase8.yaml
+ dest_path: /usr/local/lib/python2.7/dist-packages/sdnvpn/test/functest/config.yaml
report:
sub_testcase_list:
diff --git a/dovetail/testcase/tempest.tc001.yml b/dovetail/testcase/tempest.tc001.yml
new file mode 100644
index 00000000..be02e67a
--- /dev/null
+++ b/dovetail/testcase/tempest.tc001.yml
@@ -0,0 +1,15 @@
+---
+dovetail.tempest.tc001:
+ name: dovetail.tempest.tc001
+ objective: forwarding packets through virtual networks in data path
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_mtu_sized_frames[compute,id-b158ea55-472e-4086-8fa9-c64ac0c6c1d0,network]
diff --git a/dovetail/testcase/tempest.tc002.yml b/dovetail/testcase/tempest.tc002.yml
new file mode 100644
index 00000000..54a56f54
--- /dev/null
+++ b/dovetail/testcase/tempest.tc002.yml
@@ -0,0 +1,20 @@
+---
+dovetail.tempest.tc002:
+ name: dovetail.tempest.tc002
+ objective: filtering packets based on security rules and port security in data path
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_port_security_macspoofing_port[compute,id-7c0bb1a2-d053-49a4-98f9-ca1a1d849f63,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_cross_tenant_traffic[compute,id-e79f879e-debb-440c-a7e4-efeda05b6848,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_in_tenant_traffic[compute,id-63163892-bbf6-4249-aa12-d5ea1f8f421b,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_multiple_security_groups[compute,id-d2f77418-fcc4-439d-b935-72eca704e293,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_security_disable_security_group[compute,id-7c811dcc-263b-49a3-92d2-1b4d8405f50c,network]
+ - tempest.scenario.test_security_groups_basic_ops.TestSecurityGroupsBasicOps.test_port_update_new_security_group[compute,id-f4d556d7-1526-42ad-bafb-6bebf48568f6,network]
diff --git a/dovetail/testcase/tempest.tc003.yml b/dovetail/testcase/tempest.tc003.yml
new file mode 100644
index 00000000..07d7097f
--- /dev/null
+++ b/dovetail/testcase/tempest.tc003.yml
@@ -0,0 +1,19 @@
+---
+dovetail.tempest.tc003:
+ name: dovetail.tempest.tc003
+ objective: dynamic network runtime operations through the life of a VNF
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_hotplug_nic[compute,id-c5adff73-e961-41f1-b4a9-343614f18cfa,network]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops[compute,id-f323b3ba-82f8-4db7-8ea6-6a895869ec49,network,smoke]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_subnet_details[compute,id-d8bb918e-e2df-48b2-97cd-b73c95450980,network]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_instance_port_admin_state[compute,id-f5dfcc22-45fd-409f-954c-5bd500d7890b,network]
+ - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_update_router_admin_state[compute,id-04b9fe4e-85e8-4aea-b937-ea93885ac59f,network]
diff --git a/dovetail/testcase/tempest.tc004.yml b/dovetail/testcase/tempest.tc004.yml
new file mode 100644
index 00000000..c9e9c8f6
--- /dev/null
+++ b/dovetail/testcase/tempest.tc004.yml
@@ -0,0 +1,27 @@
+---
+dovetail.tempest.tc004:
+ name: dovetail.tempest.tc004
+ objective: correct behavior after common virtual machine life cycles events
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_minimum_basic.TestMinimumBasicScenario.test_minimum_basic_scenario[compute,id-bdbb5441-9204-419d-a225-b4fdbfb1a1a8,image,network,volume]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_cold_migration[compute,id-a4858f6c-401e-4155-9a49-d5cd053d1a2f,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_cold_migration_revert[compute,id-25b188d7-0183-4b1e-a11d-15840c8e2fd6,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_pause_unpause[compute,id-2b2642db-6568-4b35-b812-eceed3fa20ce,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_reboot[compute,id-7b6860c2-afa3-4846-9522-adeb38dfbe08,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_rebuild[compute,id-88a529c2-1daa-4c85-9aec-d541ba3eb699,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_resize[compute,id-719eb59d-2f42-4b66-b8b1-bb1254473967,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_stop_start[compute,id-61f1aa9a-1573-410e-9054-afa557cab021,network]
+ - tempest.scenario.test_network_advanced_server_ops.TestNetworkAdvancedServerOps.test_server_connectivity_suspend_resume[compute,id-5cdf9499-541d-4923-804e-b9a60620a7f0,network]
+ - tempest.scenario.test_server_advanced_ops.TestServerAdvancedOps.test_resize_volume_backed_server_confirm[compute,id-e6c28180-7454-4b59-b188-0257af08a63b,volume]
+ - tempest.scenario.test_server_advanced_ops.TestServerAdvancedOps.test_server_sequence_suspend_resume[compute,id-949da7d5-72c8-4808-8802-e3d70df98e2c]
+ - tempest.scenario.test_shelve_instance.TestShelveInstance.test_shelve_instance[compute,id-1164e700-0af0-4a4c-8792-35909a88743c,image,network]
+ - tempest.scenario.test_shelve_instance.TestShelveInstance.test_shelve_volume_backed_instance[compute,id-c1b6318c-b9da-490b-9c67-9339b627271f,image,network,volume]
diff --git a/dovetail/testcase/tempest.tc005.yml b/dovetail/testcase/tempest.tc005.yml
new file mode 100644
index 00000000..d2be3528
--- /dev/null
+++ b/dovetail/testcase/tempest.tc005.yml
@@ -0,0 +1,20 @@
+---
+dovetail.tempest.tc005:
+ name: dovetail.tempest.tc005
+ objective: simple virtual machine resource scheduling on multiple nodes
+ validate:
+ type: functest
+ testcase: tempest_custom
+ pre_condition:
+ - 'cp /home/opnfv/userconfig/pre_config/tempest_conf.yaml /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/tempest_conf.yaml'
+ pre_copy:
+ src_file: tempest_custom.txt
+ dest_path: /usr/local/lib/python2.7/dist-packages/functest/opnfv_tests/openstack/tempest/custom_tests/test_list.txt
+ report:
+ sub_testcase_list:
+ - tempest.scenario.test_server_multinode.TestServerMultinode.test_schedule_to_all_nodes[compute,id-9cecbe35-b9d4-48da-a37e-7ce70aa43d30,network,smoke]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_create_delete_multiple_server_groups_with_same_name_policy[id-154dc5a4-a2fe-44b5-b99e-f15806a4a113]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_create_delete_server_group_with_affinity_policy[id-5dc57eda-35b7-4af7-9e5f-3c2be3d2d68b]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_create_delete_server_group_with_anti_affinity_policy[id-3645a102-372f-4140-afad-13698d850d23]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_list_server_groups[id-d4874179-27b4-4d7d-80e4-6c560cdfe321]
+ - tempest.api.compute.servers.test_server_group.ServerGroupTestJSON.test_show_server_group[id-b3545034-dd78-48f0-bdc2-a4adfa6d0ead]
diff --git a/dovetail/testcase/nfvi.tc002.yml b/dovetail/testcase/vping.tc001.yml
index 28a7adfd..e3b501be 100644
--- a/dovetail/testcase/nfvi.tc002.yml
+++ b/dovetail/testcase/vping.tc001.yml
@@ -1,6 +1,6 @@
---
-dovetail.nfvi.tc002:
- name: dovetail.nfvi.tc002
+dovetail.vping.tc001:
+ name: dovetail.vping.tc001
objective: testing for vping using userdata
validate:
type: functest
diff --git a/dovetail/testcase/nfvi.tc001.yml b/dovetail/testcase/vping.tc002.yml
index 157fc8da..a800a4db 100644
--- a/dovetail/testcase/nfvi.tc001.yml
+++ b/dovetail/testcase/vping.tc002.yml
@@ -1,6 +1,6 @@
---
-dovetail.nfvi.tc001:
- name: dovetail.nfvi.tc001
+dovetail.vping.tc002:
+ name: dovetail.vping.tc002
objective: testing for vping using ssh
validate:
type: functest
diff --git a/dovetail/userconfig/hosts.yaml.sample b/dovetail/userconfig/hosts.yaml.sample
new file mode 100644
index 00000000..e4687dfb
--- /dev/null
+++ b/dovetail/userconfig/hosts.yaml.sample
@@ -0,0 +1,2 @@
+---
+hosts_info:
diff --git a/dovetail/userconfig/pod.yaml.sample b/dovetail/userconfig/pod.yaml.sample
new file mode 100644
index 00000000..26636a6b
--- /dev/null
+++ b/dovetail/userconfig/pod.yaml.sample
@@ -0,0 +1,50 @@
+##############################################################################
+# Copyright (c) 2017 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
+##############################################################################
+---
+# sample config file about the POD information, including the
+# name/IP/user/ssh key and Controllers/Computes
+#
+# The options of this config file include:
+# name: the name of this node
+# role: node's role, support role: Master/Controller/Comupte/BareMetal
+# ip: the node's IP address
+# user: the username for login
+# key_filename:the path of the private key file for login
+
+nodes:
+-
+ name: node1
+ role: Controller
+ ip: 10.1.0.50
+ user: root
+ key_filename: /root/.ssh/id_rsa
+-
+ name: node2
+ role: Controller
+ ip: 10.1.0.51
+ user: root
+ key_filename: /root/.ssh/id_rsa
+-
+ name: node3
+ role: Controller
+ ip: 10.1.0.52
+ user: root
+ key_filename: /root/.ssh/id_rsa
+-
+ name: node4
+ role: Compute
+ ip: 10.1.0.53
+ user: root
+ key_filename: /root/.ssh/id_rsa
+-
+ name: node5
+ role: Compute
+ ip: 10.1.0.54
+ user: root
+ key_filename: /root/.ssh/id_rsa
diff --git a/dovetail/userconfig/sdnvpn_config_testcase1.yaml b/dovetail/userconfig/sdnvpn_config_testcase1.yaml
new file mode 100644
index 00000000..d9e4a1b4
--- /dev/null
+++ b/dovetail/userconfig/sdnvpn_config_testcase1.yaml
@@ -0,0 +1,33 @@
+defaults:
+ flavor: m1.tiny # adapt to your environment
+
+testcases:
+ tempest:
+ enabled: true
+ description: Neutron BGPVPN tests in tempest
+ testname_db: functest_tempest # declared name in the test api
+ # http://testresults.opnfv.org/test/api/v1/projects/sdnvpn/cases
+
+ testcase_1:
+ enabled: true
+ description: VPN provides connectivity between subnets
+ testname_db: functest_testcase_1
+ instance_1_name: sdnvpn-1-1
+ instance_2_name: sdnvpn-1-2
+ instance_3_name: sdnvpn-1-3
+ instance_4_name: sdnvpn-1-4
+ instance_5_name: sdnvpn-1-5
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-1-1-net
+ subnet_1_name: sdnvpn-1-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-1-1-router
+ net_2_name: sdnvpn-1-2-net
+ subnet_2_name: sdnvpn-1-2-subnet
+ subnet_2_cidr: 10.10.11.0/24
+ router_2_name: sdnvpn-1-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '55:55'
+ route_distinguishers: '11:11'
diff --git a/dovetail/userconfig/sdnvpn_config_testcase2.yaml b/dovetail/userconfig/sdnvpn_config_testcase2.yaml
new file mode 100644
index 00000000..07b0adfa
--- /dev/null
+++ b/dovetail/userconfig/sdnvpn_config_testcase2.yaml
@@ -0,0 +1,43 @@
+defaults:
+ flavor: m1.tiny # adapt to your environment
+
+testcases:
+ tempest:
+ enabled: true
+ description: Neutron BGPVPN tests in tempest
+ testname_db: functest_tempest # declared name in the test api
+ # http://testresults.opnfv.org/test/api/v1/projects/sdnvpn/cases
+
+ testcase_2:
+ enabled: true
+ description: Tenant separation
+ testname_db: functest_testcase_2
+ instance_1_name: sdnvpn-2-1
+ instance_2_name: sdnvpn-2-2
+ instance_3_name: sdnvpn-2-3
+ instance_4_name: sdnvpn-2-4
+ instance_5_name: sdnvpn-2-5
+ instance_1_ip: 10.10.10.11
+ instance_2_ip: 10.10.10.12
+ instance_3_ip: 10.10.11.13
+ instance_4_ip: 10.10.10.12
+ instance_5_ip: 10.10.11.13
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-2-1-net
+ subnet_1a_name: sdnvpn-2-1a-subnet
+ subnet_1a_cidr: 10.10.10.0/24
+ subnet_1b_name: sdnvpn-2-1b-subnet
+ subnet_1b_cidr: 10.10.11.0/24
+ router_1_name: sdnvpn-2-1-router
+ net_2_name: sdnvpn-2-2-net
+ subnet_2a_name: sdnvpn-2-2a-subnet
+ subnet_2a_cidr: 10.10.11.0/24
+ subnet_2b_name: sdnvpn-2-2b-subnet
+ subnet_2b_cidr: 10.10.10.0/24
+ router_2_name: sdnvpn-2-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '55:55'
+ route_distinguishers1: '111:111'
+ route_distinguishers2: '222:222'
diff --git a/dovetail/userconfig/sdnvpn_config_testcase3.yaml b/dovetail/userconfig/sdnvpn_config_testcase3.yaml
new file mode 100644
index 00000000..60592cbb
--- /dev/null
+++ b/dovetail/userconfig/sdnvpn_config_testcase3.yaml
@@ -0,0 +1,32 @@
+defaults:
+ flavor: m1.tiny # adapt to your environment
+
+testcases:
+ tempest:
+ enabled: true
+ description: Neutron BGPVPN tests in tempest
+ testname_db: functest_tempest # declared name in the test api
+ # http://testresults.opnfv.org/test/api/v1/projects/sdnvpn/cases
+
+ testcase_3:
+ enabled: true
+ description: Data center gateway integration
+ testname_db: functest_testcase_3
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ image_name: sdnvpn-image
+ ubuntu_image_name: sdnvpn-ubuntu-image
+ net_1_name: sdnvpn-3-1-net
+ subnet_1_name: sdnvpn-3-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-3-1-router
+ quagga_net_name: sdnvpn-3-2-quagga-net
+ quagga_subnet_name: sdnvpn-3-2-quagga-subnet
+ quagga_subnet_cidr: 10.10.11.0/24
+ quagga_router_name: sdnvpn-3-2-quagga-router
+ quagga_instance_name: sdnvpn-3-2-quagga
+ quagga_instance_ip: 10.10.11.5
+ instance_1_name: sdnvpn-3-1
+ instance_1_ip: 10.10.10.5
+ import_targets: '31:31'
+ export_targets: '32:32'
diff --git a/dovetail/userconfig/sdnvpn_config_testcase4.yaml b/dovetail/userconfig/sdnvpn_config_testcase4.yaml
new file mode 100644
index 00000000..1e221354
--- /dev/null
+++ b/dovetail/userconfig/sdnvpn_config_testcase4.yaml
@@ -0,0 +1,33 @@
+defaults:
+ flavor: m1.tiny # adapt to your environment
+
+testcases:
+ tempest:
+ enabled: true
+ description: Neutron BGPVPN tests in tempest
+ testname_db: functest_tempest # declared name in the test api
+ # http://testresults.opnfv.org/test/api/v1/projects/sdnvpn/cases
+
+ testcase_4:
+ enabled: true
+ description: VPN provides connectivity between subnets using router association
+ testname_db: functest_testcase_4
+ instance_1_name: sdnvpn-4-1
+ instance_2_name: sdnvpn-4-2
+ instance_3_name: sdnvpn-4-3
+ instance_4_name: sdnvpn-4-4
+ instance_5_name: sdnvpn-4-5
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-4-1-net
+ subnet_1_name: sdnvpn-4-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-4-1-router
+ net_2_name: sdnvpn-4-2-net
+ subnet_2_name: sdnvpn-4-2-subnet
+ subnet_2_cidr: 10.10.11.0/24
+ router_2_name: sdnvpn-4-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '55:55'
+ route_distinguishers: '12:12'
diff --git a/dovetail/userconfig/sdnvpn_config_testcase8.yaml b/dovetail/userconfig/sdnvpn_config_testcase8.yaml
new file mode 100644
index 00000000..c825997b
--- /dev/null
+++ b/dovetail/userconfig/sdnvpn_config_testcase8.yaml
@@ -0,0 +1,29 @@
+defaults:
+ flavor: m1.tiny # adapt to your environment
+
+testcases:
+ tempest:
+ enabled: true
+ description: Neutron BGPVPN tests in tempest
+ testname_db: functest_tempest # declared name in the test api
+ # http://testresults.opnfv.org/test/api/v1/projects/sdnvpn/cases
+
+ testcase_8:
+ enabled: true
+ description: Test floating IP and router assoc coexistence
+ testname_db: functest_testcase_8
+ image_name: sdnvpn-image
+ instance_1_name: sdnvpn-8-1
+ instance_2_name: sdnvpn-8-2
+ net_1_name: sdnvpn-8-1
+ subnet_1_name: sdnvpn-8-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-8-1-router
+ net_2_name: sdnvpn-8-2
+ subnet_2_name: sdnvpn-8-2-subnet
+ subnet_2_cidr: 10.10.20.0/24
+ router_2_name: sdnvpn-8-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets: '88:88'
+ route_distinguishers: '18:18'
diff --git a/dovetail/userconfig/tempest_conf.yaml.sample b/dovetail/userconfig/tempest_conf.yaml.sample
new file mode 100644
index 00000000..944e3a9f
--- /dev/null
+++ b/dovetail/userconfig/tempest_conf.yaml.sample
@@ -0,0 +1,16 @@
+# This is an empty configuration file to be filled up with the desired options
+# to generate a custom tempest.conf
+# Examples:
+# network-feature-enabled:
+# port_security: True
+
+# volume-feature-enabled:
+# api_v1: False
+
+# validation:
+# image_ssh_user: root
+# ssh_timeout: 300
+
+# compute:
+# min_compute_nodes: 2
+# volume_device_name: vdb
diff --git a/dovetail/utils/dovetail_config.py b/dovetail/utils/dovetail_config.py
index f8193e5d..5e100d69 100644
--- a/dovetail/utils/dovetail_config.py
+++ b/dovetail/utils/dovetail_config.py
@@ -54,3 +54,8 @@ class DovetailConfig(object):
def update_non_envs(cls, path, value):
if value:
cls.set_leaf_dict(cls.dovetail_config, path, value)
+
+ @classmethod
+ def update_cmds(cls):
+ if cls.dovetail_config['report_dest'].startswith("http"):
+ cls.dovetail_config['bottlenecks']['cmds'][0] += ' --report'
diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py
index e6a775f1..fc007e51 100644
--- a/dovetail/utils/dovetail_utils.py
+++ b/dovetail/utils/dovetail_utils.py
@@ -111,21 +111,44 @@ def source_env(env_file):
with open(env_file, 'r') as f:
lines = f.readlines()
for line in lines:
- for match in re.findall(r"export (.*)=(.*)", line):
- match = (match[0].strip('\"'), match[1].strip('\"'))
- match = (match[0].strip('\''), match[1].strip('\''))
- os.environ.update({match[0]: match[1]})
+ if line.lstrip().startswith('export'):
+ for match in re.findall(r"export (.*)=(.*)", line):
+ match = (match[0].strip('\"'), match[1].strip('\"'))
+ match = (match[0].strip('\''), match[1].strip('\''))
+ os.environ.update({match[0]: match[1]})
+
+
+def check_https_enabled(logger=None):
+ logger.debug("Checking if https enabled or not...")
+ os_auth_url = os.getenv('OS_AUTH_URL')
+ if os_auth_url.startswith('https'):
+ logger.debug("https is enabled")
+ return True
+ logger.debug("https is not enabled")
+ return False
def get_ext_net_name(env_file, logger=None):
- source_env(env_file)
- cmd_check = "openstack network list"
+ https_enabled = check_https_enabled(logger)
+ insecure_option = ''
+ insecure = os.getenv('OS_INSECURE',)
+ if https_enabled:
+ logger.info("https enabled...")
+ if insecure:
+ if insecure.lower() == "true":
+ insecure_option = ' --insecure '
+ else:
+ logger.warn("Env variable OS_INSECURE is {}, if https + no "
+ "credential used, should be set as True."
+ .format(insecure))
+
+ cmd_check = "openstack %s network list" % insecure_option
ret, msg = exec_cmd(cmd_check, logger)
if ret:
- logger.error("The credentials info in %s is invalid." % env_file)
+ logger.error("The credentials info in {} is invalid.".format(env_file))
return None
- cmd = "openstack network list --long | grep 'External' | head -1 | \
- awk '{print $4}'"
+ cmd = "openstack %s network list --long | grep 'External' | head -1 | \
+ awk '{print $4}'" % insecure_option
ret, msg = exec_cmd(cmd, logger)
if not ret:
return msg
@@ -134,7 +157,7 @@ def get_ext_net_name(env_file, logger=None):
def store_db_results(db_url, build_tag, testcase, dest_file, logger):
url = "%s?build_tag=%s-%s" % (db_url, build_tag, testcase)
- logger.debug("Query to rest api: %s", url)
+ logger.debug("Query to rest api: {}".format(url))
try:
data = json.load(urllib2.urlopen(url))
if data['results']:
@@ -144,7 +167,8 @@ def store_db_results(db_url, build_tag, testcase, dest_file, logger):
else:
return False
except Exception as e:
- logger.error("Cannot read content from %s, exception: %s", url, e)
+ logger.exception(
+ "Cannot read content from {}, exception: {}".format(url, e))
return False
@@ -157,7 +181,7 @@ def get_duration(start_date, stop_date, logger):
res = "%sm%ss" % (delta / 60, delta % 60)
return res
except ValueError as e:
- logger.error("ValueError: %s", e)
+ logger.exception("ValueError: {}".format(e))
return None
@@ -171,24 +195,23 @@ def show_progress_bar(length):
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)
+ server_ret, server_ver = \
+ exec_cmd("sudo docker version -f'{{.Server.Version}}'", logger=logger)
+ client_ret, client_ver = \
+ exec_cmd("sudo docker version -f'{{.Client.Version}}'", logger=logger)
+ if server_ret == 0:
+ logger.debug("docker server version: {}".format(server_ver))
+ if server_ret != 0 or (LooseVersion(server_ver) < LooseVersion('1.12.3')):
+ logger.error("Don't support this Docker server version. "
+ "Docker server should be updated to at least 1.12.3.")
+ if client_ret == 0:
+ logger.debug("docker client version: {}".format(client_ver))
+ if client_ret != 0 or (LooseVersion(client_ver) < LooseVersion('1.12.3')):
+ logger.error("Don't support this Docker client version. "
+ "Docker client should be updated to at least 1.12.3.")
+
+
+def add_hosts_info(hosts_info):
+ hosts_file = '/etc/hosts'
+ with open(hosts_file, 'a') as f:
+ f.write("{}\n".format(hosts_info))
diff --git a/dovetail/utils/local_db/cases.json b/dovetail/utils/local_db/cases.json
new file mode 100644
index 00000000..118f740b
--- /dev/null
+++ b/dovetail/utils/local_db/cases.json
@@ -0,0 +1,36 @@
+{"testcases": [{"project_name": "functest", "run": {"class": "VPingSSH", "module": "functest.opnfv_tests.openstack.vping.vping_ssh"}, "description": "NFV \u201cHello World\u201d using SSH connection and floatting IP", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "55e05dba514bc52914149f2e", "catalog_description": "vPing using SSH", "creation_date": "2015-08-28 13:10:18.478986", "domains": null, "dependencies": {"installer": "", "scenario": "^((?!bgpvpn|odl_l3).)*$"}, "version": ">arno.1.0", "criteria": null, "tier": "healthcheck", "trust": "silver", "blocking": true, "name": "vping_ssh"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "This test consists in running OpenStack Tempest fonctional suite.Initially based on the smoke suite, functest aims to define its own subset of tests", "ci_loop": "daily", "tags": "tempest,api,interfaces,openstack,vim", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "55effe6f514bc52b1791f966", "catalog_description": "OpenStack Tempest (smoke)", "creation_date": "2015-09-09 09:39:59.661046", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">arno.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "tempest_smoke_serial"}, {"project_name": "functest", "run": {"class": "ODLTests", "module": "functest.opnfv_tests.sdn.odl.odl"}, "description": "This test consists in creating, updating and deleting, networks, ports, subnets, routers in ODL and Neutron", "ci_loop": "daily", "tags": "odl,sdn", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "56169c4e514bc52b17f4adaa", "catalog_description": "OpenDaylight", "creation_date": "2015-10-08 16:39:42.727060", "domains": "networking", "dependencies": {"installer": "", "scenario": "odl"}, "version": ">arno.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "odl"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Tests of OpenStack performed with Rally framework. These tests aim to qualify OpenStack modules and their associated APIs", "ci_loop": "daily", "tags": "rally,api,interfaces,openstack,vim", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "561e504c514bc5355ba8b3a8", "catalog_description": "OpenStack Rally (sanity)", "creation_date": "2015-10-14 12:53:32.126750", "domains": "vim", "dependencies": {"installer": "", "scenario": "^((?!bgpvpn).)*$"}, "version": ">arno.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "rally_sanity"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Tests of the ONOS Virtual Network Northbound API", "ci_loop": "daily", "tags": "onos,sdn", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "565d6579514bc5087f2ddd0b", "catalog_description": "ONOS", "creation_date": "2015-12-01 09:16:41.343670", "domains": "networking", "dependencies": {"installer": "", "scenario": "onos"}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "onos"}, {"project_name": "functest", "run": {"class": "VPingUserdata", "module": "functest.opnfv_tests.openstack.vping.vping_userdata"}, "description": "vPing using userdata and cloudinit mechanisms", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "569f60cf514bc541f885b206", "catalog_description": "vPing using userdata", "creation_date": "2016-01-20 10:26:23.160020", "domains": "", "dependencies": {"installer": "", "scenario": "^((?!lxd).)*$"}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "vping_userdata"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Rally full extended suite", "ci_loop": "weekly", "tags": "openstack,vim", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "573c83ef9377c5287772dc81", "catalog_description": "OpenStack Rally (full)", "creation_date": "2016-05-18 15:02:07.153735", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">colorado.1.0", "criteria": {"step1": "success_rate >=90"}, "tier": "components", "trust": "silver", "blocking": false, "name": "rally_full"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "Tempest full using parallel option", "ci_loop": "weekly", "tags": "openstack,vim,tempest", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "573c840d9377c5287772dc82", "catalog_description": "OpenStack Tempest (full)", "creation_date": "2016-05-18 15:02:37.517083", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">colorado.1.0", "criteria": {"step1": "success_rate >=80"}, "tier": "components", "trust": "silver", "blocking": false, "name": "tempest_full_parallel"}, {"project_name": "functest", "run": {"class": "", "module": ""}, "description": "SFC tests for ONOS based scenarios", "ci_loop": "daily", "tags": "sfc,service", "url": "http://artifacts.opnfv.org/functest/colorado/docs/userguide/index.html", "_id": "578502b89377c54b278bbfe3", "catalog_description": "ONOS Service Function Chaining", "creation_date": "2016-07-12 14:46:16.149806", "domains": "networking", "dependencies": {"installer": "", "scenario": "onos-sfc"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": true, "name": "onos_sfc"}, {"project_name": "functest", "run": {"class": "ConnectionCheck", "module": "functest.opnfv_tests.openstack.snaps.connection_check"}, "description": "This test case verifies the retrieval of OpenStack clients: Keystone, Glance, Neutron and Nova and may perform some simple queries. When the config value of snaps. use_keystone is True, functest must have access to the cloud's private network.", "ci_loop": "daily", "tags": "snaps,openstack,vim", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "584a5d4c1d2c6e000ab2d7e4", "catalog_description": "Healthcheck OpenStack connectivity", "creation_date": "2016-12-09 07:29:16.270583", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": null, "tier": "healthcheck", "trust": "silver", "blocking": true, "name": "connection_check"}, {"project_name": "functest", "run": {"class": "ApiCheck", "module": "functest.opnfv_tests.openstack.snaps.api_check"}, "description": "This test case verifies the retrieval of OpenStack clients:Keystone, Glance, Neutron and Nova and may perform some simple queries. When the config value of snaps. use_keystone is True, functest must have access to the cloud's private network.", "ci_loop": "daily", "tags": "snaps,api,interfaces,openstack,vim", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "584a5e1d1d2c6e000ab2d7e5", "catalog_description": "Healthcheck OpenStack API", "creation_date": "2016-12-09 07:32:45.435360", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": null, "tier": "healthcheck", "trust": "silver", "blocking": true, "name": "api_check"}, {"project_name": "functest", "run": {"class": "SnapsSmoke", "module": "functest.opnfv_tests.openstack.snaps.smoke"}, "description": "This test case contains tests that setup and destroy environments with VMs with and without Floating IPs with a newly created user and project. Set the config value snaps.use_floating_ips (True|False) to toggle this functionality. When the config value of snaps. use_keystone is True, functest must have access to the cloud's private network.", "ci_loop": "daily", "tags": "snaps,openstack,vim", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "584a5e731d2c6e000ab2d7e6", "catalog_description": "SNAPS (smoke)", "creation_date": "2016-12-09 07:34:11.982435", "domains": "vim", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": null, "tier": "smoke", "trust": "silver", "blocking": true, "name": "snaps_smoke"}, {"project_name": "functest", "run": "daily", "description": "This test case creates executes the SimpleHealthCheck Python test class which creates an, image, flavor, network, and Cirros VM instance and observes the console output to validate the single port obtains the correct IP address.", "ci_loop": "daily", "tags": "dhcp", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "589c8f248cf551000c78211e", "catalog_description": "Healthcheck OpenStack (network)", "creation_date": "2017-02-09 15:47:48.739222", "domains": "vim", "dependencies": "", "version": ">danube", "criteria": "", "tier": "healthcheck", "trust": null, "blocking": true, "name": "snaps_health_check"}, {"project_name": "functest", "run": {"class": "AaaVnf", "module": "functest.opnfv_tests.vnf.aaa.aaa"}, "description": "AAA VNF sample", "ci_loop": "weekly", "tags": "aaa, freeradius, vnf", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "58a324e6584d06000b0157f2", "catalog_description": "VNF AAA", "creation_date": "2017-02-14 15:40:22.150387", "domains": "vnf", "dependencies": "", "version": ">Danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "aaa"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.cloudify_ims"}, "description": "Clearwater vIMS deployed with cloudify orchestrator", "ci_loop": "weekly", "tags": "vnf, ims", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "58a325e8584d06000b0157f5", "catalog_description": "VNF clearwater IMS with Cloudify orchestrator", "creation_date": "2017-02-14 15:44:40.235672", "domains": "vnf", "dependencies": "", "version": ">Danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "cloudify_ims"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.orchestra_ims"}, "description": "openIMS deployed with openBaton orchestrator", "ci_loop": "weekly", "tags": "vnf, ims", "url": "http://artifacts.opnfv.org/functest/danube/docs/userguide/index.html", "_id": "58a3263b584d06000b0157f6", "catalog_description": "VNF openIMS with Openbaton orchestrator", "creation_date": "2017-02-14 15:46:03.398028", "domains": "vnf", "dependencies": "", "version": ">Danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "orchestra_openims"}, {"project_name": "functest", "run": "", "description": "Defcore List of tempest testcases", "ci_loop": "daily", "tags": "", "url": "", "_id": "58b438daf5a101000ac478ea", "catalog_description": "OpenStack Tempest (defcore)", "creation_date": "2017-02-27 14:34:02.219544", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "components", "trust": null, "blocking": "false", "name": "tempest_defcore"}, {"project_name": "functest", "run": null, "description": "A sub group of tests of the OpenStack Defcore testcases by using refstack client", "ci_loop": "daily", "tags": null, "url": null, "_id": "58c91c64b91f23000a62ba0a", "catalog_description": "OpenStack RefStack", "creation_date": "2017-03-15 10:50:12.764115", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": "smoke", "trust": null, "blocking": "false", "name": "refstack_defcore"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.opera_ims"}, "description": "Exemple of use of Open-O to deploy a VNF", "ci_loop": "weekly", "tags": "ims, open-o, onap, orchestration", "url": "", "_id": "58ca69abb91f23000a62baae", "catalog_description": "VNF clearwater IMS with Open-O orchestrator", "creation_date": "2017-03-16 10:32:11.203581", "domains": "orchestration, vnf", "dependencies": {"installer": "compass", "scenario": "os-nosdn-openo"}, "version": ">danube", "criteria": "", "tier": "vnf", "trust": null, "blocking": false, "name": "opera_ims"}, {"project_name": "functest", "run": {"class": "VrouterVnf", "module": "functest.opnfv_tests.vnf.router.vyos_vrouter"}, "description": "This test case is vRouter testing", "ci_loop": "", "tags": "vrouter, vnf", "url": "", "_id": "58ca6adeb91f23000a62baaf", "catalog_description": "VNF Vyatta vRouter with Cloudify orchestrator", "creation_date": "2017-03-16 10:37:18.293020", "domains": "network, vnf", "dependencies": {"installer": "fuel", "scenario": "nosdn-nofeature"}, "version": "", "criteria": "", "tier": "vnf", "trust": null, "blocking": "false", "name": "vyos_vrouter"}, {"project_name": "functest", "run": {"class": "ImsVnf", "module": "functest.opnfv_tests.vnf.ims.orchestra_ims"}, "description": "Clearwater vIMS deployed with Openbaton Mano orchestrator.", "ci_loop": "weekly", "tags": "vnf,ims", "url": "http://artifacts.opnfv.org/functest/euphrates/docs/userguide/index.html", "_id": "5922859a356833000a195187", "catalog_description": "VNF Clearwater IMS with OpenBaton orchestrator", "creation_date": "2017-05-22 06:30:50.512246", "domains": "mano,vnf", "dependencies": "", "version": ">euphrates", "criteria": 100, "tier": "vnf", "trust": null, "blocking": "false", "name": "orchestra_ims"}]}
+{"testcases": [{"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatio for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://tput_ovsdpdk", "_id": "565feb6b514bc5087f3cfe2e", "catalog_description": "Packet Loss Ratio for DPDK OVS (RFC2544)", "creation_date": "2015-12-03 07:12:43.925943", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://tput_ovs", "_id": "566005d9514bc5087f3cfe30", "catalog_description": "Packet Loss Ratio for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:05:29.686136", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://tput_ovs", "_id": "566005ed514bc5087f3cfe31", "catalog_description": "Packet Loss Ratio for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:05:49.363961", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.BackToBackFrames for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://b2b_ovsdpdk", "_id": "566006c8514bc5087f3cfe32", "catalog_description": "Back To Back Frames for DPDK Ovs (RFC2544)", "creation_date": "2015-12-03 09:09:28.927130", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "b2b_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.BackToBackFrames for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://b2b_ovs", "_id": "5660071e514bc5087f3cfe33", "catalog_description": "Back To Back Frames for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:10:54.473180", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "b2b_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatioFrameModification for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://tput_mod_vlan_ovsdpdk", "_id": "566007a9514bc5087f3cfe34", "catalog_description": "Packet Loss Ratio Frame Modification for DPDK Ovs (RFC2544)", "creation_date": "2015-12-03 09:13:13.600168", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_mod_vlan_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Throughput.RFC2544.PacketLossRatioFrameModification for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://tput_mod_vlan_ovs", "_id": "566007ec514bc5087f3cfe35", "catalog_description": "Packet Loss Ratio Frame Modification for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:14:20.594501", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "tput_mod_vlan_ovs"}, {"project_name": "vsperf", "run": null, "description": "LTD.Scalability.RFC2544.0PacketLoss for DPDK Ovs", "ci_loop": null, "tags": null, "url": "http://scalability_ovsdpdk", "_id": "56600870514bc5087f3cfe36", "catalog_description": ".Scalability Packet Loss for DPDK Ovs", "creation_date": "2015-12-03 09:16:32.491960", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "scalability_ovsdpdk"}, {"project_name": "vsperf", "run": null, "description": "LTD.Scalability.RFC2544.0PacketLoss for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://scalability_ovs", "_id": "566008b3514bc5087f3cfe37", "catalog_description": "Scalability Packet Loss for Vanilla Ovs (RFC2544)", "creation_date": "2015-12-03 09:17:39.501079", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "scalability_ovs"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.PacketLossRatio for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_tput_ovsdpdkuser", "_id": "5660095a514bc5087f3cfe38", "catalog_description": "PVP Packet Loss Ratio for DPDK User Ovs", "creation_date": "2015-12-03 09:20:26.244843", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_tput_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_tput_ovsvirtio", "_id": "566009ae514bc5087f3cfe39", "catalog_description": "PVP Packet Loss Ratio for Vanilla Ovs", "creation_date": "2015-12-03 09:21:50.251212", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_tput_ovsvirtio"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.BackToBackFrames for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_b2b_ovsdpdkuser", "_id": "56600a1a514bc5087f3cfe3a", "catalog_description": "PVP Back To Back Frames for DPDK User Ovs", "creation_date": "2015-12-03 09:23:38.269821", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_b2b_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVP LTD.Throughput.RFC2544.BackToBackFrames for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvp_b2b_ovsvirtio", "_id": "56600a5f514bc5087f3cfe3b", "catalog_description": "PVP Back To Back Frames for Vanilla Ovs", "creation_date": "2015-12-03 09:24:47.990062", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvp_b2b_ovsvirtio"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.PacketLossRatio for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_tput_ovsdpdkuser", "_id": "56600ab3514bc5087f3cfe3c", "catalog_description": "PVVP Packet Loss Ratio for DPDK User Ovs", "creation_date": "2015-12-03 09:26:11.657515", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_tput_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.PacketLossRatio for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_tput_ovsvirtio", "_id": "56600ae9514bc5087f3cfe3d", "catalog_description": "PVVP Packet Loss Ratio for Vanilla Ovs", "creation_date": "2015-12-03 09:27:05.466374", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_tput_ovsvirtio"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.BackToBackFrames for DPDK User Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_b2b_ovsdpdkuser", "_id": "56600b2a514bc5087f3cfe3e", "catalog_description": "PVVP Back To Back Frames for DPDK User Ovs", "creation_date": "2015-12-03 09:28:10.150217", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_b2b_ovsdpdkuser"}, {"project_name": "vsperf", "run": null, "description": "PVVP LTD.Throughput.RFC2544.BackToBackFrames for Vanilla Ovs", "ci_loop": null, "tags": null, "url": "http://pvvp_b2b_ovsvirtio", "_id": "56600b4f514bc5087f3cfe3f", "catalog_description": "PVVP Back To Back Frames for Vanilla Ovs", "creation_date": "2015-12-03 09:28:47.108529", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "pvvp_b2b_ovsvirtio"}, {"project_name": "vsperf", "run": "", "description": "", "ci_loop": "", "tags": "ovs,dpdk", "url": "", "_id": "591e8a8f41b755000a68c831", "catalog_description": "Phy2Phy Continuous Stream DPDK", "creation_date": "2017-05-19 06:02:55.177254", "domains": "compute", "dependencies": "", "version": ">euphrates", "criteria": "", "tier": "performance", "trust": null, "blocking": "", "name": "cont_ovsdpdk"}, {"project_name": "vsperf", "run": "", "description": "", "ci_loop": "", "tags": "ovs", "url": "", "_id": "5980d1b073ce050010c339ca", "catalog_description": "Phy2Phy Continuous Stream", "creation_date": "2017-08-01 19:08:32.518983", "domains": "compute", "dependencies": "", "version": "euphrates", "criteria": "", "tier": null, "trust": null, "blocking": "", "name": "cont_ovs"}]}
+{"testcases": [{"project_name": "promise", "run": null, "description": "Reservation of a VM for immediate use followed by allocation", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583055514bc5087f2ddcea", "catalog_description": null, "creation_date": "2015-11-27 10:28:37.379982", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "VM-reservation-for-immediate-use-followed-by-allocation"}, {"project_name": "promise", "run": null, "description": "Reservation of a VM followed by denial of service to another user and by allocation of reserved VM", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565830a1514bc5087f2ddceb", "catalog_description": null, "creation_date": "2015-11-27 10:29:53.195016", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "VM-reservation-followed-by-denial-of-service-to-another-user-and-by-allocation-of-reserved-VM"}, {"project_name": "promise", "run": null, "description": "Reservation of a VM for future use", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565830cb514bc5087f2ddcec", "catalog_description": null, "creation_date": "2015-11-27 10:30:35.622990", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "VM-reservation-for-future-use"}, {"project_name": "promise", "run": null, "description": "Update of an outstanding reservation, increase capacity", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565830f0514bc5087f2ddced", "catalog_description": null, "creation_date": "2015-11-27 10:31:12.251753", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Update-of-an-outstanding-reservation-increase-capacity"}, {"project_name": "promise", "run": null, "description": "Update of an outstanding reservation, decrease capacity", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "5658310e514bc5087f2ddcee", "catalog_description": null, "creation_date": "2015-11-27 10:31:42.492243", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Update-of-an-outstanding-reservation-decrease-capacity"}, {"project_name": "promise", "run": null, "description": "Notification of reservation change", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583126514bc5087f2ddcef", "catalog_description": null, "creation_date": "2015-11-27 10:32:06.281109", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Notification-of-reservation-change"}, {"project_name": "promise", "run": null, "description": "Cancellation of a reservation", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "5658313f514bc5087f2ddcf0", "catalog_description": null, "creation_date": "2015-11-27 10:32:31.819144", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Cancellation-of-a-reservation"}, {"project_name": "promise", "run": null, "description": "Query of a reservation", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583162514bc5087f2ddcf1", "catalog_description": null, "creation_date": "2015-11-27 10:33:06.651788", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Query-of-a-reservation"}, {"project_name": "promise", "run": null, "description": "Create a bulk reservation of compute capacity", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "56583180514bc5087f2ddcf2", "catalog_description": null, "creation_date": "2015-11-27 10:33:36.633730", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Create-a-bulk-reservation-of-compute-capacity"}, {"project_name": "promise", "run": null, "description": "Rejection of a reservation due to lack of resources", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831a1514bc5087f2ddcf3", "catalog_description": null, "creation_date": "2015-11-27 10:34:09.196279", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Rejection-of-a-reservation-due-to-lack-of-resources"}, {"project_name": "promise", "run": null, "description": "Reservation of block storage for future use", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831c0514bc5087f2ddcf4", "catalog_description": null, "creation_date": "2015-11-27 10:34:40.449825", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Reservation-of-block-storage-for-future-use"}, {"project_name": "promise", "run": null, "description": "Capacity Management, query", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831db514bc5087f2ddcf5", "catalog_description": null, "creation_date": "2015-11-27 10:35:07.912239", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Capacity-Management-query"}, {"project_name": "promise", "run": null, "description": "Capacity Management, notification", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/_media/promise/test_cases.docx", "_id": "565831eb514bc5087f2ddcf6", "catalog_description": null, "creation_date": "2015-11-27 10:35:23.003655", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Capacity-Management-notification"}, {"project_name": "promise", "run": {"class": "", "module": ""}, "description": "Global promise suite", "ci_loop": "daily", "tags": "promise,resource reservation, resource management", "url": "https://wiki.opnfv.org/promise", "_id": "56a9d74a851d7e6a0f74930c", "catalog_description": null, "creation_date": "2016-01-28 08:54:34.857669", "domains": "mano", "dependencies": {"installer": "(fuel)|(joid)", "scenario": ""}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "promise"}]}
+{"testcases": [{"project_name": "sdnvpn", "run": null, "description": "RF tests for ODL VPN service using ODL REST API.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/sdnvpn/main#functest", "_id": "565c7341514bc5087f2ddcfc", "catalog_description": null, "creation_date": "2015-11-30 16:03:13.149596", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "odl_vpn"}, {"project_name": "sdnvpn", "run": null, "description": "RF tests for BGPVPN Neutron API extensions using Tempest framework.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/sdnvpn/main#Main-OpenStackNeutronBGPVPNAPItests", "_id": "565c7348514bc5087f2ddcfd", "catalog_description": null, "creation_date": "2015-11-30 16:03:20.997647", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "functest_tempest"}, {"project_name": "sdnvpn", "run": null, "description": "VPNs provide connectivity across Neutron networks and subnets if configured accordingly.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/sdnvpn/main#Main-TestCase1-VPNprovidesconnectivitybetweensubnets", "_id": "565d5e45514bc5087f2ddd03", "catalog_description": null, "creation_date": "2015-12-01 08:45:57.900254", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "functest_testcase_1"}, {"project_name": "sdnvpn", "run": null, "description": "Using VPNs to isolate tenants so that overlapping IP address ranges can be used.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/sdnvpn/main#Main-TestCase2-tenantseparation", "_id": "565d5e60514bc5087f2ddd04", "catalog_description": null, "creation_date": "2015-12-01 08:46:24.194775", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "functest_testcase_2"}, {"project_name": "sdnvpn", "run": {"class": "SdnVpnTests", "module": "functest.opnfv_tests.features.sdnvpn"}, "description": "This test case is to report the overall result of all the test cases executed in a specific CI run", "ci_loop": "daily", "tags": "bgpvpn", "url": "https://wiki.opnfv.org/display/sdnvpn/main", "_id": "578f743d9377c54b278bc466", "catalog_description": null, "creation_date": "2016-07-20 12:53:17.290365", "domains": "networking", "dependencies": {"installer": "(fuel)|(apex)", "scenario": "bgpvpn"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "bgpvpn"}]}
+{"testcases": [{"project_name": "sfc", "run": {"class": "OpenDaylightSFC", "module": "functest.opnfv_tests.features.odl_sfc"}, "description": "Test case written in Functest.", "ci_loop": "daily", "tags": "sfc,odl", "url": "", "_id": "57d6d3d41d2c6e000ab1d7a8", "catalog_description": null, "creation_date": "2016-09-12 16:12:04.638903", "domains": "networking", "dependencies": {"installer": "(apex)|(fuel)", "scenario": "odl_l2-sfc"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "functest-odl-sfc"}]}
+{"testcases": [{"project_name": "ha", "run": null, "description": "Sample test case for the HA of controller node Openstack service.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc019.html", "_id": "5923c338356833000a1951d1", "catalog_description": "HA_nova-api_service_down", "creation_date": "2017-05-23 05:06:00.729799", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc019"}, {"project_name": "ha", "run": null, "description": "Test case for TC045 :Control node Openstack service down - neutron server.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc045.html", "_id": "5923c339356833000a1951d2", "catalog_description": "HA_neutron-server_service_down", "creation_date": "2017-05-23 05:06:01.464749", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc045"}, {"project_name": "ha", "run": null, "description": "Test case for TC046 :Control node Openstack service down - keystone.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc046.html", "_id": "5923c33a356833000a1951d3", "catalog_description": "HA_keystone_service_down", "creation_date": "2017-05-23 05:06:02.029462", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc046"}, {"project_name": "ha", "run": null, "description": "Test case for TC047 :Control node Openstack service down - glance api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc047.html", "_id": "5923c33a356833000a1951d4", "catalog_description": "HA_glance-api_service_down", "creation_date": "2017-05-23 05:06:02.675239", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc047"}, {"project_name": "ha", "run": null, "description": "Test case for TC048 :Control node Openstack service down - cinder api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc048.html", "_id": "5923c33b356833000a1951d5", "catalog_description": "HA_cinder-api_service_down", "creation_date": "2017-05-23 05:06:03.215756", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc048"}, {"project_name": "ha", "run": null, "description": "Test case for TC051 :OpenStack Controller Node CPU Overload High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc051.html", "_id": "5923c33b356833000a1951d6", "catalog_description": "HA_CPU_overload", "creation_date": "2017-05-23 05:06:03.900311", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc051"}, {"project_name": "ha", "run": null, "description": "Test case for TC052 :OpenStack Controller Node Disk I/O Block High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc052.html", "_id": "5923c33c356833000a1951d7", "catalog_description": "HA_disk_I/O_block", "creation_date": "2017-05-23 05:06:04.452133", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc052"}, {"project_name": "ha", "run": null, "description": "Test case for TC053 :Openstack Controller Load Balance Service High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc053.html", "_id": "5923c33d356833000a1951d8", "catalog_description": "HA_load_balancer_service_down", "creation_date": "2017-05-23 05:06:05.031012", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc053"}]}
+{"testcases": [{"project_name": "ipvsix", "run": null, "description": "Test IPv6 connectivity between nodes on the tenant network", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-186", "_id": "565da626514bc5087f2ddd21", "catalog_description": null, "creation_date": "2015-12-01 13:52:38.704783", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC027_IPVSIX: IPv6 connectivity between nodes on the tenant network"}]}
+{"testcases": [{"project_name": "vnfgraph", "run": null, "description": "Verify HTTP is blocked, OpenStack Networking-SFC", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-194", "_id": "565dabcd514bc5087f2ddd23", "catalog_description": null, "creation_date": "2015-12-01 14:16:45.424034", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC032_VNFGRAPH: Block HTTP (OpenStack Networking-SFC)"}, {"project_name": "vnfgraph", "run": null, "description": "Verify HTTP is blocked, ONOS-SFC", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-195", "_id": "565dac1a514bc5087f2ddd24", "catalog_description": null, "creation_date": "2015-12-01 14:18:02.138468", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC034_VNFGRAPH: Block HTTP (ONOS-SFC)"}]}
+{"testcases": [{"project_name": "kvmfornfv", "run": null, "description": "Latency measurements with cyclictest", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-188?jql=project%20%3D%20YARDSTICK", "_id": "565d68f4514bc5087f2ddd0d", "catalog_description": null, "creation_date": "2015-12-01 09:31:32.920841", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC028_KVM: Latency measurements with cyclictest"}, {"project_name": "kvmfornfv", "run": null, "description": "packet forwarding latency with vsperf", "ci_loop": "daily", "tags": null, "url": "https://jira.opnfv.org/browse/KVMFORNFV-58", "_id": "59249e6578a2ad000ae6a15d", "catalog_description": null, "creation_date": "2017-05-23 20:41:09.969403", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "packet forwarding latency with vsperf"}, {"project_name": "kvmfornfv", "run": null, "description": "Fast Live Migration", "ci_loop": "daily", "tags": null, "url": "https://jira.opnfv.org/browse/KVMFORNFV-83", "_id": "5924a0af78a2ad000ae6a15f", "catalog_description": null, "creation_date": "2017-05-23 20:50:55.839838", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Fast Live Migration"}, {"project_name": "kvmfornfv", "run": null, "description": "DPDK interrupt mode", "ci_loop": "daily", "tags": null, "url": "https://jira.opnfv.org/browse/KVMFORNFV-81", "_id": "5924a11578a2ad000ae6a160", "catalog_description": null, "creation_date": "2017-05-23 20:52:37.016807", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "DPDK interrupt mode"}]}
+{"testcases": [{"project_name": "ovsnfv", "run": null, "description": "Yardstick NFVI generic test cases run on OVSNFV environment", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-196", "_id": "565dae87514bc5087f2ddd25", "catalog_description": null, "creation_date": "2015-12-01 14:28:23.946511", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC035_OVSNFV: Yardstick Test suite for OVSNFV"}]}
+{"testcases": [{"project_name": "armband", "run": null, "description": "Yardstick NFVI generic test cases run on ARM-based hardware", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/YARDSTICK-197", "_id": "565db01d514bc5087f2ddd26", "catalog_description": null, "creation_date": "2015-12-01 14:35:09.108065", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OPNFV_YARDSTICK_TC036_ARMBAND: Yardstick Test suite for ARMBAND"}]}
+{"testcases": [{"project_name": "copper", "run": null, "description": "Set of Tempest test cases to verify the Copper component.", "ci_loop": null, "tags": null, "url": "https://github.com/openstack/congress/tree/master/congress_tempest_tests", "_id": "565d99cb514bc5087f2ddd19", "catalog_description": null, "creation_date": "2015-12-01 12:59:55.741216", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "Tempest-copper"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Identifying VMs connected to a DMZ (currently identified through a specifically-named security group); 2) Identifying VMs connected per (1), which are by policy not allowed to be (currently implemented through an image tag intended to identify images that are 'authorized' i.e. tested and secure, to be DMZ-connected); 3) Reactively enforce the dmz placement rule by pausing VMs found to be in violation of the policy.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/dmz.sh", "_id": "577d49739377c54b278bbc92", "catalog_description": null, "creation_date": "2016-07-06 18:09:55.391869", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "dmz"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Detecting that a reserved subnet has been created, by mistake. 'Reserved' in this example means e.g. not intended for use by VMs.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/reserved_subnet.sh", "_id": "577d49819377c54b278bbc93", "catalog_description": null, "creation_date": "2016-07-06 18:10:09.205388", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "reserved_subnet"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Identifying VMs that have STMP (TCP port 25) open for ingress.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/smtp_ingress.sh", "_id": "577d498e9377c54b278bbc94", "catalog_description": null, "creation_date": "2016-07-06 18:10:22.310104", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "smtp_ingress"}, {"project_name": "copper", "run": {"class": "Copper", "module": "functest.opnfv_tests.feature.copper"}, "description": "", "ci_loop": "daily", "tags": "copper,policy management,congress", "url": "https://wiki.opnfv.org/display/copper", "_id": "57adcbce9377c54b278bd67a", "catalog_description": null, "creation_date": "2016-08-12 13:14:54.469155", "domains": "mano", "dependencies": {"installer": "(apex)|(joid)", "scenario": "^((?!fdio|lxd).)*$"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "copper-notification"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress policy test. Sets up and validates policy creation and execution for: 1) Detecting that a VM is connected to two networks of different 'security levels' by mistake. 'Security levels' in this example means that the service provider assigns distinct sensitivity/risk to connections over those networks, e.g. a public network (e.g. DMZ) and an internal/private network (e.g. service provider admin network).", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/network_bridging.sh", "_id": "5846e6341d2c6e000ab2d403", "catalog_description": null, "creation_date": "2016-12-06 16:24:20.749582", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "network_bridging"}, {"project_name": "copper", "run": null, "description": "An OpenStack Congress test. Verifies that if one instance of an HA-deployed Congress service fails, the Congress service continues to function during the failure period and after HA is service is restored.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/cgit/copper/plain/tests/congress_ha.sh", "_id": "5846e6611d2c6e000ab2d404", "catalog_description": null, "creation_date": "2016-12-06 16:25:05.027643", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "congress_ha"}]}
+{"testcases": [{"project_name": "doctor", "run": {"class": "", "module": ""}, "description": "immediate notification for fault management.", "ci_loop": "daily", "tags": "doctor,fault monitoring", "url": "https://etherpad.opnfv.org/p/doctor_use_case_for_b_release", "_id": "565d9f35514bc5087f2ddd1e", "catalog_description": null, "creation_date": "2015-12-01 13:23:01.972178", "domains": "mano", "dependencies": {"installer": "apex", "scenario": "^((?!fdio).)*$"}, "version": ">brahmaputra.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "doctor-notification"}, {"project_name": "doctor", "run": null, "description": "resource state correction for fault management.", "ci_loop": null, "tags": null, "url": "https://etherpad.opnfv.org/p/doctor_use_case_for_b_release", "_id": "565d9f43514bc5087f2ddd1f", "catalog_description": null, "creation_date": "2015-12-01 13:23:15.994153", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "doctor-mark-down"}]}
+{"testcases": [{"project_name": "qtip", "run": "", "description": "Overall score for system compute performance.", "ci_loop": "", "tags": "", "url": "", "_id": "59530da6bdd637000acb9f02", "catalog_description": "compute performance index", "creation_date": "2017-06-28 02:00:06.539932", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "compute"}]}
+{"testcases": [{"project_name": "ovno", "run": null, "description": "This test suite will check the basic operation such as network creation, noetwork policy, connectivity between VMs on an IPv4 network", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec2cc514bc5087f3cfe27", "catalog_description": null, "creation_date": "2015-12-02 10:07:08.008647", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail"}, {"project_name": "ovno", "run": null, "description": "This test suite will check the support of IPv6 for basic operations in opencontrail.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec2fb514bc5087f3cfe28", "catalog_description": null, "creation_date": "2015-12-02 10:07:55.729717", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-ipvsix"}, {"project_name": "ovno", "run": null, "description": "This test suite will check the support of Network policy features in opencontrail.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec31a514bc5087f3cfe29", "catalog_description": null, "creation_date": "2015-12-02 10:08:26.150838", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-policy"}, {"project_name": "ovno", "run": null, "description": "This test suite will check the creation of service template, service instance, network policy related to service instance or policy using opencontrail.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec351514bc5087f3cfe2a", "catalog_description": null, "creation_date": "2015-12-02 10:09:21.915762", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-service"}, {"project_name": "ovno", "run": null, "description": "This test suite requires an gateway router (probably not possible in all labs in first step). Tests deal with creation of external router, floating IP address pool creation, floating IP allocation, connectivity check with external IP addresses.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/ovno/project_proposal", "_id": "565ec3b2514bc5087f3cfe2b", "catalog_description": null, "creation_date": "2015-12-02 10:10:58.745032", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opencontrail-ext"}]}
+{"testcases": [{"project_name": "bottlenecks", "run": null, "description": "Stress tess on dataplane traffic using netperf.", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/BOTTLENECK-94", "_id": "58cf436a32c829000a11507e", "catalog_description": "Bandwidth Baseline", "creation_date": "2017-03-20 02:50:18.066854", "domains": null, "dependencies": null, "version": ">=danube.1.0", "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "posca_factor_system_bandwidth"}, {"project_name": "bottlenecks", "run": null, "description": "Stress tess on performance life-cycle using ping.", "ci_loop": null, "tags": null, "url": "https://jira.opnfv.org/browse/BOTTLENECK-136", "_id": "58cf486332c829000a11508c", "catalog_description": "Ping Life-cycle Event", "creation_date": "2017-03-20 03:11:31.347177", "domains": null, "dependencies": null, "version": ">=danube.1.0", "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "posca_factor_ping"}]}
+{"testcases": [{"project_name": "policy-test", "run": null, "description": "groupe based policy testing on ODL", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/policytest", "_id": "5669a939514bc5068a345d30", "catalog_description": null, "creation_date": "2015-12-10 16:32:57.643318", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "odl-gbp"}]}
+{"testcases": [{"project_name": "moon", "run": {"class": "", "module": ""}, "description": "This case deals with moon authentication and moon authorization test suites.", "ci_loop": "daily", "tags": "moon,security,keystone,odl,multisite", "url": "To be completed", "_id": "571740a19377c5332042a5e2", "catalog_description": "Moon security module", "creation_date": "2016-04-20 08:41:05.453036", "domains": "security", "dependencies": {"installer": "compass", "scenario": "(odl)*(moon)"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "moon"}]}
+{"testcases": [{"project_name": "storperf", "run": {"class": "", "module": ""}, "description": "Following SNIA guidelines, this test consists of creating as many VMs and Cinder volumes as there are Cinder storage nodes, and then running a series of workloads against that environment.", "ci_loop": "daily", "tags": "openstack,cinder,storage", "url": "https://wiki.opnfv.org/display/storperf/SNIA+Targets", "_id": "588bb3d58cf551000c781d6f", "catalog_description": "Cinder volume testing (SNIA)", "creation_date": "2017-01-27 20:55:49.593736", "domains": "storage", "dependencies": {"installer": "", "scenario": ""}, "version": ">danube.1.0", "criteria": "", "tier": "performance", "trust": null, "blocking": true, "name": "snia_steady_state"}]}
+{"testcases": [{"project_name": "domino", "run": {"class": "Domino", "module": "functest.opnfv_tests.features.domino"}, "description": null, "ci_loop": "daily", "tags": "domino,policy", "url": null, "_id": "578ec6449377c54b278bc3f0", "catalog_description": null, "creation_date": "2016-07-20 00:31:00.307041", "domains": "mano", "dependencies": {"installer": "joid", "scenario": ""}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "domino-multinode"}, {"project_name": "domino", "run": null, "description": null, "ci_loop": null, "tags": null, "url": null, "_id": "578ec7779377c54b278bc3f1", "catalog_description": null, "creation_date": "2016-07-20 00:36:07.772175", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "domino-singlenode"}]}
+{"testcases": [{"project_name": "fastdatastacks", "run": {"args:": {"suites": "/home/opnfv/repos/fds/testing/robot"}, "class": "ODLTests", "module": "functest.opnfv_tests.sdn.odl.odl"}, "description": "Security groups test for http traffic in a fast data stack", "ci_loop": "daily", "tags": "networking, fdio, gbp, odl, openstack, vpp, honeycomb, apex ", "url": "http://artifacts.opnfv.org/fds/colorado/2.0/docs/index.html", "_id": "58c15e568fd6ac000aa241b1", "catalog_description": null, "creation_date": "2017-03-09 13:53:26.886856", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl.*fdio"}, "version": ">danube", "criteria": "", "tier": "smoke", "trust": "silver", "blocking": false, "name": "fds"}, {"project_name": "fastdatastacks", "run": null, "description": "Verify that networking resources are created and deleted correctly across the whole stack - ODL GBP, ODL VBD, ODL LISP, Honeycomb and VPP", "ci_loop": "daily", "tags": "networking, fdio, gbp, vbd, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591eeba9e93345000afa3841", "catalog_description": null, "creation_date": "2017-05-19 12:57:13.983864", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio"}, "version": ">euphrates", "criteria": null, "tier": "smoke", "trust": null, "blocking": false, "name": "fds_stack_integrity"}, {"project_name": "fastdatastacks", "run": null, "description": "Distributed Virtual Routing (DVR) specific testcases focused on traffic inspection", "ci_loop": "daily", "tags": "networking, fdio, gbp, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591eed2ee93345000afa3843", "catalog_description": null, "creation_date": "2017-05-19 13:03:42.350775", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio-dvr"}, "version": ">euphrates", "criteria": null, "tier": "features", "trust": null, "blocking": false, "name": "fds_dvr"}, {"project_name": "fastdatastacks", "run": null, "description": "ODL split-rejoin test. In case any of the ODL controllers becomes unreachable the operability of the whole stack is not affected.", "ci_loop": "daily", "tags": "networking, fdio, gbp, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591eeed2e93345000afa3849", "catalog_description": null, "creation_date": "2017-05-19 13:10:42.437167", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio.*-ha"}, "version": ">euphrates", "criteria": null, "tier": "sdn_suites", "trust": null, "blocking": false, "name": "fds_odl_split_rejoin"}, {"project_name": "fastdatastacks", "run": null, "description": "ODL cluster stress test. Create a very large amount of networks and ports (~20 000) and verify that all of those were created properly.", "ci_loop": null, "tags": "networking, fdio, gbp, odl, lisp, openstack, vpp, honeycomb, apex", "url": null, "_id": "591ef15ce93345000afa384e", "catalog_description": null, "creation_date": "2017-05-19 13:21:32.020394", "domains": "networking", "dependencies": {"installer": "apex", "scenario": "odl-fdio.*-ha"}, "version": ">euphrates", "criteria": null, "tier": "sdn_suites", "trust": null, "blocking": false, "name": "fds_odl_stress"}]}
+{"testcases": [{"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using Cloudify as VNFM. Based upon the vIMS Functest test, this test uses the same Clearwater IMS blueprint but simplifies it to deploy the Cloudify HelloWorld example, a simple web server. The test will include basic verification that the web server is deployed and operational.", "ci_loop": null, "tags": null, "url": "https://github.com/blsaws/vHello", "_id": "577d4d339377c54b278bbc95", "catalog_description": null, "creation_date": "2016-07-06 18:25:55.058124", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using Cloudify as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, modified/extended for testing of Cloudify-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_Cloudify.sh\ufeff", "_id": "5846edbc1d2c6e000ab2d407", "catalog_description": null, "creation_date": "2016-12-06 16:56:28.523336", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_Cloudify"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using Tacker as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, as modified/extended for testing of Tacker-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_Tacker.sh", "_id": "5846ee7a1d2c6e000ab2d408", "catalog_description": null, "creation_date": "2016-12-06 16:59:38.631893", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_Tacker"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using OpenBaton as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, as modified/extended for testing of OpenBaton-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_OpenBaton.sh\ufeff", "_id": "5846eeed1d2c6e000ab2d409", "catalog_description": null, "creation_date": "2016-12-06 17:01:33.215412", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_OpenBaton"}, {"project_name": "models", "run": null, "description": "A basic TOSCA blueprint based test using OpenBaton as VNFM. A single-node simple python web server, connected to two internal networks (private and admin), and accessible via a floating IP. Based upon the OpenStack Tacker project's 'tosca-vnfd-hello-world' blueprint, as modified/extended for testing of OpenBaton-supported features as of OpenStack Newton.", "ci_loop": null, "tags": null, "url": "https://git.opnfv.org/models/plain/tests/vHello_JuJu.sh\ufeff", "_id": "5846ef011d2c6e000ab2d40a", "catalog_description": null, "creation_date": "2016-12-06 17:01:53.074430", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "vHello_JuJu"}]}
+{"testcases": [{"project_name": "multisite", "run": {"class": "", "module": ""}, "description": "", "ci_loop": "daily", "tags": "multisite", "url": "", "_id": "57add11d9377c54b278bd67c", "catalog_description": null, "creation_date": "2016-08-12 13:37:33.326414", "domains": "vim", "dependencies": {"installer": "(fuel)|(compass)", "scenario": "multisite"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "multisite"}]}
+{"testcases": [{"project_name": "parser", "run": {"class": "", "module": ""}, "description": "OPNFV parser Project basic test case", "ci_loop": "daily", "tags": "parser,policy", "url": "", "_id": "57b2cd509377c54b278bdb91", "catalog_description": null, "creation_date": "2016-08-16 08:22:40.579465", "domains": "mano", "dependencies": {"installer": "fuel", "scenario": "^((?!bgpvpn|noha).)*$"}, "version": ">colorado.1.0", "criteria": null, "tier": "feature", "trust": "silver", "blocking": false, "name": "parser-basics"}]}
+{"testcases": [{"project_name": "netready", "run": null, "description": "This test case will exercise a new API exposed by a L3VPN Proton to configure a L3VPN network service. The API is addressed through a new protonclient.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/netready/Test+Strategy", "_id": "582ef66d1d2c6e000ab2b227", "catalog_description": null, "creation_date": "2016-11-18 12:39:09.904884", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "gluon_vping"}, {"project_name": "netready", "run": null, "description": "This test case exercises the model-driven API creation capabilities of Gluon.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/netready/Test+Strategy", "_id": "5922ca9c356833000a1951b2", "catalog_description": null, "creation_date": "2017-05-22 11:25:16.951468", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "gluon_api_generation"}]}
+{"testcases": [{"project_name": "securityscanning", "run": null, "description": "OpenSCAP security scan of OPNFV system", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/security/Security+Scanning", "_id": "582f29f51d2c6e000ab2b27e", "catalog_description": null, "creation_date": "2016-11-18 16:19:01.360172", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "security_scan"}]}
+{"testcases": [{"project_name": "opera", "run": null, "description": "vIMS is used as initial use case, based on which test cases will be created and aligned with Open-O first release for OPNFV D release.", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/PROJ/Opera+Project", "_id": "584888a41d2c6e000ab2d619", "catalog_description": null, "creation_date": "2016-12-07 22:09:40.481402", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "opera-vims"}]}
+{"testcases": []}
+null
+{"testcases": []}
+{"testcases": [{"project_name": "yardstick", "run": null, "description": "This is for ci to store test suites status", "ci_loop": "daily", "tags": null, "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/scenario_status.html", "_id": "592292b7356833000a195188", "catalog_description": "Not applicable (used for reporting)", "creation_date": "2017-05-22 07:26:47.523411", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "scenario_status"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC001 config file; Measure network throughput using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run twice. First twice with the least amount of ports and further on.\n", "ci_loop": "daily", "tags": "pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc001.html", "_id": "592292b8356833000a195189", "catalog_description": "network: throughput (pktgen)", "creation_date": "2017-05-22 07:26:48.714560", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc001"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC002 config file; measure network latency using ping;\n", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc002.html", "_id": "592292b9356833000a19518a", "catalog_description": "network: latency (ping)", "creation_date": "2017-05-22 07:26:49.820133", "domains": "network", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc002"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC005 config file; Measure Storage IOPS, throughput and latency using fio.\n", "ci_loop": "daily", "tags": "fio", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc005.html", "_id": "592292ba356833000a19518b", "catalog_description": "storage: disk IOPS, latency & throughput (fio)", "creation_date": "2017-05-22 07:26:50.927211", "domains": "storage", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc005"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC006 config file.\n", "ci_loop": "daily", "tags": "vtc_throughput", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc006.html", "_id": "592292bc356833000a19518c", "catalog_description": "vtc: data plane throughput", "creation_date": "2017-05-22 07:26:52.058010", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc006"}, {"project_name": "yardstick", "run": null, "description": "Sample benchmark task config file; vTC.\n", "ci_loop": "daily", "tags": "vtc_throughput_noisy", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc007.html", "_id": "592292bd356833000a19518d", "catalog_description": "vtc: data plane throughput(Noisy neighbours)", "creation_date": "2017-05-22 07:26:53.143162", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc007"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC008 config file; Measure network throughput and packet loss using Pktgen; Different amount of flows, from 2 up to 1001000, in combination with different packet sizes are run in each test. Each combination of packet size and flow amount is run 10 times. First 10 times with the smallest packet size, starting with the least amount of ports/flows, then next amount of ports with same packet size, and so on. The test sequence continues with the next packet size, with same ports/flows sequence as before.\n", "ci_loop": "daily", "tags": "pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc008.html", "_id": "592292be356833000a19518e", "catalog_description": "network: throughput and packet loss extended(pktgen)", "creation_date": "2017-05-22 07:26:54.255469", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc008"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC009 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 10 times each. First 10 times with the least amount of ports, then 10 times with the next amount of ports, and so on until all packet sizes have been run with;\n", "ci_loop": "daily", "tags": "pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc009.html", "_id": "592292bf356833000a19518f", "catalog_description": "network: throughput and packet loss (pktgen)", "creation_date": "2017-05-22 07:26:55.406119", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc009"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC010 config file; measure memory read latency using lmbench.\n", "ci_loop": "daily", "tags": "lmbench", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc010.html", "_id": "592292c0356833000a195190", "catalog_description": "compute: memory read latency (lmbench)", "creation_date": "2017-05-22 07:26:56.562861", "domains": "compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc010"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC011 config file; Measure packet delay variation (jitter) using iperf3.\n", "ci_loop": "daily", "tags": "iperf3", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc011.html", "_id": "592292c1356833000a195191", "catalog_description": "network: performance latency (iperf)", "creation_date": "2017-05-22 07:26:57.673084", "domains": "network", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc011"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC012 config file; Measure memory read and write bandwidth using lmbench.\n", "ci_loop": "daily", "tags": "lmbench", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc012.html", "_id": "592292c2356833000a195192", "catalog_description": "compute: memory bandwith (lmbench)", "creation_date": "2017-05-22 07:26:58.871685", "domains": "compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc012"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC014 config file; Measure Processing speed using unixbench.\n", "ci_loop": "daily", "tags": "unixbench", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc014.html", "_id": "592292c4356833000a195193", "catalog_description": "compute: processing speed (unixbench)", "creation_date": "2017-05-22 07:27:00.007018", "domains": "compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc014"}, {"project_name": "yardstick", "run": null, "description": "Sample test case for the HA of controller node Openstack service.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc019.html", "_id": "592292c5356833000a195194", "catalog_description": "HA: nova-api service down", "creation_date": "2017-05-22 07:27:01.147332", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc019"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC020 config file.\n", "ci_loop": "daily", "tags": "vtc_instantiation_validation", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc020.html", "_id": "592292c6356833000a195195", "catalog_description": "vtc instantiation", "creation_date": "2017-05-22 07:27:02.271192", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc020"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC021 config file.\n", "ci_loop": "daily", "tags": "vtc_instantiation_validation_noisy", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc021.html", "_id": "592292c7356833000a195196", "catalog_description": "vtc instantiation (Noisy neighbours)", "creation_date": "2017-05-22 07:27:03.420740", "domains": "vtc", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc021"}, {"project_name": "yardstick", "run": null, "description": "Sample test case for the HA of OpenStack Controll Node abnormally shutdown.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc025.html", "_id": "592292c8356833000a195197", "catalog_description": "HA: controller node shutdown", "creation_date": "2017-05-22 07:27:04.577080", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc025"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC027 config file; Measure IPV6 network latency using ping6.\n", "ci_loop": "daily", "tags": "ping6", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc027.html", "_id": "592292c9356833000a195198", "catalog_description": "network: IPv6 latency", "creation_date": "2017-05-22 07:27:05.736814", "domains": "ipv6", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc027"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC037 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements system load and network latency are recorded/measured using ping and mpstat, respectively;\n", "ci_loop": "daily", "tags": "cpuload,ping,oktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc037.html", "_id": "592292ca356833000a195199", "catalog_description": "network: throughput and packet loss extended (cpu&ping load)", "creation_date": "2017-05-22 07:27:06.875236", "domains": "network,compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc037"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC038 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 10 times each. First 10 times with the least amount of ports, then 10 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements system load and network latency are recorded/measured using ping and mpstat, respectively;\n", "ci_loop": "daily", "tags": "cpuload,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc038.html", "_id": "592292cb356833000a19519a", "catalog_description": "network: throughput packet loss (cpu&ping load)", "creation_date": "2017-05-22 07:27:07.988262", "domains": "network,compute", "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc038"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC040 config file; Running Parser Yang-to-Tosca module as a tool, validating output against expected outcome.\n", "ci_loop": "daily", "tags": "parser", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc040.html", "_id": "592292cd356833000a19519b", "catalog_description": "Parser Yang Tosca", "creation_date": "2017-05-22 07:27:09.104621", "domains": null, "dependencies": null, "version": ">brahmaputra.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc040"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC042 config file; Measure network latency using testpmd and pktgen-dpdk.\n", "ci_loop": "daily", "tags": "pktgenDPDKLatency", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc042.html", "_id": "592292ce356833000a19519c", "catalog_description": "network: throughput latency (dpdk-pktgen)", "creation_date": "2017-05-22 07:27:10.207188", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc042"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC043 config file; Measure latency between NFVI nodes using ping.\n", "ci_loop": "daily", "tags": "ping", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc043.html", "_id": "592292cf356833000a19519d", "catalog_description": "network: node throughput latency(ping)", "creation_date": "2017-05-22 07:27:11.286317", "domains": "network", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc043"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC045 :Control node Openstack service down - neutron server.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc045.html", "_id": "592292d0356833000a19519e", "catalog_description": "HA: neutron-server service down", "creation_date": "2017-05-22 07:27:12.399327", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc045"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC046 :Control node Openstack service down - keystone.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc046.html", "_id": "592292d1356833000a19519f", "catalog_description": "HA: keystone service down", "creation_date": "2017-05-22 07:27:13.502066", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc046"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC047 :Control node Openstack service down - glance api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc047.html", "_id": "592292d2356833000a1951a0", "catalog_description": "HA: glance-api service down", "creation_date": "2017-05-22 07:27:14.610834", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc047"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC048 :Control node Openstack service down - cinder api.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc048.html", "_id": "592292d3356833000a1951a1", "catalog_description": "HA: cinder-api service down", "creation_date": "2017-05-22 07:27:15.751416", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc048"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC049 :Control node Openstack service down - swift proxy.\n", "ci_loop": "daily", "tags": "serviceHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc049.html", "_id": "592292d4356833000a1951a2", "catalog_description": "HA: swift proxy service down", "creation_date": "2017-05-22 07:27:16.859383", "domains": "ha", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc049"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC050 :OpenStack Controller Node Network High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc050.html", "_id": "592292d6356833000a1951a3", "catalog_description": "HA: network interface down", "creation_date": "2017-05-22 07:27:18.014215", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc050"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC051 :OpenStack Controller Node CPU Overload High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc051.html", "_id": "592292d7356833000a1951a4", "catalog_description": "HA: CPU overload", "creation_date": "2017-05-22 07:27:19.124525", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc051"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC052 :OpenStack Controller Node Disk I/O Block High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc052.html", "_id": "592292d8356833000a1951a5", "catalog_description": "HA: disk I/O block", "creation_date": "2017-05-22 07:27:20.288709", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc052"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC053 :Openstack Controller Load Balance Service High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc053.html", "_id": "592292de356833000a1951a6", "catalog_description": "HA: load balancer service down", "creation_date": "2017-05-22 07:27:26.504630", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc053"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC054 :OpenStack VIP Master Node abnormally shutdown High Availability; This test case is written by new scenario-based HA testing framework.\n", "ci_loop": "daily", "tags": "GeneralHA", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc054.html", "_id": "592292df356833000a1951a7", "catalog_description": "HA: virtual IP node shutdown", "creation_date": "2017-05-22 07:27:27.763354", "domains": null, "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc054"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC055 config file; Collect hardware specification from /proc/cpuinfo /proc/meminfo; compute capacity and scale. the results have, number of CPUs, number of physical cores in a single CPU; number of logical cores, total memory size; cache size per CPU, total cache size; HT (Hyper-Thread) support status, 1 for open, 0 for close.\n", "ci_loop": "daily", "tags": "computeCapacity", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc055.html", "_id": "592292e1356833000a1951a8", "catalog_description": "compute: cpu & memory_specification", "creation_date": "2017-05-22 07:27:29.032130", "domains": "compute", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc055"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC063 config file; Measure disk size, block size and disk utilization using fdisk and iostat.\n", "ci_loop": "daily", "tags": "storageCapacity", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc063.html", "_id": "592292e2356833000a1951a9", "catalog_description": "storage: disk size&utilization", "creation_date": "2017-05-22 07:27:30.302236", "domains": "storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc063"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC069 config file; Measure memory read and write bandwidth using ramspeed.\n", "ci_loop": "daily", "tags": "ramspeed", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc069.html", "_id": "592292e3356833000a1951aa", "catalog_description": "compute: memory bandwith(ramspeed)", "creation_date": "2017-05-22 07:27:31.542189", "domains": "compute", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc069"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC070 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements memory usage statistics and network latency are recorded/measured using free and ping, respectively;\n", "ci_loop": "daily", "tags": "memoryload,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc070.html", "_id": "592292e4356833000a1951ab", "catalog_description": "network: throughput packet loss (memory&ping load)", "creation_date": "2017-05-22 07:27:32.747354", "domains": "network,storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc070"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC071 config file; Measure cache hit/miss ratio and usage, network throughput and latency; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements cache hit/miss ration, cache usage statistics and network latency are recorded/measured using cachestat and ping, respectively;\n", "ci_loop": "daily", "tags": "cachestat,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc071.html", "_id": "592292e5356833000a1951ac", "catalog_description": "compute: cache hit&network throughput latency", "creation_date": "2017-05-22 07:27:33.957092", "domains": "network,storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc071"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC072 config file; Measure network throughput and packet loss using pktgen; Different amounts of flows are tested with, from 2 up to 1001000; All tests are run 2 times each. First 2 times with the least amount of ports, then 2 times with the next amount of ports, and so on until all packet sizes have been run with; During the measurements network usage statistics and network latency are recorded/measured using sar and ping, respectively;\n", "ci_loop": "daily", "tags": "netutilization,ping,pktgen", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc072.html", "_id": "592292e7356833000a1951ad", "catalog_description": "network: throughput(netutilization&pktgen load)", "creation_date": "2017-05-22 07:27:35.175762", "domains": "network,storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc072"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC073 config file; measure network latency and throughput using netperf; There are two sample scenarios: bulk test and request/response test; In bulk test, UDP_STREAM and TCP_STREAM can be used; send_msg_size and recv_msg_size are options of bulk test; In req/rsp test, TCP_RR TCP_CRR UDP_RR can be used; req_rsp_size is option of req/rsp test;\n", "ci_loop": "daily", "tags": "netperfnode", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc073.html", "_id": "592292e8356833000a1951ae", "catalog_description": "network: node throughput(netperf)", "creation_date": "2017-05-22 07:27:36.466462", "domains": "network", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc073"}, {"project_name": "yardstick", "run": null, "description": "Test case for TC074 StorPerf benchmark task config file; StorPerf is a tool to measure block and object storage performance in an NFVI.\n", "ci_loop": "daily", "tags": "storperf", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc074.html", "_id": "592292e9356833000a1951af", "catalog_description": "storage: storperf integration", "creation_date": "2017-05-22 07:27:37.665283", "domains": "storage", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc074"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC075 config file; Measure network capacity and scale. Measure number of connections, number of frames received;\n", "ci_loop": "daily", "tags": "networkCapacity", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc075.html", "_id": "592292ea356833000a1951b0", "catalog_description": "network: capacity connections number", "creation_date": "2017-05-22 07:27:38.857919", "domains": "network", "dependencies": null, "version": ">colorado.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc075"}, {"project_name": "yardstick", "run": null, "description": "Yardstick TC076 config file; Monitor network metrics provided by the kernel in a host and calculate IP datagram error rate, ICMP message error rate, TCP segment error rate and UDP datagram error rate.", "ci_loop": "daily", "tags": "ping,nstat", "url": "http://artifacts.opnfv.org/yardstick/docs/userguide/opnfv_yardstick_tc076.html", "_id": "592292ec356833000a1951b1", "catalog_description": "network: metrics (ping nstat)", "creation_date": "2017-05-22 07:27:40.163423", "domains": "network", "dependencies": null, "version": ">danube.1.0", "criteria": null, "tier": null, "trust": "silver", "blocking": null, "name": "opnfv_yardstick_tc076"}]}
+{"testcases": [{"project_name": "barometer", "run": "", "description": "barometercollectd testcase", "ci_loop": "", "tags": "", "url": "", "_id": "58a2e30e584d06000b0157d3", "catalog_description": null, "creation_date": "2017-02-14 10:59:26.396742", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "barometercollectd"}]}
+{"testcases": [{"project_name": "OpenRetriever", "run": null, "description": "The test cases about Container is integrated into NFV", "ci_loop": null, "tags": null, "url": "https://wiki.opnfv.org/display/OpenRetriever/Test+Strategy", "_id": "5923e51578a2ad000ae6a140", "catalog_description": null, "creation_date": "2017-05-23 07:30:29.840213", "domains": null, "dependencies": null, "version": null, "criteria": null, "tier": null, "trust": null, "blocking": null, "name": "OpenRetriever Test Cases"}, {"project_name": "OpenRetriever", "run": "", "description": "", "ci_loop": "", "tags": "kubernetes,container", "url": "https://wiki.opnfv.org/display/OpenRetriever/Test+Strategy", "_id": "5923fb0b78a2ad000ae6a143", "catalog_description": "", "creation_date": "2017-05-23 09:04:11.498178", "domains": "", "dependencies": "", "version": ">danube", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "e2e"}]}
+{"testcases": [{"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887af78a2ad000ae6a65f", "catalog_description": "", "creation_date": "2017-05-26 19:53:19.223720", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "connection_check"}, {"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887ce78a2ad000ae6a660", "catalog_description": "", "creation_date": "2017-05-26 19:53:50.130441", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "api_check"}, {"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887e578a2ad000ae6a661", "catalog_description": "", "creation_date": "2017-05-26 19:54:13.939149", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_ssh"}, {"project_name": "ovn4nfv", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "592887ef78a2ad000ae6a662", "catalog_description": "", "creation_date": "2017-05-26 19:54:23.764427", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_userdata"}]}
+{"testcases": [{"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928a9bb78a2ad000ae6a6c8", "catalog_description": "", "creation_date": "2017-05-26 22:18:35.709812", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "connection_check"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928aa4178a2ad000ae6a6ca", "catalog_description": "", "creation_date": "2017-05-26 22:20:49.183239", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "api_check"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928aa6578a2ad000ae6a6cb", "catalog_description": "", "creation_date": "2017-05-26 22:21:25.440080", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "snaps_health_check"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928aad478a2ad000ae6a6cc", "catalog_description": "", "creation_date": "2017-05-26 22:23:16.642815", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_ssh"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ab1878a2ad000ae6a6ce", "catalog_description": "", "creation_date": "2017-05-26 22:24:24.418194", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "vping_userdata"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ab7a78a2ad000ae6a6d1", "catalog_description": "", "creation_date": "2017-05-26 22:26:02.619234", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "tempest_smoke_serial"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928abc878a2ad000ae6a6d2", "catalog_description": "", "creation_date": "2017-05-26 22:27:20.130387", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "rally_sanity"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ac0878a2ad000ae6a6d3", "catalog_description": "", "creation_date": "2017-05-26 22:28:24.564141", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "refstack_defcore"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ac2c78a2ad000ae6a6d4", "catalog_description": "", "creation_date": "2017-05-26 22:29:00.953556", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "onos"}, {"project_name": "onosfw", "run": "", "description": "", "ci_loop": "", "tags": "", "url": "", "_id": "5928ac5d78a2ad000ae6a6d5", "catalog_description": "", "creation_date": "2017-05-26 22:29:49.322376", "domains": "", "dependencies": "", "version": "", "criteria": "", "tier": "", "trust": null, "blocking": "", "name": "snaps_smoke"}]}
+{"testcases": [{"project_name": "vina", "run": null, "description": "Verify that credentials to access OpenStack environment are valid", "ci_loop": "daily", "tags": "networking, vina, openstack, fuel", "url": null, "_id": "592be78d78a2ad000ae6aad8", "catalog_description": null, "creation_date": "2017-05-29 09:19:09.076114", "domains": "networking", "dependencies": {"installer": "fuel", "scenario": "vina-setup"}, "version": ">euphrates", "criteria": null, "tier": "smoke", "trust": null, "blocking": false, "name": "openstack_integrity"}]}
diff --git a/dovetail/utils/local_db/get_db_schema.py b/dovetail/utils/local_db/get_db_schema.py
new file mode 100644
index 00000000..1106355c
--- /dev/null
+++ b/dovetail/utils/local_db/get_db_schema.py
@@ -0,0 +1,61 @@
+##############################################################################
+# 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
+
+
+source_url = 'http://116.66.187.136:9999/api/v1'
+
+
+def get(url):
+ try:
+ ret = requests.get(url)
+ return ret.json()
+ except:
+ return None
+
+
+def pod():
+ source = '{}/pods'.format(source_url)
+ try:
+ pods = get(source)['pods']
+ with open("pods.json", "w") as f:
+ f.write(json.dumps(pods, indent=4))
+ except:
+ return
+
+
+def project():
+ source = '{}/projects'.format(source_url)
+
+ try:
+ projects = get(source)['projects']
+ with open("projects.json", "w") as f:
+ f.write(json.dumps(projects, indent=4))
+ except:
+ return
+
+ for p in projects:
+ source = '{}/projects/{}/cases'.format(source_url, p['name'])
+ print(p['name'])
+ print(source)
+ try:
+ cases = get(source)
+ with open("cases.json", "a+") as f:
+ f.write(json.dumps(cases))
+ f.write('\n')
+ f.close()
+ except:
+ print("useless data")
+
+
+if __name__ == '__main__':
+ pod()
+ project()
diff --git a/dovetail/utils/local_db/init_db.py b/dovetail/utils/local_db/init_db.py
index 246139c4..2aac6fc5 100644
--- a/dovetail/utils/local_db/init_db.py
+++ b/dovetail/utils/local_db/init_db.py
@@ -60,6 +60,7 @@ def cases():
post(target, c)
except:
print("useless data")
+ add_case("functest", "tempest_custom")
def add_pod(name, mode):
@@ -74,6 +75,15 @@ def add_pod(name, mode):
post(pod_url, data)
+def add_case(project, case):
+ data = {
+ "project_name": project,
+ "name": case,
+ }
+ case_url = '{}/projects/{}/cases'.format(target_url, project)
+ post(case_url, data)
+
+
if __name__ == '__main__':
pod()
project()
diff --git a/dovetail/utils/local_db/init_dovetail.py b/dovetail/utils/local_db/init_dovetail.py
new file mode 100644
index 00000000..6d066cbb
--- /dev/null
+++ b/dovetail/utils/local_db/init_dovetail.py
@@ -0,0 +1,59 @@
+##############################################################################
+# 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 datetime
+import json
+import yaml
+import sys
+
+base_url = sys.argv[1]
+headers = {'Content-Type': 'application/json'}
+
+
+def create_project():
+
+ name = 'dovetail'
+ s = '2015-10-14 06:56:09'
+ time = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
+
+ data = {
+ 'name': name,
+ 'creation_date': str(time),
+ 'description': ''
+ }
+
+ url = '{}/projects'.format(base_url)
+ requests.post(url, data=json.dumps(data), headers=headers)
+
+
+def dovetail():
+ with open('../../compliance/proposed_tests.yml') as f:
+ data = yaml.safe_load(f)['proposed_tests']['testcases_list']
+
+ url = '{}/projects/dovetail/cases'.format(base_url)
+ for case in data:
+ c = {
+ 'ci_loop': 'daily',
+ 'description': 'dovetail',
+ 'name': case,
+ 'project_name': 'dovetail',
+ 'trust': 'gold',
+ 'url': '',
+ 'version': 'master',
+ 'domains': 'master',
+ 'tags': 'dovetail'
+ }
+ requests.post(url, data=json.dumps(c), headers=headers)
+
+
+if __name__ == '__main__':
+ create_project()
+ dovetail()
diff --git a/dovetail/utils/local_db/launch_db.sh b/dovetail/utils/local_db/launch_db.sh
index 77646713..49a50827 100755
--- a/dovetail/utils/local_db/launch_db.sh
+++ b/dovetail/utils/local_db/launch_db.sh
@@ -8,20 +8,23 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-if [ "$#" -ne 1 ]; then
+if [ "$#" -ne 2 ]; then
echo "Error: missing parameter! try again like this:"
echo ""
- echo "./launch_db.sh 192.168.115.2"
+ echo "./launch_db.sh 192.168.115.2 http://116.66.187.136:9999"
echo ""
echo "parameters:"
- echo " db_host_ip: your localhost ip address "
+ echo " host_ip: your localhost ip address "
+ echo " base_url: your public url for website"
echo ""
exit 1
fi
export mongodb_port=${mongodb_port:-"27017"}
-export testapi_port=${testapi_port:-"8000"}
+export testapi_port=${testapi_port:-"8010"}
export db_host_ip=${db_host_ip:-"$1"}
+export base_url=${base_url:-"$2"}
+
set -e
@@ -30,8 +33,8 @@ echo "Create the mongodb."
echo "==================="
set +e
-# pull image kkltcjk/mongodb:reporting
-mongodb_img="kkltcjk/mongodb:reporting"
+# pull image mongo:3.2.1
+mongodb_img="mongo:3.2.1"
echo "Step1: pull the image $mongodb_img."
sudo docker pull $mongodb_img
set -e
@@ -47,7 +50,7 @@ fi
# run mongodb container
echo "Step3: run ${container_name} container."
-cmd="sudo docker run -itd -p ${mongodb_port}:27017 --name ${container_name} ${mongodb_img}"
+cmd="sudo docker run -itd -p ${mongodb_port}:27017 -v /home/testapi/mongo:/data/db --name ${container_name} ${mongodb_img}"
echo $cmd
${cmd}
@@ -59,8 +62,7 @@ echo "Create the testapi service."
echo "=========================="
set +e
-# pull image kkltcjk/testapi:reporting
-testapi_img="kkltcjk/testapi:reporting"
+testapi_img="opnfv/testapi:cvp.0.6.0"
echo "Step1: pull the image $testapi_img."
sudo docker pull $testapi_img
set -e
@@ -76,20 +78,46 @@ 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}"
+cmd="sudo docker run -itd -p 8010:8010 --name ${container_name} -v /home/testapi/logs:/home/testapi/logs -e mongodb_url=mongodb://${db_host_ip}:${mongodb_port}/ -e base_url=${base_url} ${testapi_img}"
echo $cmd
${cmd}
echo "Wait for testapi to work..."
sleep 10
+set +e
+nginx_img="opnfv/dovetail:nginx.cvp.0.6.0"
+echo "Step1: pull the image $nginx_img."
+sudo docker pull $nginx_img
+set -e
+
+container_name='nginx_cvp'
+
+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 nginx container
+echo "Step3: run ${container_name} container."
+cmd="sudo docker run -itd -p 8000:8000 -v /home/testapi/logs:/home/testapi/logs --name ${container_name} -e testapi_url=${db_host_ip}:8010 ${nginx_img}"
+echo $cmd
+${cmd}
+
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="python ./init_db.py ${db_host_ip} 8010"
+echo $cmd
+${cmd}
+
+echo "Init dovetail testcase"
+cmd="python ./init_dovetail.py ${base_url}/api/v1"
+echo $cmd
${cmd}
echo "Successfully load DB info."
diff --git a/dovetail/utils/local_db/pods.json b/dovetail/utils/local_db/pods.json
new file mode 100644
index 00000000..3cd1dadb
--- /dev/null
+++ b/dovetail/utils/local_db/pods.json
@@ -0,0 +1,382 @@
+[
+ {
+ "name": "lf-pod2",
+ "creation_date": "2015-01-01 08:00:00.476549",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "5617f98e514bc5355b51f6b5",
+ "details": ""
+ },
+ {
+ "name": "lf-pod1",
+ "creation_date": "2015-01-01 08:00:00.476549",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "5617fa5a514bc5355b51f6b6",
+ "details": ""
+ },
+ {
+ "name": "orange-pod2",
+ "creation_date": "2015-10-27 15:27:30.312012",
+ "role": "",
+ "mode": "metal",
+ "_id": "562f97e2514bc5174d053d38",
+ "details": "https://wiki.opnfv.org/opnfv-orange"
+ },
+ {
+ "name": "unknown-pod",
+ "creation_date": "2015-11-30 08:55:02.550465",
+ "role": "",
+ "mode": "undefined",
+ "_id": "565c0ee6514bc5087f2ddcf7",
+ "details": null
+ },
+ {
+ "name": "huawei-pod1",
+ "creation_date": "",
+ "role": "",
+ "mode": "metal",
+ "_id": "566fea58514bc5068a345d4b",
+ "details": ""
+ },
+ {
+ "name": "intel-pod5",
+ "creation_date": "2015-12-15 10:24:53.476549",
+ "role": "",
+ "mode": "metal",
+ "_id": "566fea75514bc5068a345d4c",
+ "details": null
+ },
+ {
+ "name": "intel-pod3",
+ "creation_date": "2015-12-21 17:38:31.435593",
+ "role": "",
+ "mode": "metal",
+ "_id": "56783917514bc5068a345d97",
+ "details": null
+ },
+ {
+ "name": "ericsson-pod1",
+ "creation_date": "2015-12-22 07:21:03.765581",
+ "role": "",
+ "mode": "metal",
+ "_id": "5678f9df514bc5068a345d98",
+ "details": null
+ },
+ {
+ "name": "ericsson-pod2",
+ "creation_date": "2015-12-22 07:21:18.173966",
+ "role": "",
+ "mode": "metal",
+ "_id": "5678f9ee514bc5068a345d99",
+ "details": null
+ },
+ {
+ "name": "dell-us-testing-bm-1",
+ "creation_date": "2016-01-08 12:41:54.097114",
+ "role": "",
+ "mode": "metal",
+ "_id": "568fae92514bc5068a60e7d2",
+ "details": null
+ },
+ {
+ "name": "dell-us-deploying-bm-3",
+ "creation_date": "2016-01-08 14:13:16.740415",
+ "role": "",
+ "mode": null,
+ "_id": "568fc3fc514bc5068a60e7d4",
+ "details": null
+ },
+ {
+ "name": "dell-us-deploying-bm-2",
+ "creation_date": "2016-01-08 14:15:54.037500",
+ "role": "",
+ "mode": null,
+ "_id": "568fc49a514bc5068a60e7d5",
+ "details": null
+ },
+ {
+ "name": "dell-us-deploying-bm3",
+ "creation_date": "2016-01-15 12:14:20.956198",
+ "role": "",
+ "mode": "metal",
+ "_id": "5698e29c514bc56e65a47bc8",
+ "details": null
+ },
+ {
+ "name": "intel-pod6",
+ "creation_date": "2016-01-22 13:32:18.767326",
+ "role": "",
+ "mode": "metal",
+ "_id": "56a22f62514bc541f885b2c0",
+ "details": null
+ },
+ {
+ "name": "huawei-virtual2",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56a9d7ac851d7e6a0f74930d",
+ "details": ""
+ },
+ {
+ "name": "huawei-virtual1",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56a9f411851d7e6a0f749313",
+ "details": ""
+ },
+ {
+ "name": "huawei-virtual3",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56e67ba6851d7e4b188676bc",
+ "details": ""
+ },
+ {
+ "name": "huawei-virtual4",
+ "creation_date": "",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56e67bb6851d7e4b188676bd",
+ "details": ""
+ },
+ {
+ "name": "intel-pod8",
+ "creation_date": "2016-03-14 08:52:47.576623",
+ "role": "",
+ "mode": "metal",
+ "_id": "56e67bdf851d7e4b188676be",
+ "details": null
+ },
+ {
+ "name": "intel-pod7",
+ "creation_date": "2016-03-14 08:53:00.757525",
+ "role": "",
+ "mode": "metal",
+ "_id": "56e67bec851d7e4b188676c0",
+ "details": null
+ },
+ {
+ "name": "huawei-pod2",
+ "creation_date": "",
+ "role": "",
+ "mode": "metal",
+ "_id": "56e67c35851d7e4b188676c1",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual1",
+ "creation_date": "2016-03-14 08:58:06.432105",
+ "role": "",
+ "mode": "virtual",
+ "_id": "56e67d1e851d7e4b188676c2",
+ "details": null
+ },
+ {
+ "name": "arm-pod1",
+ "creation_date": "2016-05-05 09:18:54.879497",
+ "role": "",
+ "mode": "metal",
+ "_id": "572b0ffe9377c51472b7878f",
+ "details": null
+ },
+ {
+ "name": "zte-pod1",
+ "creation_date": "2016-05-12 03:36:56.091397",
+ "role": "",
+ "mode": "metal",
+ "_id": "5733fa589377c548e8df3834",
+ "details": null
+ },
+ {
+ "name": "intel-virtual1",
+ "creation_date": "2016-08-23 17:22:30.901081",
+ "role": null,
+ "mode": "virtual",
+ "_id": "57bc86561d2c6e000ab19d93",
+ "details": null
+ },
+ {
+ "name": "intel-virtual2",
+ "creation_date": "2016-08-23 17:24:23.143681",
+ "role": null,
+ "mode": "virtual",
+ "_id": "57bc86c71d2c6e000ab19d94",
+ "details": null
+ },
+ {
+ "name": "zte-pod2",
+ "creation_date": "2016-09-06 09:49:20.228736",
+ "role": "",
+ "mode": "metal",
+ "_id": "57ce91201d2c6e000ab1c261",
+ "details": ""
+ },
+ {
+ "name": "zte-pod3",
+ "creation_date": "2016-09-06 09:49:26.019816",
+ "role": "",
+ "mode": "metal",
+ "_id": "57ce91261d2c6e000ab1c263",
+ "details": ""
+ },
+ {
+ "name": "arm-pod3",
+ "creation_date": "2016-09-12 09:47:50.791351",
+ "role": "",
+ "mode": "metal",
+ "_id": "57d679c61d2c6e000ab1d6bd",
+ "details": "ARM POD3"
+ },
+ {
+ "name": "cisco-pod1",
+ "creation_date": "2016-09-13 13:01:21.906958",
+ "role": "Community lab",
+ "mode": "metal",
+ "_id": "57d7f8a11d2c6e000ab1db88",
+ "details": "not yet declared in CI but needed to validate vpp scenarios for Colorado"
+ },
+ {
+ "name": "ool-virtual1",
+ "creation_date": "2016-09-19 12:43:50.313032",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57dfdd861d2c6e000ab1f37b",
+ "details": "Okinawa lab"
+ },
+ {
+ "name": "ericsson-pod3",
+ "creation_date": "2016-09-26 09:45:40.565795",
+ "role": "",
+ "mode": "metal",
+ "_id": "57e8ee441d2c6e000ab20fa9",
+ "details": ""
+ },
+ {
+ "name": "ericsson-pod4",
+ "creation_date": "2016-09-26 09:45:48.980198",
+ "role": "",
+ "mode": "metal",
+ "_id": "57e8ee4c1d2c6e000ab20faa",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual2",
+ "creation_date": "2016-09-26 09:46:05.508776",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee5d1d2c6e000ab20fac",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual3",
+ "creation_date": "2016-09-26 09:46:10.244443",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee621d2c6e000ab20fad",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual4",
+ "creation_date": "2016-09-26 09:46:14.734383",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee661d2c6e000ab20fae",
+ "details": ""
+ },
+ {
+ "name": "ericsson-virtual5",
+ "creation_date": "2016-09-26 09:46:19.477110",
+ "role": "",
+ "mode": "virtual",
+ "_id": "57e8ee6b1d2c6e000ab20faf",
+ "details": ""
+ },
+ {
+ "name": "intel-pod9",
+ "creation_date": "2016-11-23 14:07:35.963037",
+ "role": "",
+ "mode": "metal",
+ "_id": "5835a2a71d2c6e000ab2bb4b",
+ "details": "https://wiki.opnfv.org/display/pharos/Intel+Pod9"
+ },
+ {
+ "name": "huawei-pod3",
+ "creation_date": "2017-01-17 13:36:03.908341",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587e1dc38cf551000c780eda",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod4",
+ "creation_date": "2017-01-17 13:36:10.759860",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587e1dca8cf551000c780edb",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod5",
+ "creation_date": "2017-01-17 13:36:15.447849",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587e1dcf8cf551000c780edc",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod6",
+ "creation_date": "2017-01-18 10:53:10.586724",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587f49168cf551000c780f5e",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod7",
+ "creation_date": "2017-01-18 10:53:15.373953",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "587f491b8cf551000c780f5f",
+ "details": ""
+ },
+ {
+ "name": "huawei-pod12",
+ "creation_date": "2017-02-09 07:22:46.425836",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "589c18c68cf551000c7820e8",
+ "details": ""
+ },
+ {
+ "name": "intel-pod12",
+ "creation_date": "2017-05-17 14:11:18.852731",
+ "role": "production-ci",
+ "details": "performance",
+ "query": "<function query at 0x7f574c29c500>",
+ "mode": "metal",
+ "_id": "591c5a06ee2e3f000a50f0b4",
+ "miss_fields": [
+ "name"
+ ]
+ },
+ {
+ "name": "cisco-vina-pod10",
+ "creation_date": "2017-05-29 09:13:20.818497",
+ "role": "production-ci",
+ "mode": "metal",
+ "_id": "592be63078a2ad000ae6aad7",
+ "details": ""
+ },
+ {
+ "name": "zte-virtual1",
+ "creation_date": "2017-05-30 14:11:04.264967",
+ "role": "",
+ "mode": "baremetal",
+ "_id": "592d7d7878a2ad000ae6ac49",
+ "details": ""
+ }
+] \ No newline at end of file
diff --git a/dovetail/utils/local_db/projects.json b/dovetail/utils/local_db/projects.json
new file mode 100644
index 00000000..d034b808
--- /dev/null
+++ b/dovetail/utils/local_db/projects.json
@@ -0,0 +1,218 @@
+[
+ {
+ "_id": "561dfc89514bc5355b51f6c6",
+ "description": "Project functest aims to run suites of functional tests at the end of an OPNFV fresh install. These suites consist in functional tests on the main components of the solution (VIM, SDN controllers). It thus includes several upstream suites from upstream projects.",
+ "name": "functest",
+ "creation_date": "2015-10-14 06:56:09.317134"
+ },
+ {
+ "_id": "5641e12d514bc5174df3d77e",
+ "description": "OPNFV vsperf project",
+ "name": "vsperf",
+ "creation_date": "2015-11-10 12:21:01.464979"
+ },
+ {
+ "_id": "56582fae514bc5087f2ddce9",
+ "description": "Promise is resource reservation and management project to identify NFV related requirements and realize resource reservation for future usage by capacity management of resource pools regarding compute, network and storage. ",
+ "name": "promise",
+ "creation_date": "2015-11-27 10:25:50.539634"
+ },
+ {
+ "_id": "565c5939514bc5087f2ddcfa",
+ "description": "The project aims to integrate the OpenStack Neutron BGPVPN project and its supported backends into the OPNFV reference platform.",
+ "name": "sdnvpn",
+ "creation_date": "2015-11-30 14:12:09.101020"
+ },
+ {
+ "_id": "565c7181514bc5087f2ddcfb",
+ "description": "Service Function Chaining provides the ability to define an ordered list of a network services (e.g. firewalls, NAT, QoS).",
+ "name": "sfc",
+ "creation_date": "2015-11-30 15:55:45.932846"
+ },
+ {
+ "_id": "565d5fa2514bc5087f2ddd05",
+ "description": "High availability for OPNFV",
+ "name": "ha",
+ "creation_date": "2015-12-01 08:51:46.011622"
+ },
+ {
+ "_id": "565d606c514bc5087f2ddd06",
+ "description": "IPv6-enabled OPNFV",
+ "name": "ipvsix",
+ "creation_date": "2015-12-01 08:55:08.824385"
+ },
+ {
+ "_id": "565d60f7514bc5087f2ddd07",
+ "description": "OpenStack based VNF Forwarding Graph",
+ "name": "vnfgraph",
+ "creation_date": "2015-12-01 08:57:27.378992"
+ },
+ {
+ "_id": "565d6398514bc5087f2ddd08",
+ "description": "NFV hypervisors - kvm",
+ "name": "kvmfornfv",
+ "creation_date": "2015-12-01 09:08:40.006837"
+ },
+ {
+ "_id": "565d63f9514bc5087f2ddd09",
+ "description": "Open vSwitch for NFV",
+ "name": "ovsnfv",
+ "creation_date": "2015-12-01 09:10:17.341894"
+ },
+ {
+ "_id": "565d646f514bc5087f2ddd0a",
+ "description": "ARMband project",
+ "name": "armband",
+ "creation_date": "2015-12-01 09:12:15.681896"
+ },
+ {
+ "_id": "565d97be514bc5087f2ddd11",
+ "description": "Project Copper aims to help ensure that virtualized infrastructure deployments comply with goals of the VNF designer/user, e.g. re affinity and partitioning (e.g. per regulation, control/user plane separation, cost\u2026).",
+ "name": "copper",
+ "creation_date": "2015-12-01 12:51:10.776433"
+ },
+ {
+ "_id": "565d9f0f514bc5087f2ddd1d",
+ "description": "Doctor is fault management and maintenance project to develop and realize the consequent implementation for the OPNFV reference platform.",
+ "name": "doctor",
+ "creation_date": "2015-12-01 13:22:23.294997"
+ },
+ {
+ "_id": "565da033514bc5087f2ddd20",
+ "description": "OPNFV platform performance benchmark project",
+ "name": "qtip",
+ "creation_date": "2015-12-01 13:27:15.834860"
+ },
+ {
+ "_id": "565ec191514bc5087f3cfe26",
+ "description": "This project will enable OpenContrail to be selected as the virtual networking technology in OPNFV deployments. The following diagram illustrates how the components of an OPNFV stack that includes OpenContrail map onto the ETSI NFV architecture.",
+ "name": "ovno",
+ "creation_date": "2015-12-02 10:01:53.786607"
+ },
+ {
+ "_id": "566108c7514bc5087f3cfe41",
+ "description": "This project aims to find system bottlenecks by testing and verifying OPNFV infrastructure in a staging environment before committing it to a production environment. ",
+ "name": "bottlenecks",
+ "creation_date": "2015-12-04 03:30:15.934170"
+ },
+ {
+ "_id": "5669a8b4514bc5068a345d2f",
+ "description": "OPNFV policy test based on ODL (Groupe Based Policy)",
+ "name": "policy-test",
+ "creation_date": "2015-12-10 16:30:44.118352"
+ },
+ {
+ "_id": "57173ffe9377c5332042a5e1",
+ "description": "This project proposes a security management system called Moon. NFV uses cloud computing technologies to virtualize the resources and automate the control. The cloud infrastructure is able to provision a set of different cloud resources/services for VNFs (Virtualized Network Functions). Management of isolation and protection of, and interaction between, these VNFs become a big challenge. In order to avoid losing control over the VNFs in the cloud, Moon aims at designing and developing a security management system for OPNFV.",
+ "name": "moon",
+ "creation_date": "2016-04-20 08:38:22.335984"
+ },
+ {
+ "_id": "573395499377c56d4fc3f069",
+ "description": "OPNFV storage perfomance testing project",
+ "name": "storperf",
+ "creation_date": "2016-05-11 20:25:45.317073"
+ },
+ {
+ "_id": "575efa949377c5337aa248f1",
+ "description": "template distribution service",
+ "name": "domino",
+ "creation_date": "2016-06-13 18:25:24.157400"
+ },
+ {
+ "_id": "5762ad599377c5337a5ebc3b",
+ "description": "Project \u201cFastDataStacks\u201d creates and composes a set of scenarios which include the virtual forwarder supplied by the FD.IO project. The project also provides required enhancements to individual components such as SDN controllers or installers to allow for the scenario composition.",
+ "name": "fastdatastacks",
+ "creation_date": "2016-06-16 13:44:57.065160"
+ },
+ {
+ "_id": "577d46ef9377c54b278bbc91",
+ "description": "This project will address various goals for promoting availability and convergence of information and/or data models related to NFV service/VNF management, as being defined in standards (SDOs) and as developed in open source projects.",
+ "name": "models",
+ "creation_date": "2016-07-06 17:59:11.553045"
+ },
+ {
+ "_id": "57add1169377c54b278bd67b",
+ "description": " enhancement to OpenStack ( Nova / Cinder / Neutron / Glance / Ceilometer / KeyStone ), so that OpenStack as the VIM is able to support multisite NFV cloud.",
+ "name": "multisite",
+ "creation_date": "2016-08-12 13:37:26.911022"
+ },
+ {
+ "_id": "57b2cd019377c54b278bdb90",
+ "description": "OPNFV Parser project",
+ "name": "parser",
+ "creation_date": "2016-08-16 08:21:21.788381"
+ },
+ {
+ "_id": "582ef5ec1d2c6e000ab2b226",
+ "description": "The goal of the NetReady project is to investigate how the current OpenStack networking architecture needs to be evolved in order to ensure that NFV-related use cases can be flexibly and efficiently supported. ",
+ "name": "netready",
+ "creation_date": "2016-11-18 12:37:00.875824"
+ },
+ {
+ "_id": "582f29a61d2c6e000ab2b27d",
+ "description": "Security Scanning is a project to insure security compliance and vulnerability checks , as part of an automated CI-CD platform delivery process and as a standalone application. The project makes use of the existing SCAP format to perform deep scanning of NFVi nodes, to insure they are hardened and free of known CVE reported vulnerabilities. The SCAP content itself, is then consumed and run using an upstream opensource tool known as OpenSCAP",
+ "name": "securityscanning",
+ "creation_date": "2016-11-18 16:17:42.047102"
+ },
+ {
+ "_id": "583479f61d2c6e000ab2b9ee",
+ "description": "Opera seeks to develop requirements for OPEN-O MANO support in the OPNFV reference platform, with the plan to eventually integrate OPEN-O in OPNFV as a non-exclusive upstream MANO. ",
+ "name": "opera",
+ "creation_date": "2016-11-22 17:01:42.703558"
+ },
+ {
+ "_id": "58347a121d2c6e000ab2b9ef",
+ "description": "This project will enable the integration of the open source Open Baton platform, already available as ETSI NFV MANO reference implementation since October 2015, with existing OPNFV projects for specific scenarios and use cases.",
+ "name": "orchestra",
+ "creation_date": "2016-11-22 17:02:10.793237"
+ },
+ {
+ "_id": "587520262f248d000c44275b",
+ "description": "",
+ "name": "",
+ "creation_date": "2017-01-10 17:55:50.084797"
+ },
+ {
+ "_id": "587da16e8cf551000c780e93",
+ "description": "Model Oriented Virtualization Interface",
+ "name": "movie",
+ "creation_date": "2017-01-17 04:45:34.074478"
+ },
+ {
+ "_id": "58a155e3584d06000b01574e",
+ "description": "The goal of yardstick is to verify the infrastructure compliance when running VNF applications. NFV Use Cases described in ETSI GS NFV 001 show a large variety of applications, each defining specific requirements and complex configuration on the underlying infrastructure and test tools.The Yardstick concept decomposes typical VNF work-load performance metrics into a number of characteristics/performance vectors, which each of them can be represented by distinct test-cases.",
+ "name": "yardstick",
+ "creation_date": "2015-10-14 06:56:09"
+ },
+ {
+ "_id": "58a2e2c2584d06000b0157d2",
+ "description": "a few plugins that expand the capabilities of collectd which runs on compute nodes regarding collecting and reporting metrics",
+ "name": "barometer",
+ "creation_date": "2017-02-14 10:58:10.292536"
+ },
+ {
+ "_id": "5923e2ff78a2ad000ae6a13f",
+ "description": "Container Integrated For NFV",
+ "name": "OpenRetriever",
+ "creation_date": "2017-05-23 07:21:35.191176"
+ },
+ {
+ "_id": "592887a178a2ad000ae6a65e",
+ "description": "OVN for NFV",
+ "name": "ovn4nfv",
+ "creation_date": "2017-05-26 19:53:05.984276"
+ },
+ {
+ "_id": "5928a4af78a2ad000ae6a6be",
+ "description": "ONOS Framework",
+ "name": "onosfw",
+ "creation_date": "2017-05-26 21:57:03.600198"
+ },
+ {
+ "_id": "592be2ad78a2ad000ae6aad1",
+ "description": "VIM infrastructure networking assurance, visualizing and monitoring low level details of virtual networking, components and inter-connections: internal and across hosts",
+ "name": "vina",
+ "creation_date": "2017-05-29 08:58:21.248835"
+ }
+] \ No newline at end of file
diff --git a/dovetail/utils/local_db/restart_db.sh b/dovetail/utils/local_db/restart_db.sh
index 39b60e05..62863a25 100755
--- a/dovetail/utils/local_db/restart_db.sh
+++ b/dovetail/utils/local_db/restart_db.sh
@@ -26,4 +26,4 @@ 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
+ -e mongodb_url=mongodb://$db_host_ip:$mongodb_port/ opnfv/testapi:cvp.0.6.0
diff --git a/dovetail/utils/offline/config.yaml b/dovetail/utils/offline/config.yaml
index ced42296..397a9b65 100644
--- a/dovetail/utils/offline/config.yaml
+++ b/dovetail/utils/offline/config.yaml
@@ -2,21 +2,31 @@
docker_images:
dovetail:
domain: opnfv
- tag: latest
+ tag: cvp.0.6.0
store_name: image_dovetail.docker
functest:
domain: opnfv
- tag: latest
+ tag: cvp.0.5.0
store_name: image_functest.docker
yardstick:
domain: opnfv
- tag: latest
+ tag: danube.3.2
store_name: image_yardstick.docker
+ bottlenecks:
+ domain: opnfv
+ tag: cvp.0.4.0
+ store_name: image_bottlenecks.docker
testapi:
domain: opnfv
- tag: latest
+ tag: cvp.0.6.0
store_name: image_testapi.docker
mongo:
- tag: 3.5
+ tag: 3.2.1
store_name: image_mongo.docker
docker_save_path: /home/opnfv/dovetail/results/
+
+wgets:
+ sdnvpn:
+ source_url: http://artifacts.opnfv.org/sdnvpn/ubuntu-16.04-server-cloudimg-amd64-disk1.img
+ save_path: /home/opnfv/dovetail/results/
+ file_name: ubuntu-16.04-server-cloudimg-amd64-disk1.img
diff --git a/dovetail/utils/offline/download.py b/dovetail/utils/offline/download.py
index cda4ecca..3fb0cde2 100755
--- a/dovetail/utils/offline/download.py
+++ b/dovetail/utils/offline/download.py
@@ -41,6 +41,14 @@ class download(object):
cmd = 'sudo chmod og+rw %s' % image_save_path
dt_utils.exec_cmd(cmd)
+ if 'wgets' in keys:
+ for key, value in self.config['wgets'].items():
+ if value is not None:
+ wget_url = self.config['wgets'][key]['source_url']
+ wget_path = self.config['wgets'][key]['save_path']
+ cmd = 'sudo wget -nc %s -P %s' % (wget_url, wget_path)
+ dt_utils.exec_cmd(cmd)
+
if __name__ == '__main__':
download = download()
diff --git a/dovetail/utils/offline/load.py b/dovetail/utils/offline/load.py
index 9ddf6596..c56868a5 100755
--- a/dovetail/utils/offline/load.py
+++ b/dovetail/utils/offline/load.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
import os
+import sys
import yaml
import dovetail.utils.dovetail_utils as dt_utils
@@ -22,12 +23,31 @@ class load(object):
for key, value in self.config['docker_images'].items():
if value is not None:
name = self.config['docker_images'][key]['store_name']
- image_save_path = ''.join([save_path, name])
+ image_save_path = os.path.join(save_path, name)
if os.path.isfile(image_save_path):
cmd = 'sudo docker load -i %s' % (image_save_path)
dt_utils.exec_cmd(cmd)
else:
print "file %s not exists" % image_save_path
+ if 'wgets' in keys:
+ for key, value in self.config['wgets'].items():
+ if value is not None:
+ try:
+ dovetail_home = os.environ["DOVETAIL_HOME"]
+ except KeyError:
+ print "env variable DOVETAIL_HOME not found"
+ sys.exit(1)
+ name = self.config['wgets'][key]['file_name']
+ save_path = self.config['wgets'][key]['save_path']
+ file_path = os.path.join(save_path, name)
+ dest_path = os.path.join(dovetail_home, 'pre_config')
+ if not os.path.isdir(dest_path):
+ os.mkdir(dest_path)
+ if os.path.isfile(file_path):
+ cmd = 'sudo cp %s %s' % (file_path, dest_path)
+ dt_utils.exec_cmd(cmd)
+ else:
+ print "file %s not exists" % file_path
if __name__ == '__main__':