src: fix ovs and qemu version
[vswitchperf.git] / vsperf
diff --git a/vsperf b/vsperf
index 7c9f018..62c905c 100755 (executable)
--- a/vsperf
+++ b/vsperf
@@ -26,18 +26,16 @@ import datetime
 import shutil
 import unittest
 import xmlrunner
+import locale
 
 sys.dont_write_bytecode = True
 
 from conf import settings
 from core.loader import Loader
 from testcases import TestCase
-from tools.report import report
 from tools import tasks
-from tools.collectors import collector
 from tools.pkt_gen import trafficgen
-from vswitches import vswitch
-from vnfs import vnf
+from tools.opnfvdashboard import opnfvdashboard
 
 VERBOSITY_LEVELS = {
     'debug': logging.DEBUG,
@@ -157,6 +155,7 @@ def parse_arguments():
                        help='csv list of test parameters: key=val; e.g.'
                        'including pkt_sizes=x,y; duration=x; '
                        'rfc2544_trials=x ...')
+    group.add_argument('--opnfvpod', help='name of POD in opnfv')
 
     args = vars(parser.parse_args())
 
@@ -173,9 +172,6 @@ def configure_logging(level):
     log_file_traffic_gen = os.path.join(
         settings.getValue('LOG_DIR'),
         settings.getValue('LOG_FILE_TRAFFIC_GEN'))
-    log_file_sys_metrics = os.path.join(
-        settings.getValue('LOG_DIR'),
-        settings.getValue('LOG_FILE_SYS_METRICS'))
 
     logger = logging.getLogger()
     logger.setLevel(logging.DEBUG)
@@ -200,11 +196,6 @@ def configure_logging(level):
         def filter(self, record):
             return record.getMessage().startswith(trafficgen.CMD_PREFIX)
 
-    class SystemMetricsCommandFilter(logging.Filter):
-        """Filter out strings beginning with 'gencmd :'"""
-        def filter(self, record):
-            return record.getMessage().startswith(collector.CMD_PREFIX)
-
     cmd_logger = logging.FileHandler(filename=log_file_host_cmds)
     cmd_logger.setLevel(logging.DEBUG)
     cmd_logger.addFilter(CommandFilter())
@@ -215,11 +206,6 @@ def configure_logging(level):
     gen_logger.addFilter(TrafficGenCommandFilter())
     logger.addHandler(gen_logger)
 
-    metrics_logger = logging.FileHandler(filename=log_file_sys_metrics)
-    metrics_logger.setLevel(logging.DEBUG)
-    metrics_logger.addFilter(SystemMetricsCommandFilter())
-    logger.addHandler(metrics_logger)
-
 
 def apply_filter(tests, tc_filter):
     """Allow a subset of tests to be conveniently selected
@@ -252,6 +238,17 @@ def apply_filter(tests, tc_filter):
     return result
 
 
+def check_and_set_locale():
+    """ Function will check locale settings. In case, that it isn't configured
+    properly, then default values specified by DEFAULT_LOCALE will be used.
+    """
+
+    system_locale = locale.getdefaultlocale()
+    if None in system_locale:
+        os.environ['LC_ALL'] = settings.getValue('DEFAULT_LOCALE')
+        logging.warning("Locale was not properly configured. Default values were set. Old locale: %s, New locale: %s",
+                        system_locale, locale.getdefaultlocale())
+
 class MockTestCase(unittest.TestCase):
     """Allow use of xmlrunner to generate Jenkins compatible output without
     using xmlrunner to actually run tests.
@@ -303,9 +300,30 @@ def main():
     # than both a settings file and environment variables
     settings.load_from_dict(args)
 
+    # set dpdk and ovs paths accorfing to VNF and VSWITCH
+    if settings.getValue('VSWITCH').endswith('Vanilla'):
+        # settings paths for Vanilla
+        settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_VANILLA')))
+    elif settings.getValue('VSWITCH').endswith('Vhost'):
+        if settings.getValue('VNF').endswith('Cuse'):
+            # settings paths for Cuse
+            settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_CUSE')))
+            settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_CUSE')))
+        else:
+            # settings paths for VhostUser
+            settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
+            settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
+    else:
+        # default - set to VHOST USER but can be changed during enhancement
+        settings.setValue('RTE_SDK', (settings.getValue('RTE_SDK_USER')))
+        settings.setValue('OVS_DIR', (settings.getValue('OVS_DIR_USER')))
+
     configure_logging(settings.getValue('VERBOSITY'))
     logger = logging.getLogger()
 
+    # check and fix locale
+    check_and_set_locale()
+
     # configure trafficgens
 
     if args['trafficgen']:
@@ -427,18 +445,29 @@ def main():
             output=settings.getValue('XUNIT_DIR'), outsuffix="",
             verbosity=0).run(suite)
 
+    if args['opnfvpod']:
+        pod_name = args['opnfvpod']
+        installer_name = settings.getValue('OPNFV_INSTALLER')
+        opnfv_url = settings.getValue('OPNFV_URL')
+        pkg_list = settings.getValue('PACKAGE_LIST')
+
+        int_data = {'cuse': False,
+                    'vanilla': False,
+                    'pod': pod_name,
+                    'installer': installer_name,
+                    'pkg_list': pkg_list,
+                    'db_url': opnfv_url}
+        if settings.getValue('VSWITCH').endswith('Vanilla'):
+            int_data['vanilla'] = True
+        if settings.getValue('VNF').endswith('Cuse'):
+            int_data['cuse'] = True
+        opnfvdashboard.results2opnfv_dashboard(results_path, int_data)
+
     #remove directory if no result files were created.
     if os.path.exists(results_path):
         files_list = os.listdir(results_path)
         if files_list == []:
             shutil.rmtree(results_path)
-        else:
-            for file in files_list:
-                # generate report from all csv files
-                if file[-3:] == 'csv':
-                    results_csv = os.path.join(results_path, file)
-                    if os.path.isfile(results_csv) and os.access(results_csv, os.R_OK):
-                        report.generate(testcases, results_csv)
 
 if __name__ == "__main__":
     main()