aboutsummaryrefslogtreecommitdiffstats
path: root/vsperf
diff options
context:
space:
mode:
authorMartin Klozik <martinx.klozik@intel.com>2016-01-25 10:34:27 +0000
committerMaryam Tahhan <maryam.tahhan@intel.com>2016-01-25 11:09:20 +0000
commitda081ab2603eb34baf7d7fe7b61f681ef15d865e (patch)
tree52144f7a175ed5f953a6b4356998884f1673ab11 /vsperf
parente840131eef8e493a1b0a4bd4ed2885c958b481f9 (diff)
report: create test report for all executed TCs
Every testcase generates report with its results into separate file. It is required to merge all partial reports into final overall report for whole set of TCs executed by VSPERF. Hugepages are mounted also for TestPMD packet forwarder. Change-Id: Iaa1ab4e08d1637106da804e06b7f30100d609cd6 JIRA: VSPERF-181 Signed-off-by: Martin Klozik <martinx.klozik@intel.com> Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Diffstat (limited to 'vsperf')
-rwxr-xr-xvsperf35
1 files changed, 32 insertions, 3 deletions
diff --git a/vsperf b/vsperf
index 93772326..4b1d86d0 100755
--- a/vsperf
+++ b/vsperf
@@ -28,6 +28,8 @@ import unittest
import xmlrunner
import locale
import copy
+import glob
+import subprocess
sys.dont_write_bytecode = True
@@ -39,7 +41,6 @@ from tools import tasks
from tools.pkt_gen import trafficgen
from tools.opnfvdashboard import opnfvdashboard
from tools.pkt_gen.trafficgen.trafficgenhelper import TRAFFIC_DEFAULTS
-from conf import get_test_param
import core.component_factory as component_factory
VERBOSITY_LEVELS = {
@@ -50,6 +51,10 @@ VERBOSITY_LEVELS = {
'critical': logging.CRITICAL
}
+_TEMPLATE_RST = {'head' : 'tools/report/report_head.rst',
+ 'foot' : 'tools/report/report_foot.rst',
+ 'final' : 'test_report.rst'
+ }
def parse_arguments():
"""
@@ -262,6 +267,27 @@ def check_and_set_locale():
logging.warning("Locale was not properly configured. Default values were set. Old locale: %s, New locale: %s",
system_locale, locale.getdefaultlocale())
+
+def generate_final_report(path):
+ """ Function will check if partial test results are available
+ and generates final report in rst format.
+ """
+
+ # check if there are any results in rst format
+ rst_results = glob.glob(os.path.join(path, 'result*rst'))
+ if len(rst_results):
+ try:
+ test_report = os.path.join(path, _TEMPLATE_RST['final'])
+ retval = subprocess.call('cat {} {} {} > {}'.format(_TEMPLATE_RST['head'], ' '.join(rst_results),
+ _TEMPLATE_RST['foot'], test_report), shell=True)
+ if retval == 0 and os.path.isfile(test_report):
+ logging.info('Overall test report written to "%s"', test_report)
+ else:
+ logging.error('Generatrion of overall test report has failed.')
+ except subprocess.CalledProcessError:
+ logging.error('Generatrion of overall test report has failed.')
+
+
class MockTestCase(unittest.TestCase):
"""Allow use of xmlrunner to generate Jenkins compatible output without
using xmlrunner to actually run tests.
@@ -313,7 +339,7 @@ def main():
# than both a settings file and environment variables
settings.load_from_dict(args)
- vswitch_none = False
+ vswitch_none = False
# set dpdk and ovs paths accorfing to VNF and VSWITCH
if settings.getValue('VSWITCH').endswith('Vanilla'):
# settings paths for Vanilla
@@ -351,7 +377,7 @@ def main():
# configure vswitch
if args['vswitch']:
- vswitch_none = 'none' == args['vswitch'].strip().lower()
+ vswitch_none = 'none' == args['vswitch'].strip().lower()
if vswitch_none:
settings.setValue('VSWITCH', 'none')
else:
@@ -499,6 +525,9 @@ def main():
suite.addTest(MockTestCase(str(ex), False, test.name))
logger.info("Continuing with next test...")
+ # generate final rst report with results of all executed TCs
+ generate_final_report(results_path)
+
if settings.getValue('XUNIT'):
xmlrunner.XMLTestRunner(
output=settings.getValue('XUNIT_DIR'), outsuffix="",