diff options
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/testexport.bbclass | 33 | ||||
-rw-r--r-- | meta/classes/testimage.bbclass | 18 |
2 files changed, 46 insertions, 5 deletions
diff --git a/meta/classes/testexport.bbclass b/meta/classes/testexport.bbclass index c86eaac197..8046e29655 100644 --- a/meta/classes/testexport.bbclass +++ b/meta/classes/testexport.bbclass @@ -16,6 +16,9 @@ TEST_LOG_DIR ?= "${WORKDIR}/testexport" TEST_EXPORT_DIR ?= "${TMPDIR}/testexport/${PN}" +TEST_EXPORT_PACKAGED_DIR ?= "packages/packaged" +TEST_EXPORT_EXTRACTED_DIR ?= "packages/extracted" + TEST_TARGET ?= "simpleremote" TEST_TARGET_IP ?= "" TEST_SERVER_IP ?= "" @@ -28,9 +31,9 @@ python do_testexport() { } addtask testexport -do_testimage[nostamp] = "1" -do_testimage[depends] += "${TEST_EXPORT_DEPENDS}" -do_testimage[lockfiles] += "${TEST_EXPORT_LOCK}" +do_testexport[nostamp] = "1" +do_testexport[depends] += "${TEST_EXPORT_DEPENDS} ${TESTIMAGEDEPENDS}" +do_testexport[lockfiles] += "${TEST_EXPORT_LOCK}" def exportTests(d,tc): import json @@ -96,6 +99,9 @@ def exportTests(d,tc): shutil.copytree(foldername, target_folder) if not isfolder: shutil.copy2(mod.path, os.path.join(exportpath, "oeqa/runtime")) + json_file = "%s.json" % mod.path.rsplit(".", 1)[0] + if os.path.isfile(json_file): + shutil.copy2(json_file, os.path.join(exportpath, "oeqa/runtime")) # Get meta layer for layer in d.getVar("BBLAYERS", True).split(): if os.path.basename(layer) == "meta": @@ -115,6 +121,20 @@ def exportTests(d,tc): for f in files: shutil.copy2(os.path.join(root, f), os.path.join(exportpath, "oeqa/runtime/files")) + # Copy packages needed for runtime testing + export_pkg_dir = os.path.join(d.getVar("TEST_EXPORT_DIR", True), "packages") + test_pkg_dir = d.getVar("TEST_NEEDED_PACKAGES_DIR", True) + for root, subdirs, files in os.walk(test_pkg_dir): + for subdir in subdirs: + tmp_dir = os.path.join(root.replace(test_pkg_dir, "").lstrip("/"), subdir) + new_dir = os.path.join(export_pkg_dir, tmp_dir) + bb.utils.mkdirhier(new_dir) + + for f in files: + src_f = os.path.join(root, f) + dst_f = os.path.join(export_pkg_dir, root.replace(test_pkg_dir, "").lstrip("/"), f) + shutil.copy2(src_f, dst_f) + bb.plain("Exported tests to: %s" % exportpath) def testexport_main(d): @@ -122,9 +142,11 @@ def testexport_main(d): from oeqa.targetcontrol import get_target_controller from oeqa.utils.dump import get_host_dumper + test_create_extract_dirs(d) + export_dir = d.getVar("TEST_EXPORT_DIR", True) bb.utils.mkdirhier(d.getVar("TEST_LOG_DIR", True)) - bb.utils.remove(d.getVar("TEST_EXPORT_DIR", True), recurse=True) - bb.utils.mkdirhier(d.getVar("TEST_EXPORT_DIR", True)) + bb.utils.remove(export_dir, recurse=True) + bb.utils.mkdirhier(export_dir) # the robot dance target = get_target_controller(d) @@ -141,6 +163,7 @@ def testexport_main(d): import traceback bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) + tc.extract_packages() exportTests(d,tc) testexport_main[vardepsexclude] =+ "BB_ORIGENV" diff --git a/meta/classes/testimage.bbclass b/meta/classes/testimage.bbclass index a2e13df710..a70d3a885e 100644 --- a/meta/classes/testimage.bbclass +++ b/meta/classes/testimage.bbclass @@ -30,6 +30,10 @@ TEST_LOG_DIR ?= "${WORKDIR}/testimage" TEST_EXPORT_DIR ?= "${TMPDIR}/testimage/${PN}" +TEST_INSTALL_TMP_DIR ?= "${WORKDIR}/testimage/install_tmp" +TEST_NEEDED_PACKAGES_DIR ?= "${WORKDIR}/testimage/packages" +TEST_EXTRACTED_DIR ?= "${TEST_NEEDED_PACKAGES_DIR}/extracted" +TEST_PACKAGED_DIR ?= "${TEST_NEEDED_PACKAGES_DIR}/packaged" RPMTESTSUITE = "${@bb.utils.contains('IMAGE_PKGTYPE', 'rpm', 'smart rpm', '', d)}" MINTESTSUITE = "ping" @@ -100,6 +104,7 @@ testimage_dump_host () { python do_testimage() { testimage_main(d) } + addtask testimage do_testimage[nostamp] = "1" do_testimage[depends] += "${TESTIMAGEDEPENDS}" @@ -117,6 +122,7 @@ def testimage_main(d): pn = d.getVar("PN", True) bb.utils.mkdirhier(d.getVar("TEST_LOG_DIR", True)) + test_create_extract_dirs(d) # we need the host dumper in test context host_dumper = get_host_dumper(d) @@ -136,6 +142,7 @@ def testimage_main(d): import traceback bb.fatal("Loading tests failed:\n%s" % traceback.format_exc()) + tc.extract_packages() target.deploy() try: target.start() @@ -155,6 +162,17 @@ def testimage_main(d): signal.signal(signal.SIGTERM, tc.origsigtermhandler) target.stop() +def test_create_extract_dirs(d): + install_path = d.getVar("TEST_INSTALL_TMP_DIR", True) + package_path = d.getVar("TEST_PACKAGED_DIR", True) + extracted_path = d.getVar("TEST_EXTRACTED_DIR", True) + bb.utils.mkdirhier(d.getVar("TEST_LOG_DIR", True)) + bb.utils.remove(package_path, recurse=True) + bb.utils.mkdirhier(install_path) + bb.utils.mkdirhier(package_path) + bb.utils.mkdirhier(extracted_path) + + testimage_main[vardepsexclude] =+ "BB_ORIGENV" inherit testsdk |