import re, json, os, urllib2, argparse, logging
""" tests configuration """
-tests = ['authenticate', 'glance', 'heat', 'keystone', 'neutron', 'nova', 'tempest', 'vm', 'all']
+tests = ['authenticate', 'glance', 'cinder', 'heat', 'keystone', 'neutron', 'nova', 'tempest', 'vm', 'all']
parser = argparse.ArgumentParser()
parser.add_argument("test_name", help="The name of the test you want to perform with rally. "
"Possible values are : "
"[ {d[0]} | {d[1]} | {d[2]} | {d[3]} | {d[4]} | {d[5]} | {d[6]} "
- "| {d[7]} | {d[8]} ]. The 'all' value performs all the tests scenarios "
+ "| {d[7]} | {d[8]} | {d[9]} ]. The 'all' value performs all the tests scenarios "
"except 'tempest'".format(d=tests))
parser.add_argument("-d", "--debug", help="Debug mode", action="store_true")
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
:return: void
"""
logger.info('starting {} test ...'.format(test_name))
-
+
""" get the date """
cmd = os.popen("date '+%d%m%Y_%H%M'")
test_date = cmd.read().rstrip()
if not os.path.exists(test_file_name):
logger.debug('{} does not exists'.format(test_file_name))
proceed_test = retrieve_test_cases_file(test_name, tests_path)
- logger.debug('successfully downloaded to : {}'.format(test_file_name))
""" we do the test only if we have a scenario test file """
if proceed_test:
+ logger.debug('successfully downloaded to : {}'.format(test_file_name))
cmd_line = "rally task start --abort-on-sla-failure %s" % test_file_name
logger.debug('running command line : {}'.format(cmd_line))
cmd = os.popen(cmd_line)
if not os.path.exists(report_path):
logger.debug('does not exists, we create it'.format(report_path))
os.makedirs(report_path)
-
+
""" write html report file """
report_file_name = '{}/opnfv-{}-{}.html'.format(report_path, test_name, test_date)
cmd_line = "rally task report %s --out %s" % (task_id, report_file_name)
logger.debug('running command line : {}'.format(cmd_line))
os.popen(cmd_line)
-
+
""" get and save rally operation JSON result """
cmd_line = "rally task results %s" % task_id
logger.debug('running command line : {}'.format(cmd_line))
with open('{}/opnfv-{}-{}.json'.format(report_path, test_name, test_date), 'w') as f:
logger.debug('saving json file')
f.write(json_results)
+ logger.debug('saving json file2')
""" parse JSON operation result """
if task_succeed(json_results):
else:
print '{} KO'.format(test_date)
else:
- logger.error('{} test failed, unable to find a scenario test file'.format(test_name))
+ logger.error('{} test failed, unable to download a scenario test file'.format(test_name))
def retrieve_test_cases_file(test_name, tests_path):
""" do not add the "/" at the end """
url_base = "https://git.opnfv.org/cgit/functest/plain/testcases/VIM/OpenStack/CI/suites"
-
+
test_file_name = 'opnfv-{}.json'.format(test_name)
logger.info('fetching {}/{} ...'.format(url_base, test_file_name))
-
+
try:
response = urllib2.urlopen('{}/{}'.format(url_base, test_file_name))
except (urllib2.HTTPError, urllib2.URLError):
return False
file_raw = response.read()
-
+
""" check if the test path exist otherwise we create it """
if not os.path.exists(tests_path):
os.makedirs(tests_path)
-
+
with open('{}/{}'.format(tests_path, test_file_name), 'w') as f:
f.write(file_raw)
return True