diff options
author | Stefan Stanacar <stefanx.stanacar@intel.com> | 2014-01-16 14:48:59 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-01-16 23:40:43 +0000 |
commit | 9b81aff0aca42353d448b1e9522f89842e23c7b2 (patch) | |
tree | eb6c7038dd23be15bd41ff7a853452365cdc3c7d /meta/lib | |
parent | 1e06d5ce83439b5bd75a958f305e6a880d40333d (diff) | |
download | openembedded-core-9b81aff0aca42353d448b1e9522f89842e23c7b2.tar.gz openembedded-core-9b81aff0aca42353d448b1e9522f89842e23c7b2.tar.bz2 openembedded-core-9b81aff0aca42353d448b1e9522f89842e23c7b2.zip |
lib/oeqa: allow a layer to provide it's own TEST_TARGET class
Allows a layer to define new classes in <layer>/lib/oeqa/utils/controllers.py
and completely control or extend deployment of a target. (core currently
has QemuTarget and SimpleRemoteTarget).
The value of TEST_TARGET must be the name of the new class.
Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r-- | meta/lib/oeqa/targetcontrol.py | 23 | ||||
-rw-r--r-- | meta/lib/oeqa/utils/__init__.py | 3 |
2 files changed, 22 insertions, 4 deletions
diff --git a/meta/lib/oeqa/targetcontrol.py b/meta/lib/oeqa/targetcontrol.py index dee38ec1d6..757f9d3d50 100644 --- a/meta/lib/oeqa/targetcontrol.py +++ b/meta/lib/oeqa/targetcontrol.py @@ -8,18 +8,33 @@ import os import shutil import subprocess import bb - +import traceback from oeqa.utils.sshcontrol import SSHControl from oeqa.utils.qemurunner import QemuRunner def get_target_controller(d): - if d.getVar("TEST_TARGET", True) == "qemu": + testtarget = d.getVar("TEST_TARGET", True) + # old, simple names + if testtarget == "qemu": return QemuTarget(d) - elif d.getVar("TEST_TARGET", True) == "simpleremote": + elif testtarget == "simpleremote": return SimpleRemoteTarget(d) else: - bb.fatal("Please set a valid TEST_TARGET") + # use the class name + try: + # is it a core class defined here? + controller = getattr(__name__, testtarget) + except AttributeError: + # nope, perhaps a layer defined one + try: + module = __import__("oeqa.utils.controllers", globals(), locals(), [testtarget]) + controller = getattr(module, testtarget) + except ImportError as e: + bb.fatal("Failed to import oeqa.utils.controllers:\n%s" % traceback.format_exc()) + except AttributeError: + bb.fatal("\"%s\" is not a valid value for TEST_TARGET" % testtarget) + return controller(d) class BaseTarget(object): diff --git a/meta/lib/oeqa/utils/__init__.py b/meta/lib/oeqa/utils/__init__.py index e69de29bb2..8eda92763c 100644 --- a/meta/lib/oeqa/utils/__init__.py +++ b/meta/lib/oeqa/utils/__init__.py @@ -0,0 +1,3 @@ +# Enable other layers to have modules in the same named directory +from pkgutil import extend_path +__path__ = extend_path(__path__, __name__) |