summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jjb/compass4nfv/compass-ci-jobs.yml1
-rw-r--r--jjb/compass4nfv/compass-deploy.sh5
-rw-r--r--jjb/compass4nfv/compass-project-jobs.yml1
-rw-r--r--jjb/compass4nfv/compass-verify-jobs.yml1
-rwxr-xr-xjjb/daisy4nfv/daisy4nfv-virtual-deploy.sh21
-rwxr-xr-xjjb/fuel/fuel-download-artifact.sh4
-rw-r--r--jjb/opnfv/installer-params.yml10
-rw-r--r--jjb/vswitchperf/vswitchperf.yml22
-rw-r--r--modules/README.rst2
-rw-r--r--modules/opnfv/installer_adapters/InstallerHandler.py8
-rw-r--r--modules/opnfv/installer_adapters/fuel/FuelAdapter.py4
-rw-r--r--modules/opnfv/installer_adapters/fuel/example.py10
-rw-r--r--modules/opnfv/utils/Connection.py30
-rw-r--r--modules/opnfv/utils/Credentials.py101
-rw-r--r--modules/opnfv/utils/OPNFVExceptions.py126
-rw-r--r--modules/opnfv/utils/SSHUtils.py4
-rw-r--r--modules/opnfv/utils/constants.py15
-rwxr-xr-xmodules/run_unit_tests.sh36
-rw-r--r--modules/setup.py6
-rw-r--r--modules/tests/__init__.py0
-rw-r--r--modules/tests/unit/__init__.py0
-rw-r--r--modules/tests/unit/utils/__init__.py0
-rw-r--r--modules/tests/unit/utils/test_OPNFVExceptions.py74
23 files changed, 450 insertions, 31 deletions
diff --git a/jjb/compass4nfv/compass-ci-jobs.yml b/jjb/compass4nfv/compass-ci-jobs.yml
index eb9113114..b70bfc67b 100644
--- a/jjb/compass4nfv/compass-ci-jobs.yml
+++ b/jjb/compass4nfv/compass-ci-jobs.yml
@@ -248,6 +248,7 @@
name: COMPASS_OPENSTACK_VERSION
choices:
- 'mitaka'
+ - 'newton'
- 'liberty'
- choice:
name: COMPASS_OS_VERSION_OPTION
diff --git a/jjb/compass4nfv/compass-deploy.sh b/jjb/compass4nfv/compass-deploy.sh
index 65e44b670..256717953 100644
--- a/jjb/compass4nfv/compass-deploy.sh
+++ b/jjb/compass4nfv/compass-deploy.sh
@@ -33,6 +33,11 @@ if [[ "${COMPASS_OS_VERSION_OPTION}" = "xenial" ]] && [[ "${OPENSTACK_VERSION}"
export OPENSTACK_VERSION=${OPENSTACK_VERSION}_${COMPASS_OS_VERSION_OPTION}
export OS_VERSION=${COMPASS_OS_VERSION_OPTION}
fi
+if [[ "${OPENSTACK_VERSION}" = "newton" ]]; then
+ export OS_VERSION="xenial"
+ export OPENSTACK_VERSION=${OPENSTACK_VERSION}_${OS_VERSION}
+fi
+
if [[ "${DEPLOY_SCENARIO}" =~ "-ocl" ]]; then
export NETWORK_CONF_FILE=network_ocl.yml
diff --git a/jjb/compass4nfv/compass-project-jobs.yml b/jjb/compass4nfv/compass-project-jobs.yml
index 3a52e91c9..50ff072fb 100644
--- a/jjb/compass4nfv/compass-project-jobs.yml
+++ b/jjb/compass4nfv/compass-project-jobs.yml
@@ -125,6 +125,7 @@
name: COMPASS_OPENSTACK_VERSION
choices:
- 'mitaka'
+ - 'newton'
- 'liberty'
- choice:
name: COMPASS_OS_VERSION
diff --git a/jjb/compass4nfv/compass-verify-jobs.yml b/jjb/compass4nfv/compass-verify-jobs.yml
index 82e3dfdf2..87c19a9c5 100644
--- a/jjb/compass4nfv/compass-verify-jobs.yml
+++ b/jjb/compass4nfv/compass-verify-jobs.yml
@@ -243,6 +243,7 @@
name: COMPASS_OPENSTACK_VERSION
choices:
- 'mitaka'
+ - 'newton'
- 'liberty'
- choice:
name: COMPASS_OS_VERSION
diff --git a/jjb/daisy4nfv/daisy4nfv-virtual-deploy.sh b/jjb/daisy4nfv/daisy4nfv-virtual-deploy.sh
index 8936be6c4..9de494fc2 100755
--- a/jjb/daisy4nfv/daisy4nfv-virtual-deploy.sh
+++ b/jjb/daisy4nfv/daisy4nfv-virtual-deploy.sh
@@ -4,3 +4,24 @@ echo "--------------------------------------------------------"
echo "This is diasy4nfv virtual deploy job!"
echo "--------------------------------------------------------"
+cd $WORKSPACE
+
+if [[ "$NODE_NAME" =~ "-virtual" ]]; then
+ export NETWORK_CONF=./deploy/config/vm_environment/$NODE_NAME/network.yml
+ export DHA_CONF=./deploy/config/vm_environment/$NODE_NAME/deploy.yml
+else
+ exit 1
+fi
+
+./ci/deploy/deploy.sh ${DHA_CONF} ${NETWORK_CONF}
+
+if [ $? -ne 0 ]; then
+ echo "depolyment failed!"
+ deploy_ret=1
+fi
+
+echo
+echo "--------------------------------------------------------"
+echo "Done!"
+
+exit $deploy_ret
diff --git a/jjb/fuel/fuel-download-artifact.sh b/jjb/fuel/fuel-download-artifact.sh
index 3f691d821..fd824ca44 100755
--- a/jjb/fuel/fuel-download-artifact.sh
+++ b/jjb/fuel/fuel-download-artifact.sh
@@ -16,11 +16,11 @@ set -o pipefail
if [[ "$JOB_NAME" =~ "merge" ]]; then
echo "Downloading http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties"
# get the properties file for the Fuel ISO built for a merged change
- curl -s -o $WORKSPACE/latest.properties http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties
+ curl -L -s -o $WORKSPACE/latest.properties http://$GS_URL/opnfv-gerrit-$GERRIT_CHANGE_NUMBER.properties
else
# get the latest.properties file in order to get info regarding latest artifact
echo "Downloading http://$GS_URL/latest.properties"
- curl -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
+ curl -L -s -o $WORKSPACE/latest.properties http://$GS_URL/latest.properties
fi
# check if we got the file
diff --git a/jjb/opnfv/installer-params.yml b/jjb/opnfv/installer-params.yml
index ec0b86170..55f4769b7 100644
--- a/jjb/opnfv/installer-params.yml
+++ b/jjb/opnfv/installer-params.yml
@@ -59,7 +59,7 @@
parameters:
- string:
name: INSTALLER_IP
- default: '192.168.Y.Y'
+ default: '192.168.122.5'
description: 'IP of the installer'
- string:
name: INSTALLER_TYPE
@@ -67,11 +67,11 @@
description: 'Installer used for deploying OPNFV on this POD'
- string:
name: OS_RELEASE
- default: 'mitaka'
- description: 'OpenStack release (liberty|mitaka)'
+ default: 'newton'
+ description: 'OpenStack release (mitaka|newton)'
- string:
name: EXTERNAL_NETWORK
- default: ext-net4
+ default: ext-net
description: "External network used for Floating ips."
- string:
name: LAB_CONFIG
@@ -84,7 +84,7 @@
- string:
name: UBUNTU_DISTRO
default: 'xenial'
- description: "Ubuntu distribution to use for Openstack (trusty|xenial)"
+ description: "Ubuntu distribution to use for Openstack (xenial)"
- string:
name: CPU_ARCHITECTURE
default: 'amd64'
diff --git a/jjb/vswitchperf/vswitchperf.yml b/jjb/vswitchperf/vswitchperf.yml
index 3f7f6bf2d..5f952de00 100644
--- a/jjb/vswitchperf/vswitchperf.yml
+++ b/jjb/vswitchperf/vswitchperf.yml
@@ -63,11 +63,12 @@
concurrent: true
properties:
- - throttle:
- enabled: true
- max-total: 3
- max-per-node: 2
- option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'vswitchperf-verify-.*'
+ - 'vswitchperf-merge-.*'
+ block-level: 'NODE'
parameters:
- project-parameter:
@@ -125,11 +126,12 @@
concurrent: true
properties:
- - throttle:
- enabled: true
- max-total: 3
- max-per-node: 2
- option: 'project'
+ - build-blocker:
+ use-build-blocker: true
+ blocking-jobs:
+ - 'vswitchperf-verify-.*'
+ - 'vswitchperf-merge-.*'
+ block-level: 'NODE'
parameters:
- project-parameter:
diff --git a/modules/README.rst b/modules/README.rst
index de9ff559f..caec46b1d 100644
--- a/modules/README.rst
+++ b/modules/README.rst
@@ -5,6 +5,8 @@ as follows:
from opnfv.utils import SSHUtils
from opnfv.utils import OPNFVLogger
+ from opnfv.utils import OPNFVException
+ from opnfv.utils import constants
For further information about how to use this modules directory, contact:
fatih.degirmenci@ericsson.com
diff --git a/modules/opnfv/installer_adapters/InstallerHandler.py b/modules/opnfv/installer_adapters/InstallerHandler.py
index b81b806ca..e353ef3f4 100644
--- a/modules/opnfv/installer_adapters/InstallerHandler.py
+++ b/modules/opnfv/installer_adapters/InstallerHandler.py
@@ -7,10 +7,10 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-from FuelAdapter import FuelAdapter
-from ApexAdapter import ApexAdapter
-from CompassAdapter import CompassAdapter
-from JoidAdapter import JoidAdapter
+from opnfv.installer_adapters.fuel.FuelAdapter import FuelAdapter
+from opnfv.installer_adapters.apex.ApexAdapter import ApexAdapter
+from opnfv.installer_adapters.compass.CompassAdapter import CompassAdapter
+from opnfv.installer_adapters.joid.JoidAdapter import JoidAdapter
INSTALLERS = ["fuel", "apex", "compass", "joid"]
diff --git a/modules/opnfv/installer_adapters/fuel/FuelAdapter.py b/modules/opnfv/installer_adapters/fuel/FuelAdapter.py
index 95b2ab673..6f079404c 100644
--- a/modules/opnfv/installer_adapters/fuel/FuelAdapter.py
+++ b/modules/opnfv/installer_adapters/fuel/FuelAdapter.py
@@ -8,8 +8,8 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-import opnfv.modules.utils.SSHUtils as ssh_utils
-import opnfv.modules.utils.OPNFVLogger as logger
+import opnfv.utils.SSHUtils as ssh_utils
+import opnfv.utils.OPNFVLogger as logger
class FuelAdapter:
diff --git a/modules/opnfv/installer_adapters/fuel/example.py b/modules/opnfv/installer_adapters/fuel/example.py
index 804d79c3d..7fea4dfd7 100644
--- a/modules/opnfv/installer_adapters/fuel/example.py
+++ b/modules/opnfv/installer_adapters/fuel/example.py
@@ -1,12 +1,12 @@
# This is an example of usage of this Tool
# Author: Jose Lausuch (jose.lausuch@ericsson.com)
-from InstallerHandler import InstallerHandler
+import opnfv.installer_adapters.InstallerHandler as ins_handler
-fuel_handler = InstallerHandler(installer='fuel',
- installer_ip='10.20.0.2',
- installer_user='root',
- installer_pwd='r00tme')
+fuel_handler = ins_handler.InstallerHandler(installer='fuel',
+ installer_ip='10.20.0.2',
+ installer_user='root',
+ installer_pwd='r00tme')
print("Nodes in cluster 1:\n%s\n" %
fuel_handler.get_nodes(options={'cluster': '1'}))
print("Nodes in cluster 2:\n%s\n" %
diff --git a/modules/opnfv/utils/Connection.py b/modules/opnfv/utils/Connection.py
new file mode 100644
index 000000000..a3be51409
--- /dev/null
+++ b/modules/opnfv/utils/Connection.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange 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 os
+import time
+
+
+class Connection(object):
+
+ def __init__(self):
+ pass
+
+ def verify_connectivity(self, target):
+ for x in range(0, 10):
+ ping_cmd = ("ping -c 1 -W 1 %s >/dev/null" % target)
+ response = os.system(ping_cmd)
+ if response == 0:
+ return os.EX_OK
+ time.sleep(1)
+ return os.EX_UNAVAILABLE
+
+ def check_internet_access(self, url="www.google.com"):
+ return self.verify_connectivity(url)
diff --git a/modules/opnfv/utils/Credentials.py b/modules/opnfv/utils/Credentials.py
new file mode 100644
index 000000000..1882692b3
--- /dev/null
+++ b/modules/opnfv/utils/Credentials.py
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Usage example:
+# from opnfv.utils.Credentials import Credentials as credentials
+# credentials("fuel", "10.20.0.2", "root", "r00tme").fetch('./openrc')
+#
+
+import os
+
+import opnfv.installer_adapters.InstallerHandler as ins_handler
+import opnfv.utils.Connection as con
+import opnfv.utils.OPNFVLogger as logger
+
+
+class Credentials(object):
+
+ def __init__(self, installer, ip, user, password=None):
+ self.installer = installer
+ self.ip = ip
+ self.logger = logger.Logger("Credentials", level="DEBUG").getLogger()
+ self.connection = con.Connection()
+
+ if self.__check_installer_name(self.installer) != os.EX_OK:
+ self.logger.error("Installer %s not supported!" % self.installer)
+ return os.EX_CONFIG
+ else:
+ self.logger.debug("Installer %s supported." % self.installer)
+
+ if self.connection.verify_connectivity(self.ip) != os.EX_OK:
+ self.logger.error("Installer %s not reachable!" % self.ip)
+ return os.EX_UNAVAILABLE
+ else:
+ self.logger.debug("IP %s is reachable!" % self.ip)
+
+ self.logger.debug(
+ "Trying to stablish ssh connection to %s ..." % self.ip)
+ self.handler = ins_handler.InstallerHandler(installer,
+ ip,
+ user,
+ password)
+
+ def __check_installer_name(self, installer):
+ if installer not in ("apex", "compass", "fuel", "joid"):
+ return os.EX_CONFIG
+ else:
+ return os.EX_OK
+
+ def __check_path(self, path):
+ try:
+ with open(path, 'a'):
+ os.utime(path, None)
+ return os.EX_OK
+ except IOError as e:
+ self.logger.error(e)
+ return os.EX_IOERR
+
+ def __fetch_creds_apex(self, target_path):
+ # TODO
+ pass
+
+ def __fetch_creds_compass(self, target_path):
+ # TODO
+ pass
+
+ def __fetch_creds_fuel(self, target_path):
+ creds_file = '/root/openrc'
+ try:
+ self.handler.get_file_from_controller(creds_file, target_path)
+ except Exception, e:
+ self.logger.error(
+ "Cannot get %s from controller. %e" % (creds_file, e))
+ pass
+
+ def __fetch_creds_joid(self, target_path):
+ # TODO
+ pass
+
+ def fetch(self, target_path):
+ if self.__check_path(target_path) != os.EX_OK:
+ self.logger.error(
+ "Target path %s does not exist!" % target_path)
+ return os.EX_IOERR
+ else:
+ self.logger.debug("Target path correct.")
+
+ self.logger.info("Fetching credentials from the deployment...")
+ if self.installer == "apex":
+ self.__fetch_creds_apex(target_path)
+ elif self.installer == "compass":
+ self.__fetch_creds_compass(target_path)
+ elif self.installer == "fuel":
+ self.__fetch_creds_fuel(target_path)
+ elif self.installer == "joid":
+ self.__fetch_creds_joid(target_path)
diff --git a/modules/opnfv/utils/OPNFVExceptions.py b/modules/opnfv/utils/OPNFVExceptions.py
new file mode 100644
index 000000000..03b3ea981
--- /dev/null
+++ b/modules/opnfv/utils/OPNFVExceptions.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange 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
+#
+# This class defines Python OPNFV exceptions
+#
+
+
+class OPNFVException(Exception):
+ def __call__(self, *args):
+ return self.__class__(*(self.args + args))
+
+
+# ************************************
+# Generic
+# ************************************
+class OPNFVSUTNotReachable(OPNFVException):
+ """Target System Under Test is not reachable"""
+ pass
+
+
+class OPNFVCiExecutionError(OPNFVException):
+ """Error occurs during CI exection"""
+ pass
+
+
+class TestDashboardError(OPNFVException):
+ """Impossible to report results to dashboard"""
+ pass
+
+
+class TestReportingError(OPNFVException):
+ """Impossible to report results to reporting"""
+ pass
+
+
+# ************************************
+# Exceptions related to test DB
+# ************************************
+class TestDbNotReachable(OPNFVException):
+ """Test database is not reachable"""
+ pass
+
+
+class UnknownScenario(OPNFVException):
+ """Test scenario is unknown"""
+ pass
+
+
+class UnknownPod(OPNFVException):
+ """Test POD is unknown"""
+ pass
+
+
+class UnknownProject(OPNFVException):
+ """Project is unknown"""
+ pass
+
+
+class UnknownTestCase(OPNFVException):
+ """Test case is unknown"""
+ pass
+
+
+class UnknownVersion(OPNFVException):
+ """Version is unknown"""
+ pass
+
+
+class UnknownInstaller(OPNFVException):
+ """Installer is not supported"""
+ pass
+
+
+# *******************
+# Test project errors
+# *******************
+class FunctestExecutionError(OPNFVException):
+ """Internal Functest error"""
+ pass
+
+
+class YardstickExecutionError(OPNFVException):
+ """Internal Yardstick error"""
+ pass
+
+
+# **********************************
+# Errors related to Feature projects
+# **********************************
+class TestCaseNotRunnable(OPNFVException):
+ """test case incompatible with SUT, scenario, installer"""
+ pass
+
+
+class FeatureTestIntegrationError(OPNFVException):
+ """Impossible to integrate Feature test"""
+ pass
+
+
+class FeatureTestExecutionError(OPNFVException):
+ """Error during Feature test execution"""
+ pass
+
+
+# *********************************
+# Errors related to VNF on boarding
+# *********************************
+class VNFTestNotRunnable(OPNFVException):
+ """VNF test is not compatible with SUT, scenario, installer"""
+ pass
+
+
+class VNFIntegrationError(OPNFVException):
+ """Impossible to integrate the VNF test"""
+ pass
+
+
+class VNFExecutionError(OPNFVException):
+ """Error during VNF test execution"""
+ pass
diff --git a/modules/opnfv/utils/SSHUtils.py b/modules/opnfv/utils/SSHUtils.py
index 2f48addbf..6c794c274 100644
--- a/modules/opnfv/utils/SSHUtils.py
+++ b/modules/opnfv/utils/SSHUtils.py
@@ -10,7 +10,7 @@
import paramiko
-import opnfv.modules.utils.OPNFVLogger as OPNFVLogger
+import opnfv.utils.OPNFVLogger as OPNFVLogger
import os
logger = OPNFVLogger.Logger('SSHUtils').getLogger()
@@ -68,7 +68,7 @@ class JumpHostHopClient(paramiko.SSHClient):
'''
def __init__(self, *args, **kwargs):
- self.logger = rl.Logger("JumpHostHopClient").getLogger()
+ self.logger = OPNFVLogger.Logger("JumpHostHopClient").getLogger()
self.jumphost_ssh = None
self.jumphost_transport = None
self.jumphost_channel = None
diff --git a/modules/opnfv/utils/constants.py b/modules/opnfv/utils/constants.py
new file mode 100644
index 000000000..29f0d02c5
--- /dev/null
+++ b/modules/opnfv/utils/constants.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange 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
+
+INSTALLERS = ['apex', 'fuel', 'compass', 'joid']
+VERSIONS = ['arno', 'brahmaputra', 'colorado', 'danube']
+
+EXIT_OK = 0
+EXIT_RUN_ERROR = -1
+EXIT_PUSH_TO_TEST_DB_ERROR = -2
diff --git a/modules/run_unit_tests.sh b/modules/run_unit_tests.sh
new file mode 100755
index 000000000..df511ce0c
--- /dev/null
+++ b/modules/run_unit_tests.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -o errexit
+set -o pipefail
+
+# Either Workspace is set (CI)
+if [ -z $WORKSPACE ]
+then
+ WORKSPACE="."
+fi
+
+
+# ***************
+# Run unit tests
+# ***************
+echo "Running unit tests..."
+
+# start vitual env
+virtualenv $WORKSPACE/modules_venv
+source $WORKSPACE/modules_venv/bin/activate
+
+# install python packages
+easy_install -U setuptools
+easy_install -U pip
+pip install $WORKSPACE
+
+
+# unit tests
+nosetests --with-xunit \
+ --cover-package=opnfv \
+ --with-coverage \
+ --cover-xml \
+ --cover-html \
+ tests/unit
+rc=$?
+
+deactivate
diff --git a/modules/setup.py b/modules/setup.py
index 26f8a6eaa..8ac5ceac3 100644
--- a/modules/setup.py
+++ b/modules/setup.py
@@ -17,5 +17,9 @@ setup(
package_data={
},
url="https://www.opnfv.org",
- install_requires=["paramiko>=2.0.1"]
+ install_requires=["paramiko>=2.0.1",
+ "mock==1.3.0",
+ "nose==1.3.7",
+ "coverage==4.1",
+ "requests==2.9.1"]
)
diff --git a/modules/tests/__init__.py b/modules/tests/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/tests/__init__.py
diff --git a/modules/tests/unit/__init__.py b/modules/tests/unit/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/tests/unit/__init__.py
diff --git a/modules/tests/unit/utils/__init__.py b/modules/tests/unit/utils/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/modules/tests/unit/utils/__init__.py
diff --git a/modules/tests/unit/utils/test_OPNFVExceptions.py b/modules/tests/unit/utils/test_OPNFVExceptions.py
new file mode 100644
index 000000000..fca927b58
--- /dev/null
+++ b/modules/tests/unit/utils/test_OPNFVExceptions.py
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Orange 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.0import requests
+import unittest
+import requests
+
+from opnfv.utils import OPNFVExceptions
+
+
+def base_function():
+ raise OPNFVExceptions.TestDbNotReachable('Test database is not reachable')
+
+
+def base_function_wrong():
+ raise OPNFVExceptions.NotSelfDefinedException
+
+
+def db_connectivity():
+ url = 'http://testresults.opnfv2.org/test/api/v1/projects/functest/cases'
+ r = requests.get(url)
+ if r.status_code is not 200:
+ raise OPNFVExceptions.TestDbNotReachable('Database not found')
+
+
+def project_unknown():
+ url = 'http://testresults.opnfv.org/test/api/v1/projects/functest2/cases'
+ r = requests.get(url)
+ if len(r.json()['testcases']) is 0:
+ raise OPNFVExceptions.UnknownProject
+
+
+class TestBasicRaise(unittest.TestCase):
+ def test(self):
+ with self.assertRaises(Exception) as context:
+ base_function()
+ self.assertTrue('Test database is not reachable' in context.exception)
+
+
+class TestWrongRaise(unittest.TestCase):
+ def test(self):
+ try:
+ base_function_wrong()
+ except OPNFVExceptions.OPNFVException:
+ assert(False)
+ except AttributeError:
+ assert(True)
+
+
+class TestCaseDBNotReachable(unittest.TestCase):
+ def test(self):
+ with self.assertRaises(Exception) as context:
+ db_connectivity()
+ self.assertTrue('Database not found' in context.exception)
+
+
+class TestUnkownProject(unittest.TestCase):
+ def test(self):
+ try:
+ project_unknown()
+ except OPNFVExceptions.TestDashboardError:
+ # should not be there
+ assert(False)
+ except OPNFVExceptions.UnknownProject:
+ assert(True)
+ except Exception:
+ assert(False)
+
+if __name__ == '__main__':
+ unittest.main()