aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/cnf/testcases.yaml18
-rw-r--r--functest_kubernetes/cnf_conformance/conformance.py20
2 files changed, 32 insertions, 6 deletions
diff --git a/docker/cnf/testcases.yaml b/docker/cnf/testcases.yaml
index be289630..704f2e9d 100644
--- a/docker/cnf/testcases.yaml
+++ b/docker/cnf/testcases.yaml
@@ -30,6 +30,9 @@ tiers:
- case_name: cnf_testsuite
project_name: functest
+ # https://github.com/lfn-cnti/certification/blob/main/docs/CNTiCertification-2.0-beta.md
+ # V2.0-beta certification requires passing at least 15 of
+ # the 19 total Essential tests.
criteria: 15
blocking: false
description: >-
@@ -43,3 +46,18 @@ tiers:
args:
cnf-config: example-cnfs/coredns/cnf-testsuite.yml
tag: cert
+ - case_name: cnf_testsuite_workload
+ project_name: functest
+ criteria: 50
+ blocking: false
+ description: >-
+ Enable interoperability of Cloud native Network
+ Functions (CNFs) as proposed by
+ https://github.com/cnti-testcatalog/testsuite
+ dependencies:
+ - DEPLOY_SCENARIO: "k8-*"
+ run:
+ name: cnf_testsuite
+ args:
+ cnf-config: example-cnfs/coredns/cnf-testsuite.yml
+ tag: workload
diff --git a/functest_kubernetes/cnf_conformance/conformance.py b/functest_kubernetes/cnf_conformance/conformance.py
index b6fc8e42..5d1c1f5e 100644
--- a/functest_kubernetes/cnf_conformance/conformance.py
+++ b/functest_kubernetes/cnf_conformance/conformance.py
@@ -115,13 +115,21 @@ class CNFConformance(testcase.TestCase):
self.__logger.warning(
"%s %s", item['name'], item['status'])
self.__logger.info("\n\n%s\n", msg.get_string())
- grp = re.search(
- r'(\d+) of (\d+) essential tests passed', output.decode("utf-8"))
- if grp:
- # https://github.com/cncf/cnf-certification/blob/main/reviewing.md
- self.result = int(grp.group(1))
+ if kwargs.get("tag", self.default_tag) == 'cert':
+ grp = re.search(
+ r'(\d+) of (\d+) essential tests passed',
+ output.decode("utf-8"))
+ if grp:
+ self.result = int(grp.group(1))
+ else:
+ self.result = 0
else:
- self.result = 0
+ grp = re.search(
+ r'Final .* score: (\d+) of (\d+)', output.decode("utf-8"))
+ if grp:
+ self.result = int(grp.group(1)) / int(grp.group(2)) * 100
+ else:
+ self.result = item_criteria / len(self.details['items']) * 100
if not os.path.exists(self.res_dir):
os.makedirs(self.res_dir)
shutil.copy2(