summaryrefslogtreecommitdiffstats
path: root/yardstick
diff options
context:
space:
mode:
authorkubi <jean.gaoliang@huawei.com>2015-12-29 11:04:20 +0800
committerJörgen Karlsson <jorgen.w.karlsson@ericsson.com>2016-01-09 06:06:52 +0000
commit9b792a92f1f0b67159de52f8bd6b94806b35ae7b (patch)
tree840ebf964154f0c2925097a16a43ce07d60050d4 /yardstick
parent20edb26aff8165996bab6f644e7380260a8a0aa5 (diff)
running Parser Yang-to-Tosca module as a tool
with jnon and fatih's help, new docker image has been uploaded so this part is about parser verify validating output against expected outcome. Change-Id: If50d241a5338888f14fd11a752dc72678e0c569b JIRA:YARDSTICK-224 Signed-off-by: kubi <jean.gaoliang@huawei.com> (cherry picked from commit d93f6ca5bf0d4f22ec0fd90eac1bf8b9c09db820)
Diffstat (limited to 'yardstick')
-rw-r--r--yardstick/benchmark/scenarios/parser/__init__.py0
-rw-r--r--yardstick/benchmark/scenarios/parser/parser.py80
-rwxr-xr-xyardstick/benchmark/scenarios/parser/parser.sh51
-rwxr-xr-xyardstick/benchmark/scenarios/parser/parser_setup.sh16
-rwxr-xr-xyardstick/benchmark/scenarios/parser/parser_teardown.sh13
5 files changed, 160 insertions, 0 deletions
diff --git a/yardstick/benchmark/scenarios/parser/__init__.py b/yardstick/benchmark/scenarios/parser/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/yardstick/benchmark/scenarios/parser/__init__.py
diff --git a/yardstick/benchmark/scenarios/parser/parser.py b/yardstick/benchmark/scenarios/parser/parser.py
new file mode 100644
index 000000000..006258d05
--- /dev/null
+++ b/yardstick/benchmark/scenarios/parser/parser.py
@@ -0,0 +1,80 @@
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and other.
+#
+# 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 pkg_resources
+import logging
+import subprocess
+from yardstick.benchmark.scenarios import base
+
+LOG = logging.getLogger(__name__)
+
+
+class Parser(base.Scenario):
+ """running Parser Yang-to-Tosca module as a tool
+ validating output against expected outcome
+
+ more info https://wiki.opnfv.org/parser
+ """
+ __scenario_type__ = "Parser"
+
+ SETUP_SCRIPT = "parser_setup.sh"
+ TEARDOWN_SCRIPT = "parser_teardown.sh"
+ PARSER_SCRIPT = "parser.sh"
+
+ def __init__(self, scenario_cfg, context_cfg):
+ self.scenario_cfg = scenario_cfg
+ self.context_cfg = context_cfg
+ self.setup_done = False
+
+ def setup(self):
+ """scenario setup"""
+ self.setup_script = pkg_resources.resource_filename(
+ "yardstick.benchmark.scenarios.parser",
+ Parser.SETUP_SCRIPT)
+ cmd = "%s" % (self.setup_script)
+
+ subprocess.call(cmd, shell=True)
+
+ self.setup_done = True
+
+ def run(self, result):
+ """execute the translation"""
+ options = self.scenario_cfg['options']
+ yangfile = options.get("yangfile", '~/yardstick/samples/yang.yaml')
+ toscafile = options.get("toscafile", '~/yardstick/samples/tosca.yaml')
+
+ self.parser_script = pkg_resources.resource_filename(
+ "yardstick.benchmark.scenarios.parser",
+ Parser.PARSER_SCRIPT)
+
+ if not self.setup_done:
+ self.setup()
+
+ cmd1 = "%s %s %s" % (self.parser_script, yangfile, toscafile)
+ cmd2 = "chmod 777 %s" % (self.parser_script)
+ subprocess.call(cmd2, shell=True)
+ output = subprocess.call(cmd1, shell=True, stdout=subprocess.PIPE)
+ print "yangtotosca finished"
+
+ result['yangtotosca'] = "success" if output == 0 else "fail"
+
+ def teardown(self):
+ ''' for scenario teardown remove parser and pyang '''
+ self.teardown_script = pkg_resources.resource_filename(
+ "yardstick.benchmark.scenarios.parser",
+ Parser.TEARDOWN_SCRIPT)
+ subprocess.call(self.teardown_script, shell=True)
+ self.teardown_done = True
+
+
+def _test():
+ '''internal test function'''
+ pass
+
+if __name__ == '__main__':
+ _test()
diff --git a/yardstick/benchmark/scenarios/parser/parser.sh b/yardstick/benchmark/scenarios/parser/parser.sh
new file mode 100755
index 000000000..4408e637c
--- /dev/null
+++ b/yardstick/benchmark/scenarios/parser/parser.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd 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
+##############################################################################
+
+set -e
+
+# Commandline arguments
+yangfile=$1
+base_dir=$(dirname $yangfile)
+shift
+toscafile=$1
+OUTPUT_FILE=/tmp/parser-out.log
+
+# run parser test
+run_parser()
+{
+ cd /tmp/parser/yang2tosca
+ python tosca_translator.py --filename $yangfile> $OUTPUT_FILE
+}
+
+# write the result to stdout in json format
+check_result()
+{
+
+ if (diff -q $toscafile ${yangfile%'.yaml'}"_tosca.yaml" >> $OUTPUT_FILE);
+ then
+ exit 0
+ else
+ exit 1
+ fi
+
+}
+
+# main entry
+main()
+{
+ # run the test
+ run_parser
+
+ # output result
+ check_result
+}
+
+main
diff --git a/yardstick/benchmark/scenarios/parser/parser_setup.sh b/yardstick/benchmark/scenarios/parser/parser_setup.sh
new file mode 100755
index 000000000..44356447d
--- /dev/null
+++ b/yardstick/benchmark/scenarios/parser/parser_setup.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd 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
+##############################################################################
+
+git clone https://github.com/mbj4668/pyang.git /tmp/pyang
+cd /tmp/pyang
+python setup.py install
+git clone https://gerrit.opnfv.org/gerrit/parser /tmp/parser
+
diff --git a/yardstick/benchmark/scenarios/parser/parser_teardown.sh b/yardstick/benchmark/scenarios/parser/parser_teardown.sh
new file mode 100755
index 000000000..727e9decd
--- /dev/null
+++ b/yardstick/benchmark/scenarios/parser/parser_teardown.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd 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
+##############################################################################
+
+rm -rf /tmp/pyang
+rm -rf /tmp/parser