mirror of
https://git.yoctoproject.org/poky
synced 2026-07-24 06:27:03 +00:00
639474140a
Use correct HTTPService parameters like apt.py when setting up the repo server. These work with qemu tun and slirp networking. Fixes test failure with slirp networking when executing testimage.bbclass selftests "oe-selftest -r runtime_test.TestImage". (From OE-Core rev: 68f0100b779bac1788818320f8aa64d79e3db3c2) Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> (cherry picked from commit 764424df2f4b6bf0e89fb20b4253a7601468f70d) Signed-off-by: Steve Sakoman <steve@sakoman.com>
52 lines
2.7 KiB
Python
52 lines
2.7 KiB
Python
from oeqa.core.decorator.depends import OETestDepends
|
|
from oeqa.runtime.cases.dnf import DnfTest
|
|
from oeqa.utils.httpserver import HTTPService
|
|
from oeqa.core.decorator.data import skipIfDataVar
|
|
|
|
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'),
|
|
'0.0.0.0', port=cls.tc.target.server_port,
|
|
logger=cls.tc.logger)
|
|
cls.repo_server.start()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.repo_server.stop()
|
|
cls.temp_dir.cleanup()
|
|
|
|
@OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
|
|
@skipIfDataVar('PACKAGE_FEED_URIS', None,
|
|
'Not suitable as PACKAGE_FEED_URIS is not set')
|
|
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 <humberto.ibarra.lopez@intel.com>
|
|
Author: Alexander Kanavin <alex.kanavin@gmail.com>
|
|
"""
|
|
# 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<n_pkgs>[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))
|