summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhifeng.jiang <jiang.zhifeng@zte.com.cn>2016-07-06 08:11:09 +0800
committerzhifeng.jiang <jiang.zhifeng@zte.com.cn>2016-07-06 08:22:50 +0800
commitc5e6b3c7a5e1df16d6840bb261169cd7b6df2bc4 (patch)
tree38bb6efde6499e4d1caf050caa9f561450931652
parentf2776c6c64b0a84df55edc1542dd6e67420d9076 (diff)
Schema checking for yaml file in test_cases.
JIRA: QTIP-25 Change-Id: Ibc3d9d6f5f0606da6a876eae5d4b1c3edefb5b47 Signed-off-by: zhifeng.jiang <jiang.zhifeng@zte.com.cn>
-rw-r--r--func/validate_yaml.py28
-rw-r--r--test-requirements.txt1
-rw-r--r--tests/schema/test_bm_schema.yaml75
-rw-r--r--tests/schema/test_vm_schema.yaml80
-rw-r--r--tests/yaml_schema_test.py16
5 files changed, 172 insertions, 28 deletions
diff --git a/func/validate_yaml.py b/func/validate_yaml.py
deleted file mode 100644
index fcf32a21..00000000
--- a/func/validate_yaml.py
+++ /dev/null
@@ -1,28 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Dell Inc 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
-##############################################################################
-
-
-class Validate_Yaml(object):
-
- def __init__(self, doc):
-
- print('Validating YAML CONFIG FILE')
-
- if not doc['Scenario']:
- print('\nScenario Field missing\na')
- if not doc['Scenario']['benchmark']:
- print('\nBenchmark field missing')
- if not doc['Scenario']['pointless']:
- print('')
- if not doc['Context']:
- print('\nEntire Context is missing')
- if not doc['Context']['Host_Machine']:
- print('\nNo Host Machine')
- if not doc['Context']['Host_Machine']['machine_1']:
- print('\nNo Host Machine')
diff --git a/test-requirements.txt b/test-requirements.txt
index e4a0274b..cdac2380 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -3,3 +3,4 @@
# process, which may cause wedges in the gate later.
pytest
+pykwalify
diff --git a/tests/schema/test_bm_schema.yaml b/tests/schema/test_bm_schema.yaml
new file mode 100644
index 00000000..740725f5
--- /dev/null
+++ b/tests/schema/test_bm_schema.yaml
@@ -0,0 +1,75 @@
+type: map
+mapping:
+ Scenario:
+ type: map
+ mapping:
+ benchmark:
+ type: str
+ required: True
+ host:
+ type: str
+ server:
+ type: str
+ allowempty: True
+ client:
+ type: str
+ allowempty: True
+ topology:
+ type: str
+ allowempty: True
+ benchmark_details:
+ type: map
+ mapping:
+ duration:
+ type: int
+ protocol:
+ type: str
+ bandwidthGbps:
+ type: int
+ description:
+ type: str
+ 1Run:
+ type: str
+
+ Context:
+ type: map
+ mapping:
+ Host_Machines:
+ type: map
+ required: True
+ mapping:
+ regex;(^machine):
+ type: map
+ mapping:
+ role:
+ type: str
+ ip:
+ type: str
+ pw:
+ type: str
+ allowempty: True
+ Virtual_Machines:
+ type: map
+ allowempty: True
+ Proxy_Environment:
+ type: map
+ mapping:
+ http_proxy:
+ type: str
+ https_proxy:
+ type: str
+ no_proxy:
+ type: str
+
+ Test_Description:
+ type: map
+ mapping:
+ Test_category:
+ type: str
+ allowempty: True
+ Benchmark:
+ type: str
+ allowempty: True
+ Overview:
+ type: str
+ allowempty: True
diff --git a/tests/schema/test_vm_schema.yaml b/tests/schema/test_vm_schema.yaml
new file mode 100644
index 00000000..524f8fe4
--- /dev/null
+++ b/tests/schema/test_vm_schema.yaml
@@ -0,0 +1,80 @@
+type: map
+mapping:
+ Scenario:
+ type: map
+ mapping:
+ benchmark:
+ type: str
+ required: True
+ host:
+ type: str
+ server:
+ type: str
+ allowempty: True
+ 1Run:
+ type: str
+ client:
+ type: str
+ allowempty: True
+ topology:
+ type: str
+ allowempty: True
+ benchmark_details:
+ type: map
+ mapping:
+ duration:
+ type: int
+ protocol:
+ type: str
+ bandwidthGbps:
+ type: int
+ teststream:
+ type: str
+ description:
+ type: str
+
+ Context:
+ type: map
+ mapping:
+ Host_Machines:
+ type: map
+ allowempty: True
+ Virtual_Machines:
+ type: map
+ required: True
+ mapping:
+ regex;(^virtualmachine):
+ type: map
+ mapping:
+ availability_zone:
+ type: str
+ OS_image:
+ type: str
+ public_network:
+ type: str
+ role:
+ type: str
+ flavor:
+ type: str
+ Proxy_Environment:
+ type: map
+ mapping:
+ http_proxy:
+ type: str
+ https_proxy:
+ type: str
+ no_proxy:
+ type: str
+
+ Test_Description:
+ type: map
+ mapping:
+ Test_category:
+ type: str
+ allowempty: True
+ Benchmark:
+ type: str
+ allowempty: True
+ Overview:
+ type: str
+ allowempty: True
diff --git a/tests/yaml_schema_test.py b/tests/yaml_schema_test.py
new file mode 100644
index 00000000..a975dca6
--- /dev/null
+++ b/tests/yaml_schema_test.py
@@ -0,0 +1,16 @@
+import os
+import os.path
+from pykwalify.core import Core
+
+
+class TestClass:
+ def test_schema_success(self):
+ for root, dirs, files in os.walk("test_cases"):
+ for name in files:
+ print root + "/" + name
+ if "_bm" in name:
+ schema = "tests/schema/test_bm_schema.yaml"
+ if "_vm" in name:
+ schema = "tests/schema/test_vm_schema.yaml"
+ c = Core(source_file=root + "/" + name, schema_files=[schema])
+ c.validate(raise_exception=True)