Skip to contentSkip to conversation

selftest/runtime-test.py: Add test to check PACKAGE_FEED_URIS var

PATCH In review Humberto Ibarra 2 participants 2 messages Feb 20, 2017 – Feb 23, 2017 1 message not in the archive

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH 1/1 selftest/runtime-test.py: Add test to check PACKAGE_FEED_URIS var

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]

---
 meta-selftest/lib/oeqa/runtime/cases/selftest.py | 32 ++++++++++++++++++++++++
 meta/lib/oeqa/selftest/runtime-test.py           |  3 +++
 2 files changed, 35 insertions(+)
meta-selftest/lib/oeqa/runtime/cases/selftest.py +32 -0
index 329470f..e49d028 100644
@@ -1,5 +1,8 @@
+from oeqa.utils.httpserver import HTTPService
+
 from oeqa.runtime.case import OERuntimeTestCase
 from oeqa.core.decorator.depends import OETestDepends
+from oeqa.runtime.cases.smart import SmartTest
 
 class Selftest(OERuntimeTestCase):
 
@@ -29,3 +32,32 @@ class Selftest(OERuntimeTestCase):
 
         (status, output) = self.target.run("socat -V")
         self.assertNotEqual(status, 0, msg="socat is still installed")
+
+class SmartSelftest(SmartTest):
+
+    @classmethod
+    def setUpClass(cls):
+        cls.repolist = []
+        cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'rpms'),
+                                      cls.tc.target.server_ip)
+        cls.repo_server.port = 8080
+        cls.repo_server.start()
+
+    @classmethod
+    def tearDownClass(cls):
+        cls.repo_server.stop()
+        for repo in cls.repolist:
+            cls.tc.target.run('smart channel -y --remove %s' % repo)
+
+    @OETestDepends(['ssh.SSHTest.test_ssh'])
+    def test_verify_package_feeds(self):
+        """
+        Summary: Check correct setting of PACKAGE_FEED_URIS var
+        Expected: 1. Feeds were correctly set for smart
+                  2. Update recovers packages from host's repo
+        Author: Humberto Ibarra <[email protected]>
+        """
+        output = self.smart('update')
+        import re
+        new_pkgs = re.match(r".*Channels have [0-9]+ new packages", output, re.DOTALL)
+        self.assertTrue(new_pkgs is not None, msg = "couldn't update packages")
meta/lib/oeqa/selftest/runtime-test.py +3 -0
index 52e5b27..d96290e 100644
@@ -111,6 +111,9 @@ class TestImage(oeSelfTest):
 
         features = 'INHERIT += "testimage"\n'
         features += 'TEST_SUITES = "ping ssh selftest"\n'
+        features += 'PACKAGE_FEED_URIS = "http://192.168.7.1:8080"\n'
+        features += 'EXTRA_IMAGE_FEATURES += "package-management"\n'
+        features += 'PACKAGE_CLASSES = "package_rpm"'
         self.write_config(features)
 
         # Build core-image-sato and testimage
Signature · 1 line
2.7.4
#2 lore raw
Quoted 3 lines · Humberto Ibarra
         features = 'INHERIT += "testimage"\n'
         features += 'TEST_SUITES = "ping ssh selftest"\n'

+ features += 'PACKAGE_FEED_URIS = "http://192.168.7.1:8080"\n'

Can you make the assumption that the IP address will be exactly this? I'm seeing various IP addresses in autobuilder logs when for example testimages are being tested simultaneously, and they're not always 192.168.7.1.

Alex