aboutsummaryrefslogtreecommitdiffstats
path: root/testcases/VIM/OpenStack/CI/libraries/run_rally.py
diff options
context:
space:
mode:
authormorganrOL <morgan.richomme@orange.com>2015-04-09 18:42:06 +0200
committermorganrOL <morgan.richomme@orange.com>2015-04-09 18:43:40 +0200
commita05c0984e704782a02b334ca500d754614791265 (patch)
treea1a65568c3e94dbaf4f95e978900dd64e577e1b8 /testcases/VIM/OpenStack/CI/libraries/run_rally.py
parentfdcd95d7510faf9190f31850382beeb1580a2c7b (diff)
script to launch Rally bench scenario per module or all one after the other from CI
the script get the test ID and generate reporting JIRA:FUNCTEST-1 Change-Id: If99305739c1ff53a4ee3764369d70653f83f3f6a Signed-off-by: morganrOL <morgan.richomme@orange.com>
Diffstat (limited to 'testcases/VIM/OpenStack/CI/libraries/run_rally.py')
-rw-r--r--testcases/VIM/OpenStack/CI/libraries/run_rally.py104
1 files changed, 104 insertions, 0 deletions
diff --git a/testcases/VIM/OpenStack/CI/libraries/run_rally.py b/testcases/VIM/OpenStack/CI/libraries/run_rally.py
new file mode 100644
index 000000000..6ce9b13d8
--- /dev/null
+++ b/testcases/VIM/OpenStack/CI/libraries/run_rally.py
@@ -0,0 +1,104 @@
+#
+# Copyright (c) 2015 Orange
+# guyrodrigue.koffi@orange.com
+# morgan.richomme@orange.com
+# 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
+#
+#!/usr/bin/python
+import re, json, os, sys
+
+def get_task_id(cmd_raw):
+ """
+ get task id from command rally result
+ :param cmd_raw:
+ :return: task_id as string
+ """
+ taskid_re = re.compile('^Task +(.*): started$')
+ for line in cmd_raw.splitlines(True):
+ line = line.strip()
+ match = taskid_re.match(line)
+ if match:
+ return match.group(1)
+ return None
+
+def task_succeed(json_raw):
+ """
+ Parse JSON from rally JSON results
+ :param json_raw:
+ :return: Bool
+ """
+ rally_report = json.loads(json_raw)
+ rally_report = rally_report[0]
+ if rally_report is None:
+ return False
+ if rally_report.get('result') is None:
+ return False
+
+ for result in rally_report.get('result'):
+ if len(result.get('error')) > 0:
+ return False
+
+ return True
+
+
+def run_task(test_name):
+ """
+ the "main" function of the script who lunch rally for a task
+ :param test_name: name for the rally test
+ :return: void
+ """
+
+ """ get the date """
+ cmd = os.popen("date '+%d%m%Y_%H%M'")
+ test_date = cmd.read().rstrip()
+
+ """ directory for test scenarios files"""
+ test_dir = '/home/ubuntu/rally/samples/tasks/scenarios/opnfv'
+ test_file_name = "/home/ubuntu/rally/samples/tasks/scenarios/opnfv/opnfv-%s.json" % test_name
+ print test_file_name
+
+ cmd = os.popen("rally task start --abort-on-sla-failure %s" % test_file_name)
+ task_id = get_task_id(cmd.read())
+
+ if task_id is None:
+ print "./run_rally : failed to retrieve task_id"
+ exit(-1)
+
+ report_file_name = "/home/ubuntu/rally/opnfv-%s-%s.html" % (test_name, test_date)
+
+ os.popen("rally task report %s --out %s" % (task_id, report_file_name))
+ cmd = os.popen("rally task results %s" % task_id)
+ if task_succeed(cmd.read()):
+ print "OK"
+ else:
+ print "KO"
+
+
+def main():
+ """ configure script """
+ tests = ('authenticate','glance','heat','keystone','neutron','nova','tempest','vm', 'all',)
+
+
+ if len(sys.argv) != 2:
+ print "./run_rally [", tests, "]"
+ exit(-1)
+ test_name = sys.argv[1]
+
+ if not (test_name in tests):
+ print "argument not valid"
+ exit(-1)
+
+ if test_name == "all":
+ #run test for all tests
+ pass
+ else:
+ run_task(test_name)
+
+
+if __name__ == '__main__':
+ main()
+
+