Fix exception handling ixload 81/66481/11
authorJohn O Loughlin <john.oloughlin@intel.com>
Fri, 18 Jan 2019 11:27:03 +0000 (11:27 +0000)
committerEmma Foley <emma.l.foley@intel.com>
Thu, 31 Jan 2019 10:24:43 +0000 (10:24 +0000)
Ixload uses its own version of python
By default it will fail to import yardstick.common exceptions.
For this reason for this reason ixload exceptions should be kept
in http_ixload.py

JIRA: YARDSTICK-1587

Change-Id: I5673fb5b89bbcdf4d3c60c283231d44d770999ec
Signed-off-by: John O Loughlin <john.oloughlin@intel.com>
yardstick/common/exceptions.py
yardstick/network_services/traffic_profile/http_ixload.py
yardstick/tests/unit/network_services/traffic_profile/test_http_ixload.py

index f62f02f..952c623 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -83,10 +83,6 @@ class InvalidType(YardstickException):
     message = 'Type "%(type_to_convert)s" is not valid'
 
 
-class InvalidRxfFile(YardstickException):
-    message = 'Loaded rxf file has unexpected format'
-
-
 class InfluxDBConfigurationMissing(YardstickException):
     message = ('InfluxDB configuration is not available. Add "influxdb" as '
                'a dispatcher and the configuration section')
index b88aadf..ec07625 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2017 Intel Corporation
+# Copyright (c) 2016-2019 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -16,14 +16,6 @@ import sys
 import os
 import logging
 import collections
-import subprocess
-try:
-    libs = subprocess.check_output(
-        'python -c "import site; print(site.getsitepackages())"', shell=True)
-
-    sys.path.extend(libs[1:-1].replace("'", "").split(','))
-except subprocess.CalledProcessError:
-    pass
 
 # ixload uses its own py2. So importing jsonutils fails. So adding below
 # workaround to support call from yardstick
@@ -32,14 +24,26 @@ try:
 except ImportError:
     import json as jsonutils
 
-from yardstick.common import exceptions #pylint: disable=wrong-import-position
+
+class ErrorClass(object):
+
+    def __init__(self, *args, **kwargs):
+        if 'test' not in kwargs:
+            raise RuntimeError
+
+    def __getattr__(self, item):
+        raise AttributeError
+
+
+class InvalidRxfFile(Exception):
+    message = 'Loaded rxf file has unexpected format'
+
 
 try:
     from IxLoad import IxLoad, StatCollectorUtils
 except ImportError:
-    IxLoad = exceptions.ErrorClass
-    StatCollectorUtils = exceptions.ErrorClass
-
+    IxLoad = ErrorClass
+    StatCollectorUtils = ErrorClass
 
 LOG = logging.getLogger(__name__)
 CSV_FILEPATH_NAME = 'IxL_statResults.csv'
@@ -205,7 +209,7 @@ class IXLOADHttpTest(object):
                 ipAddress=address,
                 gatewayAddress=gateway)
         except Exception:
-            raise exceptions.InvalidRxfFile
+            raise InvalidRxfFile
 
     def update_network_mac_address(self, net_traffic, mac):
         """Update MACaddress for net_traffic object
@@ -233,7 +237,7 @@ class IXLOADHttpTest(object):
                     "MacRange")
                 mac_range.config(mac=mac)
         except Exception:
-            raise exceptions.InvalidRxfFile
+            raise InvalidRxfFile
 
     def update_network_param(self, net_traffic, param):
         """Update net_traffic by parameters specified in param"""
@@ -301,7 +305,7 @@ class IXLOADHttpTest(object):
             ix_http_command = activity.agent.actionList[0]
             ix_http_command.config(pageObject=page_object)
         except Exception:
-            raise exceptions.InvalidRxfFile
+            raise InvalidRxfFile
 
     def update_user_count(self, net_traffic, user_count):
         """Update userObjectiveValue field in activity object in net_traffic
@@ -318,7 +322,7 @@ class IXLOADHttpTest(object):
             activity = net_traffic.activityList[0]
             activity.config(userObjectiveValue=user_count)
         except Exception:
-            raise exceptions.InvalidRxfFile
+            raise InvalidRxfFile
 
     def start_http_test(self):
         self.ix_load = IxLoad()
index c9be200..996360c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2017 Intel Corporation
+# Copyright (c) 2017-2019 Intel Corporation
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -17,7 +17,6 @@ import mock
 
 from oslo_serialization import jsonutils
 
-from yardstick.common import exceptions
 from yardstick.network_services.traffic_profile import http_ixload
 from yardstick.network_services.traffic_profile.http_ixload import \
     join_non_strings, validate_non_string_sequence
@@ -288,7 +287,7 @@ class TestIxLoadTrafficGen(unittest.TestCase):
 
         net_traffic.network.getL1Plugin.return_value = Exception
 
-        with self.assertRaises(exceptions.InvalidRxfFile):
+        with self.assertRaises(http_ixload.InvalidRxfFile):
             ixload.update_network_mac_address(net_traffic, "auto")
 
     def test_update_network_address(self):
@@ -312,7 +311,7 @@ class TestIxLoadTrafficGen(unittest.TestCase):
 
         net_traffic.network.getL1Plugin.return_value = Exception
 
-        with self.assertRaises(exceptions.InvalidRxfFile):
+        with self.assertRaises(http_ixload.InvalidRxfFile):
             ixload.update_network_address(net_traffic, "address", "gateway",
                                           "prefix")
 
@@ -375,7 +374,7 @@ class TestIxLoadTrafficGen(unittest.TestCase):
             pageObject="page_object")
 
         net_traffic.activityList = []
-        with self.assertRaises(exceptions.InvalidRxfFile):
+        with self.assertRaises(http_ixload.InvalidRxfFile):
             ixload.update_page_size(net_traffic, "page_object")
 
     def test_update_user_count(self):
@@ -390,7 +389,7 @@ class TestIxLoadTrafficGen(unittest.TestCase):
         activity.config.assert_called_once_with(userObjectiveValue=123)
 
         net_traffic.activityList = []
-        with self.assertRaises(exceptions.InvalidRxfFile):
+        with self.assertRaises(http_ixload.InvalidRxfFile):
             ixload.update_user_count(net_traffic, 123)
 
     @mock.patch('yardstick.network_services.traffic_profile.http_ixload.IxLoad')