summaryrefslogtreecommitdiffstats
path: root/meta-selftest/lib/oeqa
diff options
context:
space:
mode:
authorAlexander Kanavin <alexander.kanavin@linux.intel.com>2017-03-16 15:19:04 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-03-17 16:53:04 +0000
commit2b77735c72cb5100dbd850e79d4f639e82629842 (patch)
tree859dde4d0a69b2392ad36d8278dc92d1d8b23554 /meta-selftest/lib/oeqa
parentcb05db0d034494ab2dfba6797225d18ac7b6a105 (diff)
downloadpoky-2b77735c72cb5100dbd850e79d4f639e82629842.tar.gz
rpm: add support for remote package feeds via PACKAGE_FEED_URIS variable
I've used a previous patch (which was never merged) by Humberto Ibarra <humberto.ibarra.lopez@intel.com> as a model for how to do runtime testing of this feature (e.g. we need to boot an image, run dnf on it, and check that it is indeed able to access the remote repo over http). Here's his original commit message: ===== Testing that feeds specified with PACKAGE_FEED_URIS var are set correctly has two parts. First a build with this var set is required, and then smart update needs to be issued in the running taget. The previous is not a common selftest practice because this is a simple test, but requires building and running a specific image, which takes a lot of time. testimage is not a good fit either, since the images tested there do not have the PACKAGE_FEED_URIS var set. For this test, the runtime-test module is being used, which is a selftest module but runs a testimage command. The var and test environment were set in runtime-perf.py and the actual test is done in a new testcase added to meta-selftest layer. ===== [YOCTO #10872] (From OE-Core rev: 3a9e2fdef9316e24b52ce99ac355fc2b09786c72) Signed-off-by: Alexander Kanavin <alexander.kanavin@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta-selftest/lib/oeqa')
-rw-r--r--meta-selftest/lib/oeqa/runtime/cases/selftest.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/meta-selftest/lib/oeqa/runtime/cases/selftest.py b/meta-selftest/lib/oeqa/runtime/cases/selftest.py
index 19de740623..e4985a6edd 100644
--- a/meta-selftest/lib/oeqa/runtime/cases/selftest.py
+++ b/meta-selftest/lib/oeqa/runtime/cases/selftest.py
@@ -1,5 +1,7 @@
1from oeqa.runtime.case import OERuntimeTestCase 1from oeqa.runtime.case import OERuntimeTestCase
2from oeqa.core.decorator.depends import OETestDepends 2from oeqa.core.decorator.depends import OETestDepends
3from oeqa.runtime.cases.dnf import DnfTest
4from oeqa.utils.httpserver import HTTPService
3 5
4class Selftest(OERuntimeTestCase): 6class Selftest(OERuntimeTestCase):
5 7
@@ -29,3 +31,43 @@ class Selftest(OERuntimeTestCase):
29 31
30 (status, output) = self.target.run("socat -V") 32 (status, output) = self.target.run("socat -V")
31 self.assertNotEqual(status, 0, msg="socat is still installed") 33 self.assertNotEqual(status, 0, msg="socat is still installed")
34
35
36class DnfSelftest(DnfTest):
37
38 @classmethod
39 def setUpClass(cls):
40 cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-rootfs-repo'),
41 cls.tc.target.server_ip)
42 cls.repo_server.start()
43
44 @classmethod
45 def tearDownClass(cls):
46 cls.repo_server.stop()
47
48 @OETestDepends(['ssh.SSHTest.test_ssh'])
49 def test_verify_package_feeds(self):
50 """
51 Summary: Check correct setting of PACKAGE_FEED_URIS var
52 Expected: 1. Feeds were correctly set for dnf
53 2. Update recovers packages from host's repo
54 Author: Humberto Ibarra <humberto.ibarra.lopez@intel.com>
55 Author: Alexander Kanavin <alexander.kanavin@intel.com>
56 """
57 # When we created an image, we had to supply fake ip and port
58 # for the feeds. Now we can patch the real ones into the config file.
59 import tempfile
60 temp_file = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-").name
61 self.tc.target.copyFrom("/etc/yum.repos.d/oe-remote-repo.repo", temp_file)
62 fixed_config = open(temp_file, "r").read().replace("bogus_ip", self.tc.target.server_ip).replace("bogus_port", str(self.repo_server.port))
63 open(temp_file, "w").write(fixed_config)
64 self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo")
65
66 import re
67 output_makecache = self.dnf('makecache')
68 self.assertTrue(re.match(r".*Metadata cache created", output_makecache, re.DOTALL) is not None, msg = "dnf makecache failed: %s" %(output_makecache))
69
70 output_repoinfo = self.dnf('repoinfo')
71 matchobj = re.match(r".*Repo-pkgs\s*:\s*(?P<n_pkgs>[0-9]+)", output_repoinfo, re.DOTALL)
72 self.assertTrue(matchobj is not None, msg = "Could not find the amount of packages in dnf repoinfo output: %s" %(output_repoinfo))
73 self.assertTrue(int(matchobj.group('n_pkgs')) > 0, msg = "Amount of remote packages is not more than zero: %s\n" %(output_repoinfo))