From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- poky/meta-selftest/lib/devtool/__init__.py | 0 poky/meta-selftest/lib/devtool/bbpath.py | 44 ++++++++++++++++++++ poky/meta-selftest/lib/devtool/test.py | 11 +++++ .../lib/oeqa/runtime/cases/dnf_runtime.py | 47 ++++++++++++++++++++++ .../lib/oeqa/runtime/cases/selftest.json | 6 +++ .../lib/oeqa/runtime/cases/selftest.py | 31 ++++++++++++++ .../lib/oeqa/selftest/cases/external-layer.py | 16 ++++++++ poky/meta-selftest/lib/recipetool/bbpath.py | 41 +++++++++++++++++++ 8 files changed, 196 insertions(+) create mode 100644 poky/meta-selftest/lib/devtool/__init__.py create mode 100644 poky/meta-selftest/lib/devtool/bbpath.py create mode 100644 poky/meta-selftest/lib/devtool/test.py create mode 100644 poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py create mode 100644 poky/meta-selftest/lib/oeqa/runtime/cases/selftest.json create mode 100644 poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py create mode 100644 poky/meta-selftest/lib/oeqa/selftest/cases/external-layer.py create mode 100644 poky/meta-selftest/lib/recipetool/bbpath.py (limited to 'poky/meta-selftest/lib') diff --git a/poky/meta-selftest/lib/devtool/__init__.py b/poky/meta-selftest/lib/devtool/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/poky/meta-selftest/lib/devtool/bbpath.py b/poky/meta-selftest/lib/devtool/bbpath.py new file mode 100644 index 000000000..5e8ffb3af --- /dev/null +++ b/poky/meta-selftest/lib/devtool/bbpath.py @@ -0,0 +1,44 @@ +import argparse + +already_loaded = False +kept_context = None + +def plugin_name(filename): + return os.path.splitext(os.path.basename(filename))[0] + +def plugin_init(plugins): + global already_loaded + already_loaded = plugin_name(__file__) in (plugin_name(p.__name__) for p in plugins) + +def print_name(args, config, basepath, workspace): + print (__file__) + +def print_bbdir(args, config, basepath, workspace): + print (__file__.replace('/lib/devtool/bbpath.py','')) + +def print_registered(args, config, basepath, workspace): + global kept_context + print(kept_context.loaded) + +def multiloaded(args, config, basepath, workspace): + global already_loaded + print("yes" if already_loaded else "no") + +def register_commands(subparsers, context): + global kept_context + kept_context = context + if 'loaded' in context.__dict__: + context.loaded += 1 + else: + context.loaded = 1 + + def addparser(name, helptxt, func): + parser = subparsers.add_parser(name, help=helptxt, + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser.set_defaults(func=func) + return parser + + addparser('pluginfile', 'Print the filename of this plugin', print_name) + addparser('bbdir', 'Print the BBPATH directory of this plugin', print_bbdir) + addparser('count', 'How many times have this plugin been registered.', print_registered) + addparser('multiloaded', 'How many times have this plugin been initialized', multiloaded) diff --git a/poky/meta-selftest/lib/devtool/test.py b/poky/meta-selftest/lib/devtool/test.py new file mode 100644 index 000000000..31190f58e --- /dev/null +++ b/poky/meta-selftest/lib/devtool/test.py @@ -0,0 +1,11 @@ +import argparse + +def selftest_reverse(args, config, basepath, workspace): + """Reverse the value passed to verify the plugin is executing.""" + print(args.value[::-1]) + +def register_commands(subparsers, context): + parser_build = subparsers.add_parser('selftest-reverse', help='Reverse value (for selftest)', + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + parser_build.add_argument('value', help='Value to reverse') + parser_build.set_defaults(func=selftest_reverse) diff --git a/poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py b/poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py new file mode 100644 index 000000000..81c50ed97 --- /dev/null +++ b/poky/meta-selftest/lib/oeqa/runtime/cases/dnf_runtime.py @@ -0,0 +1,47 @@ +from oeqa.core.decorator.depends import OETestDepends +from oeqa.runtime.cases.dnf import DnfTest +from oeqa.utils.httpserver import HTTPService + +class DnfSelftest(DnfTest): + + @classmethod + def setUpClass(cls): + import tempfile + cls.temp_dir = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-") + cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-rootfs-repo'), + cls.tc.target.server_ip) + cls.repo_server.start() + + @classmethod + def tearDownClass(cls): + cls.repo_server.stop() + cls.temp_dir.cleanup() + + @OETestDepends(['dnf.DnfBasicTest.test_dnf_help']) + def test_verify_package_feeds(self): + """ + Summary: Check correct setting of PACKAGE_FEED_URIS var + Expected: 1. Feeds were correctly set for dnf + 2. Update recovers packages from host's repo + Author: Humberto Ibarra + Author: Alexander Kanavin + """ + # When we created an image, we had to supply fake ip and port + # for the feeds. Now we can patch the real ones into the config file. + temp_file = os.path.join(self.temp_dir.name, 'tmp.repo') + self.tc.target.copyFrom("/etc/yum.repos.d/oe-remote-repo.repo", temp_file) + fixed_config = open(temp_file, "r").read().replace("bogus_ip", self.tc.target.server_ip).replace("bogus_port", str(self.repo_server.port)) + with open(temp_file, "w") as f: + f.write(fixed_config) + self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo") + + import re + # Use '-y' for non-interactive mode: automatically import the feed signing key + output_makecache = self.dnf('-vy makecache') + self.assertTrue(re.match(r".*Failed to synchronize cache", output_makecache, re.DOTALL) is None, msg = "dnf makecache failed to synchronize repo: %s" %(output_makecache)) + self.assertTrue(re.match(r".*Metadata cache created", output_makecache, re.DOTALL) is not None, msg = "dnf makecache failed: %s" %(output_makecache)) + + output_repoinfo = self.dnf('-v repoinfo') + matchobj = re.match(r".*Repo-pkgs\s*:\s*(?P[0-9]+)", output_repoinfo, re.DOTALL) + self.assertTrue(matchobj is not None, msg = "Could not find the amount of packages in dnf repoinfo output: %s" %(output_repoinfo)) + self.assertTrue(int(matchobj.group('n_pkgs')) > 0, msg = "Amount of remote packages is not more than zero: %s\n" %(output_repoinfo)) diff --git a/poky/meta-selftest/lib/oeqa/runtime/cases/selftest.json b/poky/meta-selftest/lib/oeqa/runtime/cases/selftest.json new file mode 100644 index 000000000..e5ae46ecd --- /dev/null +++ b/poky/meta-selftest/lib/oeqa/runtime/cases/selftest.json @@ -0,0 +1,6 @@ +{ + "test_install_package": { + "pkg": "socat", + "rm": true + } +} diff --git a/poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py b/poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py new file mode 100644 index 000000000..19de74062 --- /dev/null +++ b/poky/meta-selftest/lib/oeqa/runtime/cases/selftest.py @@ -0,0 +1,31 @@ +from oeqa.runtime.case import OERuntimeTestCase +from oeqa.core.decorator.depends import OETestDepends + +class Selftest(OERuntimeTestCase): + + @OETestDepends(['ssh.SSHTest.test_ssh']) + def test_install_package(self): + """ + Summary: Check basic package installation functionality. + Expected: 1. Before the test socat must be installed using scp. + 2. After the test socat must be uninstalled using ssh. + This can't be checked in this test. + Product: oe-core + Author: Mariano Lopez + """ + + (status, output) = self.target.run("socat -V") + self.assertEqual(status, 0, msg="socat is not installed") + + @OETestDepends(['selftest.Selftest.test_install_package']) + def test_verify_uninstall(self): + """ + Summary: Check basic package installation functionality. + Expected: 1. test_install_package must uninstall socat. + This test is just to verify that. + Product: oe-core + Author: Mariano Lopez + """ + + (status, output) = self.target.run("socat -V") + self.assertNotEqual(status, 0, msg="socat is still installed") diff --git a/poky/meta-selftest/lib/oeqa/selftest/cases/external-layer.py b/poky/meta-selftest/lib/oeqa/selftest/cases/external-layer.py new file mode 100644 index 000000000..59b1afab7 --- /dev/null +++ b/poky/meta-selftest/lib/oeqa/selftest/cases/external-layer.py @@ -0,0 +1,16 @@ +#from oeqa.selftest.base import oeSelfTest +from oeqa.selftest.case import OESelftestTestCase +#from oeqa.utils.decorators import testcase + + +class ImportedTests(OESelftestTestCase): + + def test_unconditional_pass(self): + """ + Summary: Doesn't check anything, used to check import test from other layers. + Expected: 1. Pass unconditionally + Product: oe-core + Author: Mariano Lopez