summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHumberto Ibarra <humberto.ibarra.lopez@intel.com>2017-06-05 12:19:34 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-06-09 17:12:13 +0100
commitf1812e090b32f8c1bb33e4f26a246e5fb5e49c13 (patch)
treea005389b4c3351e98fea976ce7bcf042c8dbe024
parent88aa35cdcdd43df418ca1e06143c13346a00bf77 (diff)
downloadpoky-f1812e090b32f8c1bb33e4f26a246e5fb5e49c13.tar.gz
runtime-test.py: Split different tests inside selftest.py
There were two completely different tests inside selftest.py, and the only reason for them to be together was that both needed the same mechanism to execute (run testimage from within selftest) This fixes the design issue and error-prone situation by separating these tests. In add a new module for dnf-runtime and also has an extra time added to running the tests, but it is minimal since the builds reuse data from previuous build. [YOCTO #11436] (From OE-Core rev: 2f6a506018973f0eaf1306555df3e74a3ab25680) Signed-off-by: Humberto Ibarra <humberto.ibarra.lopez@intel.com> Signed-off-by: Ross Burton <ross.burton@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta-selftest/lib/oeqa/runtime/cases/dnf-runtime.py42
-rw-r--r--meta-selftest/lib/oeqa/runtime/cases/selftest.py42
-rw-r--r--meta/lib/oeqa/selftest/cases/runtime_test.py20
3 files changed, 60 insertions, 44 deletions
diff --git a/meta-selftest/lib/oeqa/runtime/cases/dnf-runtime.py b/meta-selftest/lib/oeqa/runtime/cases/dnf-runtime.py
new file mode 100644
index 0000000000..123e7259f1
--- /dev/null
+++ b/meta-selftest/lib/oeqa/runtime/cases/dnf-runtime.py
@@ -0,0 +1,42 @@
1from oeqa.core.decorator.depends import OETestDepends
2from oeqa.runtime.cases.dnf import DnfTest
3from oeqa.utils.httpserver import HTTPService
4
5class DnfSelftest(DnfTest):
6
7 @classmethod
8 def setUpClass(cls):
9 cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-rootfs-repo'),
10 cls.tc.target.server_ip)
11 cls.repo_server.start()
12
13 @classmethod
14 def tearDownClass(cls):
15 cls.repo_server.stop()
16
17 @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
18 def test_verify_package_feeds(self):
19 """
20 Summary: Check correct setting of PACKAGE_FEED_URIS var
21 Expected: 1. Feeds were correctly set for dnf
22 2. Update recovers packages from host's repo
23 Author: Humberto Ibarra <humberto.ibarra.lopez@intel.com>
24 Author: Alexander Kanavin <alexander.kanavin@intel.com>
25 """
26 # When we created an image, we had to supply fake ip and port
27 # for the feeds. Now we can patch the real ones into the config file.
28 import tempfile
29 temp_file = tempfile.TemporaryDirectory(prefix="oeqa-remotefeeds-").name
30 self.tc.target.copyFrom("/etc/yum.repos.d/oe-remote-repo.repo", temp_file)
31 fixed_config = open(temp_file, "r").read().replace("bogus_ip", self.tc.target.server_ip).replace("bogus_port", str(self.repo_server.port))
32 open(temp_file, "w").write(fixed_config)
33 self.tc.target.copyTo(temp_file, "/etc/yum.repos.d/oe-remote-repo.repo")
34
35 import re
36 output_makecache = self.dnf('makecache')
37 self.assertTrue(re.match(r".*Metadata cache created", output_makecache, re.DOTALL) is not None, msg = "dnf makecache failed: %s" %(output_makecache))
38
39 output_repoinfo = self.dnf('repoinfo')
40 matchobj = re.match(r".*Repo-pkgs\s*:\s*(?P<n_pkgs>[0-9]+)", output_repoinfo, re.DOTALL)
41 self.assertTrue(matchobj is not None, msg = "Could not find the amount of packages in dnf repoinfo output: %s" %(output_repoinfo))
42 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/meta-selftest/lib/oeqa/runtime/cases/selftest.py b/meta-selftest/lib/oeqa/runtime/cases/selftest.py
index e4985a6edd..19de740623 100644
--- a/meta-selftest/lib/oeqa/runtime/cases/selftest.py
+++ b/meta-selftest/lib/oeqa/runtime/cases/selftest.py
@@ -1,7 +1,5 @@
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
5 3
6class Selftest(OERuntimeTestCase): 4class Selftest(OERuntimeTestCase):
7 5
@@ -31,43 +29,3 @@ class Selftest(OERuntimeTestCase):
31 29
32 (status, output) = self.target.run("socat -V") 30 (status, output) = self.target.run("socat -V")
33 self.assertNotEqual(status, 0, msg="socat is still installed") 31 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))
diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 9fec4d869b..2ac0a29761 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -109,16 +109,32 @@ class TestImage(OESelftestTestCase):
109 Summary: Check install packages functionality for testimage/testexport. 109 Summary: Check install packages functionality for testimage/testexport.
110 Expected: 1. Import tests from a directory other than meta. 110 Expected: 1. Import tests from a directory other than meta.
111 2. Check install/uninstall of socat. 111 2. Check install/uninstall of socat.
112 3. Check that remote package feeds can be accessed
113 Product: oe-core 112 Product: oe-core
114 Author: Mariano Lopez <mariano.lopez@intel.com> 113 Author: Mariano Lopez <mariano.lopez@intel.com>
115 Author: Alexander Kanavin <alexander.kanavin@intel.com>
116 """ 114 """
117 if get_bb_var('DISTRO') == 'poky-tiny': 115 if get_bb_var('DISTRO') == 'poky-tiny':
118 self.skipTest('core-image-full-cmdline not buildable for poky-tiny') 116 self.skipTest('core-image-full-cmdline not buildable for poky-tiny')
119 117
120 features = 'INHERIT += "testimage"\n' 118 features = 'INHERIT += "testimage"\n'
121 features += 'TEST_SUITES = "ping ssh selftest"\n' 119 features += 'TEST_SUITES = "ping ssh selftest"\n'
120 self.write_config(features)
121
122 # Build core-image-sato and testimage
123 bitbake('core-image-full-cmdline socat')
124 bitbake('-c testimage core-image-full-cmdline')
125
126 def test_testimage_dnf(self):
127 """
128 Summary: Check package feeds functionality for dnf
129 Expected: 1. Check that remote package feeds can be accessed
130 Product: oe-core
131 Author: Alexander Kanavin <alexander.kanavin@intel.com>
132 """
133 if get_bb_var('DISTRO') == 'poky-tiny':
134 self.skipTest('core-image-full-cmdline not buildable for poky-tiny')
135
136 features = 'INHERIT += "testimage"\n'
137 features += 'TEST_SUITES = "ping ssh dnf-runtime"\n'
122 # We don't yet know what the server ip and port will be - they will be patched 138 # We don't yet know what the server ip and port will be - they will be patched
123 # in at the start of the on-image test 139 # in at the start of the on-image test
124 features += 'PACKAGE_FEED_URIS = "http://bogus_ip:bogus_port"\n' 140 features += 'PACKAGE_FEED_URIS = "http://bogus_ip:bogus_port"\n'