summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/com/pres/gates/gates.md82
-rw-r--r--docs/com/pres/gates/index.html52
-rw-r--r--functest/opnfv_tests/vnf/epc/juju_epc.py6
3 files changed, 138 insertions, 2 deletions
diff --git a/docs/com/pres/gates/gates.md b/docs/com/pres/gates/gates.md
new file mode 100644
index 000000000..aaf087743
--- /dev/null
+++ b/docs/com/pres/gates/gates.md
@@ -0,0 +1,82 @@
+# Functest Gates
+
+[Cédric Ollivier](mailto:cedric.ollivier@orange.com)
+
+2018/04/19
+
+
+
+### Why gating?
+
+- maintain an overall high quality code whatever the skills involved in our
+open community
+- detect the errors as soon as possible (before merge operations)
+- verify automatically most of Functest milestones
+
+
+### Today's Verify -1
+
+- one error is detected by yamllint, pylint or doc8
+- one unit test fails (py27 and py35)
+- our Framework is not fully covered
+- specific modules are not rated 10/10 by pylint
+- unix permissions are wrong
+- one doc cannot be generated without warning
+
+Please see [tox.ini](https://git.opnfv.org/functest/tree/tox.ini) for details
+
+
+### Gambia's Verify -1
+
+- enforce an overall 10/10 by pylint
+- check the full coverage of all third-party interfaces
+- integrate other linters like ShellScript (if they meet tox basics)
+
+Please see
+[Gambia Challenges](http://testresults.opnfv.org/functest/gambiachallenges/)
+for details
+
+
+### Great! But
+
+- the current gate checks all coding rules, our Framework and all interfaces
+to third-parties but **not our testcases**
+- it doesn't break **the circular dependencies** between Installers and
+Functest (Installers ask for a trustable healthcheck but we need results of
+"Installer runs" as prerequisites)
+
+Our testcases have still **to be verified by hand** what differs from
+OpenStack Workflow
+
+
+
+### functional gating
+
+- we need to run all Functest patches before merge against reference
+plateforms (OpenStack and Kubernetes)
+- a voting job must forbid the merge if one test fails (as the workflow
+process implemented by OpenStack)
+
+
+### reference platform
+
+- it could be baremetal or virtual if all testcases (including all VNFs) can
+be tested successfully
+- any compliant Installer could be selected as long as the appropriate target
+VIM version is proposed at the beginning of the release:
+ - devstack (OpenStack gates)
+ - kolla-ansible (Orange ONAP OpenLab)
+ - XCI
+ - APEX
+
+
+### Verify +2
+
+Only the functional check will take hours once the patchset is accepted
+by core reviewers (each patchset will be verified in ~10 minutes).
+
+**Always stable!**
+
+
+
+## Thank you!
diff --git a/docs/com/pres/gates/index.html b/docs/com/pres/gates/index.html
new file mode 100644
index 000000000..b64e371f7
--- /dev/null
+++ b/docs/com/pres/gates/index.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+<title>Functest Gates</title>
+<meta name="author" content="Cédric Ollivier">
+<meta name="viewport"
+ content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+<link rel="stylesheet" href="../reveal.js/css/reveal.css">
+<link rel="stylesheet" href="../reveal.js/css/theme/white.css">
+<link rel="stylesheet" href="../reveal.js/lib/css/zenburn.css">
+<script>
+var link = document.createElement( 'link' );
+link.rel = 'stylesheet';
+link.type = 'text/css';
+link.href = window.location.search.match( /print-pdf/gi ) ? '../reveal.js/css/print/pdf.css' : '../reveal.js/css/print/paper.css';
+document.getElementsByTagName( 'head' )[0].appendChild( link );
+</script>
+</head>
+<body>
+ <div class="reveal">
+ <div class="slides">
+ <section data-markdown="gates.md" data-separator="^\n\n\n"
+ data-separator-vertical="^\n\n" data-separator-notes="^Note:"></section>
+ </div>
+ </div>
+ <script src="../reveal.js/lib/js/head.min.js"></script>
+ <script src="../reveal.js/js/reveal.js"></script>
+ <script>
+ Reveal.initialize({
+ dependencies : [ {
+ src : '../reveal.js/plugin/markdown/marked.js',
+ condition : function() {
+ return !!document.querySelector('[data-markdown]');
+ }
+ }, {
+ src : '../reveal.js/plugin/markdown/markdown.js',
+ condition : function() {
+ return !!document.querySelector('[data-markdown]');
+ }
+ }, {
+ src: '../reveal.js/plugin/highlight/highlight.js',
+ async: true,
+ callback: function() {
+ hljs.initHighlightingOnLoad();
+ }
+ }, {
+ src: '../reveal.js/plugin/notes/notes.js',
+ async: true
+ } ]
+ });
+ </script>
+</body>
+</html>
diff --git a/functest/opnfv_tests/vnf/epc/juju_epc.py b/functest/opnfv_tests/vnf/epc/juju_epc.py
index a60d4f51e..1ba883d40 100644
--- a/functest/opnfv_tests/vnf/epc/juju_epc.py
+++ b/functest/opnfv_tests/vnf/epc/juju_epc.py
@@ -82,6 +82,8 @@ class JujuEpc(vnf.VnfOnBoarding):
__logger = logging.getLogger(__name__)
+ juju_wait_timeout = '3600'
+
def __init__(self, **kwargs):
if "case_name" not in kwargs:
kwargs["case_name"] = "juju_epc"
@@ -336,7 +338,7 @@ class JujuEpc(vnf.VnfOnBoarding):
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
self.__logger.info("%s\n%s", " ".join(cmd), output)
self.__logger.info("Waiting for instances .....")
- cmd = ['juju-wait']
+ cmd = ['timeout', '-t', JujuEpc.juju_wait_timeout, 'juju-wait']
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
self.__logger.info("%s\n%s", " ".join(cmd), output)
self.__logger.info("Deployed Abot-epc on Openstack")
@@ -382,7 +384,7 @@ class JujuEpc(vnf.VnfOnBoarding):
'tagnames={}'.format(self.details['test_vnf']['tag_name'])]
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
self.__logger.info("%s\n%s", " ".join(cmd), output)
- cmd = ['juju-wait']
+ cmd = ['timeout', '-t', JujuEpc.juju_wait_timeout, 'juju-wait']
output = subprocess.check_output(cmd, stderr=subprocess.STDOUT)
self.__logger.info("%s\n%s", " ".join(cmd), output)
duration = time.time() - start_time