aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--INFO1
-rw-r--r--docs/testing/user/userguide/04-installation.rst16
-rw-r--r--requirements.txt2
-rwxr-xr-xtests/ci/load_images.sh2
-rw-r--r--yardstick/common/utils.py40
-rw-r--r--yardstick/tests/functional/common/__init__.py0
-rw-r--r--yardstick/tests/functional/common/fake_module/__init__.py0
-rw-r--r--yardstick/tests/functional/common/fake_module/fake_library.py17
-rw-r--r--yardstick/tests/functional/common/test_utils.py34
-rw-r--r--yardstick/tests/unit/common/test_utils.py11
10 files changed, 85 insertions, 38 deletions
diff --git a/INFO b/INFO
index c1d39e88f..35b282845 100644
--- a/INFO
+++ b/INFO
@@ -13,7 +13,6 @@ Repository: yardstick
Committers:
jorgen.w.karlsson@ericsson.com
jean.gaoliang@huawei.com
-vincenzo.m.riccobene@intel.com
lvjing5@huawei.com
wu.zhihui1@zte.com.cn
14_ykl@tongji.edu.cn
diff --git a/docs/testing/user/userguide/04-installation.rst b/docs/testing/user/userguide/04-installation.rst
index 828c49581..caebecc09 100644
--- a/docs/testing/user/userguide/04-installation.rst
+++ b/docs/testing/user/userguide/04-installation.rst
@@ -107,6 +107,12 @@ Run the Docker image to get a Yardstick container::
======================= ====================================================
--name yardstick The name for this container
+If the host is restarted
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+The yardstick container must be started if the host is rebooted::
+
+ docker start yardstick
Configure the Yardstick container environment
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -301,12 +307,6 @@ Prerequisite preparation::
sudo -EH pip install appdirs==1.4.0
sudo -EH pip install virtualenv
-Create a virtual environment::
-
- virtualenv ~/yardstick_venv
- export YARDSTICK_VENV=~/yardstick_venv
- source ~/yardstick_venv/bin/activate
-
Download the source code and install Yardstick from it::
git clone https://gerrit.opnfv.org/gerrit/yardstick
@@ -314,6 +314,10 @@ Download the source code and install Yardstick from it::
cd ~/yardstick
sudo -EH ./install.sh
+If the host is ever restarted, nginx and uwsgi need to be restarted::
+
+ service nginx restart
+ uwsgi -i /etc/yardstick/yardstick.ini
Configure the Yardstick environment (**Todo**)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/requirements.txt b/requirements.txt
index 7fdd8f005..88c0e659a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -11,7 +11,7 @@ Babel==2.3.4 # BSD; OSI Approved BSD License
Jinja2==2.9.6 # BSD; OSI Approved BSD License
SQLAlchemy==1.1.12 # MIT License; OSI Approved MIT License
PTable==0.9.2 # BSD (3 clause); OSI Approved BSD License
-ansible==2.3.2 # GPLv3; OSI Approved GNU General Public License v3 or later (GPLv3+)
+ansible==2.4.2 # GPLv3; OSI Approved GNU General Public License v3 or later (GPLv3+)
backport-ipaddress==0.1; python_version <= "2.7" # OSI Approved Python Software Foundation License
chainmap==1.0.2 # Python Software Foundation License; OSI Approved Python Software Foundation License
django==1.8.17 # BSD; OSI Approved BSD License
diff --git a/tests/ci/load_images.sh b/tests/ci/load_images.sh
index 80caf07ae..caaba9e8b 100755
--- a/tests/ci/load_images.sh
+++ b/tests/ci/load_images.sh
@@ -133,7 +133,7 @@ load_cirros_image()
CIRROS_IMAGE_PATH="/home/opnfv/images/cirros-d161201-aarch64-disk.img"
EXTRA_PARAMS="--property hw_video_model=vga --property short_id=ubuntu16.04"
else
- CIRROS_IMAGE_VERSION="Cirros-0.3.5"
+ CIRROS_IMAGE_VERSION="cirros-0.3.5"
CIRROS_IMAGE_PATH="/home/opnfv/images/cirros-0.3.5-x86_64-disk.img"
fi
diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py
index 82e20bec7..8604e900f 100644
--- a/yardstick/common/utils.py
+++ b/yardstick/common/utils.py
@@ -13,27 +13,22 @@
# License for the specific language governing permissions and limitations
# under the License.
-# yardstick comment: this is a modified copy of rally/rally/common/utils.py
-
-from __future__ import absolute_import
-from __future__ import print_function
-
+import collections
+from contextlib import closing
import datetime
import errno
+import importlib
+import ipaddress
import logging
import os
+import random
+import socket
import subprocess
import sys
-import collections
-import socket
-import random
-import ipaddress
-from contextlib import closing
import six
from flask import jsonify
from six.moves import configparser
-from oslo_utils import importutils
from oslo_serialization import jsonutils
import yardstick
@@ -70,27 +65,28 @@ def itersubclasses(cls, _seen=None):
def import_modules_from_package(package):
- """Import modules from package and append into sys.modules
+ """Import modules given a package name
:param: package - Full package name. For example: rally.deploy.engines
"""
yardstick_root = os.path.dirname(os.path.dirname(yardstick.__file__))
- path = os.path.join(yardstick_root, *package.split("."))
+ path = os.path.join(yardstick_root, *package.split('.'))
for root, _, files in os.walk(path):
- matches = (filename for filename in files if filename.endswith(".py") and
- not filename.startswith("__"))
- new_package = os.path.relpath(root, yardstick_root).replace(os.sep, ".")
+ matches = (filename for filename in files if filename.endswith('.py')
+ and not filename.startswith('__'))
+ new_package = os.path.relpath(root, yardstick_root).replace(os.sep,
+ '.')
module_names = set(
- ("{}.{}".format(new_package, filename.rsplit(".py", 1)[0]) for filename in matches))
- # find modules which haven't already been imported
+ '{}.{}'.format(new_package, filename.rsplit('.py', 1)[0])
+ for filename in matches)
+ # Find modules which haven't already been imported
missing_modules = module_names.difference(sys.modules)
- logger.debug("importing %s", missing_modules)
- # we have already checked for already imported modules, so we don't need to check again
+ logger.debug('Importing modules: %s', missing_modules)
for module_name in missing_modules:
try:
- sys.modules[module_name] = importutils.import_module(module_name)
+ importlib.import_module(module_name)
except (ImportError, SyntaxError):
- logger.exception("unable to import %s", module_name)
+ logger.exception('Unable to import module %s', module_name)
def makedirs(d):
diff --git a/yardstick/tests/functional/common/__init__.py b/yardstick/tests/functional/common/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/yardstick/tests/functional/common/__init__.py
diff --git a/yardstick/tests/functional/common/fake_module/__init__.py b/yardstick/tests/functional/common/fake_module/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/yardstick/tests/functional/common/fake_module/__init__.py
diff --git a/yardstick/tests/functional/common/fake_module/fake_library.py b/yardstick/tests/functional/common/fake_module/fake_library.py
new file mode 100644
index 000000000..28c7dc694
--- /dev/null
+++ b/yardstick/tests/functional/common/fake_module/fake_library.py
@@ -0,0 +1,17 @@
+# Copyright (c) 2018 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+class FakeClassToBeImported(object):
+ pass
diff --git a/yardstick/tests/functional/common/test_utils.py b/yardstick/tests/functional/common/test_utils.py
new file mode 100644
index 000000000..b5333bbde
--- /dev/null
+++ b/yardstick/tests/functional/common/test_utils.py
@@ -0,0 +1,34 @@
+# Copyright (c) 2018 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import unittest
+import sys
+
+from yardstick.common import utils
+
+
+class ImportModulesFromPackageTestCase(unittest.TestCase):
+
+ def test_import_package(self):
+ module_name = 'yardstick.tests.functional.common.fake_module'
+ library_name = 'fake_library'
+ class_name = 'FakeClassToBeImported'
+ self.assertNotIn(module_name, sys.modules)
+
+ utils.import_modules_from_package(module_name)
+ self.assertIn(module_name, sys.modules)
+ module_obj = sys.modules[module_name]
+ library_obj = getattr(module_obj, library_name)
+ class_obj = getattr(library_obj, class_name)
+ self.assertEqual(class_name, class_obj().__class__.__name__)
diff --git a/yardstick/tests/unit/common/test_utils.py b/yardstick/tests/unit/common/test_utils.py
index 452b93a56..033bb0243 100644
--- a/yardstick/tests/unit/common/test_utils.py
+++ b/yardstick/tests/unit/common/test_utils.py
@@ -7,12 +7,9 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-# Unittest for yardstick.common.utils
-
-from __future__ import absolute_import
-
from copy import deepcopy
import errno
+import importlib
import ipaddress
from itertools import product, chain
import mock
@@ -60,8 +57,8 @@ class ImportModulesFromPackageTestCase(unittest.TestCase):
utils.import_modules_from_package('foo.bar')
@mock.patch('yardstick.common.utils.os.walk')
- @mock.patch('yardstick.common.utils.importutils')
- def test_import_modules_from_package(self, mock_importutils, mock_walk):
+ @mock.patch.object(importlib, 'import_module')
+ def test_import_modules_from_package(self, mock_import_module, mock_walk):
yardstick_root = os.path.dirname(os.path.dirname(yardstick.__file__))
mock_walk.return_value = ([
@@ -69,7 +66,7 @@ class ImportModulesFromPackageTestCase(unittest.TestCase):
])
utils.import_modules_from_package('foo.bar')
- mock_importutils.import_module.assert_called_with('bar.baz')
+ mock_import_module.assert_called_once_with('bar.baz')
class GetParaFromYaml(unittest.TestCase):