Schema checking for yaml file in test_cases. 07/16407/2
authorzhifeng.jiang <jiang.zhifeng@zte.com.cn>
Wed, 6 Jul 2016 00:11:09 +0000 (08:11 +0800)
committerzhifeng.jiang <jiang.zhifeng@zte.com.cn>
Wed, 6 Jul 2016 00:22:50 +0000 (08:22 +0800)
JIRA: QTIP-25

Change-Id: Ibc3d9d6f5f0606da6a876eae5d4b1c3edefb5b47
Signed-off-by: zhifeng.jiang <jiang.zhifeng@zte.com.cn>
func/validate_yaml.py [deleted file]
test-requirements.txt
tests/schema/test_bm_schema.yaml [new file with mode: 0644]
tests/schema/test_vm_schema.yaml [new file with mode: 0644]
tests/yaml_schema_test.py [new file with mode: 0644]

diff --git a/func/validate_yaml.py b/func/validate_yaml.py
deleted file mode 100644 (file)
index fcf32a2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-##############################################################################\r
-# Copyright (c) 2015 Dell Inc  and others.\r
-#\r
-# All rights reserved. This program and the accompanying materials\r
-# are made available under the terms of the Apache License, Version 2.0\r
-# which accompanies this distribution, and is available at\r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-##############################################################################\r
-\r
-\r
-class Validate_Yaml(object):\r
-\r
-    def __init__(self, doc):\r
-\r
-        print('Validating YAML CONFIG FILE')\r
-\r
-        if not doc['Scenario']:\r
-            print('\nScenario Field missing\na')\r
-        if not doc['Scenario']['benchmark']:\r
-            print('\nBenchmark field missing')\r
-        if not doc['Scenario']['pointless']:\r
-            print('')\r
-        if not doc['Context']:\r
-            print('\nEntire Context is missing')\r
-        if not doc['Context']['Host_Machine']:\r
-            print('\nNo Host Machine')\r
-        if not doc['Context']['Host_Machine']['machine_1']:\r
-            print('\nNo Host Machine')\r
index e4a0274..cdac238 100644 (file)
@@ -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 (file)
index 0000000..740725f
--- /dev/null
@@ -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 (file)
index 0000000..524f8fe
--- /dev/null
@@ -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 (file)
index 0000000..a975dca
--- /dev/null
@@ -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)