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. (From OE-Core rev: 9b81aff0aca42353d448b1e9522f89842e23c7b2) Signed-off-by: Stefan Stanacar <stefanx.stanacar@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
650ee5e275
commit
bf7383de87
|
@ -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):
|
||||
|
|
|
@ -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__)
|
Loading…
Reference in New Issue