All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] oeqa/runtime/dnf: streamline test case
@ 2022-09-23 15:48 Ross Burton
  2022-09-25 21:32 ` [OE-core] " Alexandre Belloni
  0 siblings, 1 reply; 2+ messages in thread
From: Ross Burton @ 2022-09-23 15:48 UTC (permalink / raw)
  To: openembedded-core; +Cc: nd

The DNF test case exercises a lot of functionality that we don't really
care about in the runtime QA: we mainly care that DNF is capable of
connecting to a remote repository and installing a package.
Specifically, we don't need to exercise so many different ways of
installing or the installroot functionality: if an image has been built
then it's clearly functional.

Also, change the package that we install/reinstall to netbase and
friends from run-postinsts, as run-postinsts has non-trivial
side-effects such as causing systemd to reload, which might be causing
issues for other tests being ran.

[ YOCTO #14787 ], hopefully

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 meta/classes-recipe/testimage.bbclass |   6 +-
 meta/lib/oeqa/runtime/cases/dnf.py    | 182 +++++---------------------
 2 files changed, 34 insertions(+), 154 deletions(-)

diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
index 819c7d2bf4c..d53f1a3d6f1 100644
--- a/meta/classes-recipe/testimage.bbclass
+++ b/meta/classes-recipe/testimage.bbclass
@@ -468,10 +468,8 @@ def create_rpm_index(d):
         package_list = glob.glob(idx_path + "*/*.rpm")
 
         for pkg in package_list:
-            if os.path.basename(pkg).startswith(("curl-ptest")):
-                bb.utils.remove(pkg)
-
-            if not os.path.basename(pkg).startswith(("rpm", "run-postinsts", "busybox", "bash", "update-alternatives", "libc6", "curl", "musl")):
+            basename = os.path.basename(pkg)
+            if basename.startswith("curl-ptest") or not basename.startswith("curl"):
                 bb.utils.remove(pkg)
 
         bb.utils.unlockfile(lf)
diff --git a/meta/lib/oeqa/runtime/cases/dnf.py b/meta/lib/oeqa/runtime/cases/dnf.py
index e0b91090b20..ef8bebfec0e 100644
--- a/meta/lib/oeqa/runtime/cases/dnf.py
+++ b/meta/lib/oeqa/runtime/cases/dnf.py
@@ -5,53 +5,14 @@
 #
 
 import os
-import re
-import subprocess
 from oeqa.utils.httpserver import HTTPService
 
 from oeqa.runtime.case import OERuntimeTestCase
 from oeqa.core.decorator.depends import OETestDepends
-from oeqa.core.decorator.data import skipIfNotDataVar, skipIfNotFeature, skipIfInDataVar, skipIfNotInDataVar
+from oeqa.core.decorator.data import skipIfNotDataVar, skipIfNotFeature
 from oeqa.runtime.decorator.package import OEHasPackage
 
 class DnfTest(OERuntimeTestCase):
-
-    def dnf(self, command, expected = 0):
-        command = 'dnf %s' % command
-        status, output = self.target.run(command, 1500)
-        message = os.linesep.join([command, output])
-        self.assertEqual(status, expected, message)
-        return output
-
-class DnfBasicTest(DnfTest):
-
-    @skipIfNotFeature('package-management',
-                      'Test requires package-management to be in IMAGE_FEATURES')
-    @skipIfNotDataVar('IMAGE_PKGTYPE', 'rpm',
-                      'RPM is not the primary package manager')
-    @OEHasPackage(['dnf'])
-    @OETestDepends(['ssh.SSHTest.test_ssh'])
-    def test_dnf_help(self):
-        self.dnf('--help')
-
-    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
-    def test_dnf_version(self):
-        self.dnf('--version')
-
-    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
-    def test_dnf_info(self):
-        self.dnf('info dnf')
-
-    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
-    def test_dnf_search(self):
-        self.dnf('search dnf')
-
-    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
-    def test_dnf_history(self):
-        self.dnf('history')
-
-class DnfRepoTest(DnfTest):
-
     @classmethod
     def setUpClass(cls):
         cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'),
@@ -63,6 +24,13 @@ class DnfRepoTest(DnfTest):
     def tearDownClass(cls):
         cls.repo_server.stop()
 
+    def dnf(self, command, expected = 0):
+        command = 'dnf %s' % command
+        status, output = self.target.run(command, 1500)
+        message = os.linesep.join([command, output])
+        self.assertEqual(status, expected, message)
+        return output
+
     def dnf_with_repo(self, command):
         pkgarchs = os.listdir(os.path.join(self.tc.td['WORKDIR'], 'oe-testimage-repo'))
         deploy_url = 'http://%s:%s/' %(self.target.server_ip, self.repo_server.port)
@@ -71,123 +39,37 @@ class DnfRepoTest(DnfTest):
         output = self.dnf(" ".join(cmdlinerepoopts) + " --nogpgcheck " + command)
         return output
 
-    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
+    @skipIfNotFeature('package-management',
+                      'Test requires package-management to be in IMAGE_FEATURES')
+    @skipIfNotDataVar('IMAGE_PKGTYPE', 'rpm',
+                      'RPM is not the primary package manager')
+    @OEHasPackage(['dnf'])
+    @OETestDepends(['ssh.SSHTest.test_ssh'])
+    def test_dnf_help(self):
+        self.dnf('--help')
+
+    @OETestDepends(['dnf.DnfTest.test_dnf_help'])
     def test_dnf_makecache(self):
         self.dnf_with_repo('makecache')
 
-
-# Does not work when repo is specified on the command line
-#    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
-#    def test_dnf_repolist(self):
-#        self.dnf_with_repo('repolist')
-
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
+    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
     def test_dnf_repoinfo(self):
-        self.dnf_with_repo('repoinfo')
+        output = self.dnf_with_repo('repoinfo')
+        self.assertIn("Added oe-testimage-repo-noarch", output)
 
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
+    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
     def test_dnf_install(self):
-        output = self.dnf_with_repo('list run-postinsts-dev')
-        if 'Installed Packages' in output:
-            self.dnf_with_repo('remove -y run-postinsts-dev')
-        self.dnf_with_repo('install -y run-postinsts-dev')
+        self.dnf_with_repo('remove -y curl-dev')
+        self.dnf_with_repo('install -y curl-dev')
 
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install'])
-    def test_dnf_install_dependency(self):
-        self.dnf_with_repo('remove -y run-postinsts')
-        self.dnf_with_repo('install -y run-postinsts-dev')
-
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install_dependency'])
-    def test_dnf_install_from_disk(self):
-        self.dnf_with_repo('remove -y run-postinsts-dev')
-        self.dnf_with_repo('install -y --downloadonly run-postinsts-dev')
-        status, output = self.target.run('find /var/cache/dnf -name run-postinsts-dev*rpm', 1500)
-        self.assertEqual(status, 0, output)
-        self.dnf_with_repo('install -y %s' % output)
-
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install_from_disk'])
-    def test_dnf_install_from_http(self):
-        output = subprocess.check_output('%s %s -name run-postinsts-dev*' % (bb.utils.which(os.getenv('PATH'), "find"),
-                                                                           os.path.join(self.tc.td['WORKDIR'], 'oe-testimage-repo')), shell=True).decode("utf-8")
-        rpm_path = output.split("/")[-2] + "/" + output.split("/")[-1]
-        url = 'http://%s:%s/%s' %(self.target.server_ip, self.repo_server.port, rpm_path)
-        self.dnf_with_repo('remove -y run-postinsts-dev')
-        self.dnf_with_repo('install -y %s' % url)
-
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install'])
+    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
     def test_dnf_reinstall(self):
-        self.dnf_with_repo('reinstall -y run-postinsts-dev')
-
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
-    @skipIfInDataVar('DISTRO_FEATURES', 'usrmerge', 'Test run when not enable usrmerge')
-    @OEHasPackage('busybox')
-    def test_dnf_installroot(self):
-        rootpath = '/home/root/chroot/test'
-        #Copy necessary files to avoid errors with not yet installed tools on
-        #installroot directory.
-        self.target.run('mkdir -p %s/etc' % rootpath, 1500)
-        self.target.run('mkdir -p %s/bin %s/sbin %s/usr/bin %s/usr/sbin' % (rootpath, rootpath, rootpath, rootpath), 1500)
-        self.target.run('mkdir -p %s/dev' % rootpath, 1500)
-        #Handle different architectures lib dirs
-        self.target.run('mkdir -p %s/lib' % rootpath, 1500)
-        self.target.run('mkdir -p %s/libx32' % rootpath, 1500)
-        self.target.run('mkdir -p %s/lib64' % rootpath, 1500)
-        self.target.run('cp /lib/libtinfo.so.5 %s/lib' % rootpath, 1500)
-        self.target.run('cp /libx32/libtinfo.so.5 %s/libx32' % rootpath, 1500)
-        self.target.run('cp /lib64/libtinfo.so.5 %s/lib64' % rootpath, 1500)
-        self.target.run('cp -r /etc/rpm %s/etc' % rootpath, 1500)
-        self.target.run('cp -r /etc/dnf %s/etc' % rootpath, 1500)
-        self.target.run('cp /bin/sh %s/bin' % rootpath, 1500)
-        self.target.run('mount -o bind /dev %s/dev/' % rootpath, 1500)
-        self.dnf_with_repo('install --installroot=%s -v -y --rpmverbosity=debug busybox run-postinsts' % rootpath)
-        status, output = self.target.run('test -e %s/var/cache/dnf' % rootpath, 1500)
-        self.assertEqual(0, status, output)
-        status, output = self.target.run('test -e %s/bin/busybox' % rootpath, 1500)
-        self.assertEqual(0, status, output)
-
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
-    @skipIfNotInDataVar('DISTRO_FEATURES', 'usrmerge', 'Test run when enable usrmerge')
-    @OEHasPackage('busybox')
-    def test_dnf_installroot_usrmerge(self):
-        rootpath = '/home/root/chroot/test'
-        #Copy necessary files to avoid errors with not yet installed tools on
-        #installroot directory.
-        self.target.run('mkdir -p %s/etc' % rootpath, 1500)
-        self.target.run('mkdir -p %s/usr/bin %s/usr/sbin' % (rootpath, rootpath), 1500)
-        self.target.run('ln -sf -r %s/usr/bin %s/bin'  % (rootpath, rootpath), 1500)
-        self.target.run('ln -sf -r %s/usr/sbin %s/sbin'  % (rootpath, rootpath), 1500)
-        self.target.run('mkdir -p %s/dev' % rootpath, 1500)
-        #Handle different architectures lib dirs
-        self.target.run('mkdir -p %s/usr/lib' % rootpath, 1500)
-        self.target.run('mkdir -p %s/usr/libx32' % rootpath, 1500)
-        self.target.run('mkdir -p %s/usr/lib64' % rootpath, 1500)
-        self.target.run('cp /lib/libtinfo.so.5 %s/usr/lib' % rootpath, 1500)
-        self.target.run('cp /libx32/libtinfo.so.5 %s/usr/libx32' % rootpath, 1500)
-        self.target.run('cp /lib64/libtinfo.so.5 %s/usr/lib64' % rootpath, 1500)
-        self.target.run('ln -sf -r %s/lib %s/usr/lib' % (rootpath,rootpath), 1500)
-        self.target.run('ln -sf -r %s/libx32 %s/usr/libx32' % (rootpath,rootpath), 1500)
-        self.target.run('ln -sf -r %s/lib64 %s/usr/lib64' % (rootpath,rootpath), 1500)
-        self.target.run('cp -r /etc/rpm %s/etc' % rootpath, 1500)
-        self.target.run('cp -r /etc/dnf %s/etc' % rootpath, 1500)
-        self.target.run('cp /bin/sh %s/bin' % rootpath, 1500)
-        self.target.run('mount -o bind /dev %s/dev/' % rootpath, 1500)
-        self.dnf_with_repo('install --installroot=%s -v -y --rpmverbosity=debug busybox run-postinsts' % rootpath)
-        status, output = self.target.run('test -e %s/var/cache/dnf' % rootpath, 1500)
-        self.assertEqual(0, status, output)
-        status, output = self.target.run('test -e %s/bin/busybox' % rootpath, 1500)
-        self.assertEqual(0, status, output)
+        self.dnf_with_repo('reinstall -y curl')
 
-    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
+    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
     def test_dnf_exclude(self):
-        excludepkg = 'curl-dev'
-        self.dnf_with_repo('install -y curl*')
-        self.dnf('list %s' % excludepkg, 0)
-        #Avoid remove dependencies to skip some errors on different archs and images
-        self.dnf_with_repo('remove --setopt=clean_requirements_on_remove=0 -y curl*')
-        #check curl-dev is not installed adter removing all curl occurrences
-        status, output = self.target.run('dnf list --installed | grep %s'% excludepkg, 1500)
-        self.assertEqual(1, status, "%s was not removed,  is listed as installed"%excludepkg)
-        self.dnf_with_repo('install -y --exclude=%s --exclude=curl-staticdev curl*' % excludepkg)
-        #check curl-dev is not installed after being excluded
-        status, output = self.target.run('dnf list --installed | grep %s'% excludepkg , 1500)
-        self.assertEqual(1, status, "%s was not excluded, is listed as installed"%excludepkg)
+        self.dnf_with_repo('remove -y curl-dev')
+        self.dnf_with_repo('install -y --exclude=curl-dev curl*')
+        output = self.dnf('list --installed curl*')
+        self.assertIn("curl.", output)
+        self.assertNotIn("curl-dev.", output)
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [OE-core] [PATCH] oeqa/runtime/dnf: streamline test case
  2022-09-23 15:48 [PATCH] oeqa/runtime/dnf: streamline test case Ross Burton
@ 2022-09-25 21:32 ` Alexandre Belloni
  0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Belloni @ 2022-09-25 21:32 UTC (permalink / raw)
  To: Ross Burton; +Cc: openembedded-core, nd

Hi,

On 23/09/2022 16:48:10+0100, Ross Burton wrote:
> The DNF test case exercises a lot of functionality that we don't really
> care about in the runtime QA: we mainly care that DNF is capable of
> connecting to a remote repository and installing a package.
> Specifically, we don't need to exercise so many different ways of
> installing or the installroot functionality: if an image has been built
> then it's clearly functional.
> 
> Also, change the package that we install/reinstall to netbase and
> friends from run-postinsts, as run-postinsts has non-trivial
> side-effects such as causing systemd to reload, which might be causing
> issues for other tests being ran.
> 
> [ YOCTO #14787 ], hopefully
> 

This is the cause of https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/4168/steps/14/logs/stdio

> Signed-off-by: Ross Burton <ross.burton@arm.com>
> ---
>  meta/classes-recipe/testimage.bbclass |   6 +-
>  meta/lib/oeqa/runtime/cases/dnf.py    | 182 +++++---------------------
>  2 files changed, 34 insertions(+), 154 deletions(-)
> 
> diff --git a/meta/classes-recipe/testimage.bbclass b/meta/classes-recipe/testimage.bbclass
> index 819c7d2bf4c..d53f1a3d6f1 100644
> --- a/meta/classes-recipe/testimage.bbclass
> +++ b/meta/classes-recipe/testimage.bbclass
> @@ -468,10 +468,8 @@ def create_rpm_index(d):
>          package_list = glob.glob(idx_path + "*/*.rpm")
>  
>          for pkg in package_list:
> -            if os.path.basename(pkg).startswith(("curl-ptest")):
> -                bb.utils.remove(pkg)
> -
> -            if not os.path.basename(pkg).startswith(("rpm", "run-postinsts", "busybox", "bash", "update-alternatives", "libc6", "curl", "musl")):
> +            basename = os.path.basename(pkg)
> +            if basename.startswith("curl-ptest") or not basename.startswith("curl"):
>                  bb.utils.remove(pkg)
>  
>          bb.utils.unlockfile(lf)
> diff --git a/meta/lib/oeqa/runtime/cases/dnf.py b/meta/lib/oeqa/runtime/cases/dnf.py
> index e0b91090b20..ef8bebfec0e 100644
> --- a/meta/lib/oeqa/runtime/cases/dnf.py
> +++ b/meta/lib/oeqa/runtime/cases/dnf.py
> @@ -5,53 +5,14 @@
>  #
>  
>  import os
> -import re
> -import subprocess
>  from oeqa.utils.httpserver import HTTPService
>  
>  from oeqa.runtime.case import OERuntimeTestCase
>  from oeqa.core.decorator.depends import OETestDepends
> -from oeqa.core.decorator.data import skipIfNotDataVar, skipIfNotFeature, skipIfInDataVar, skipIfNotInDataVar
> +from oeqa.core.decorator.data import skipIfNotDataVar, skipIfNotFeature
>  from oeqa.runtime.decorator.package import OEHasPackage
>  
>  class DnfTest(OERuntimeTestCase):
> -
> -    def dnf(self, command, expected = 0):
> -        command = 'dnf %s' % command
> -        status, output = self.target.run(command, 1500)
> -        message = os.linesep.join([command, output])
> -        self.assertEqual(status, expected, message)
> -        return output
> -
> -class DnfBasicTest(DnfTest):
> -
> -    @skipIfNotFeature('package-management',
> -                      'Test requires package-management to be in IMAGE_FEATURES')
> -    @skipIfNotDataVar('IMAGE_PKGTYPE', 'rpm',
> -                      'RPM is not the primary package manager')
> -    @OEHasPackage(['dnf'])
> -    @OETestDepends(['ssh.SSHTest.test_ssh'])
> -    def test_dnf_help(self):
> -        self.dnf('--help')
> -
> -    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
> -    def test_dnf_version(self):
> -        self.dnf('--version')
> -
> -    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
> -    def test_dnf_info(self):
> -        self.dnf('info dnf')
> -
> -    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
> -    def test_dnf_search(self):
> -        self.dnf('search dnf')
> -
> -    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
> -    def test_dnf_history(self):
> -        self.dnf('history')
> -
> -class DnfRepoTest(DnfTest):
> -
>      @classmethod
>      def setUpClass(cls):
>          cls.repo_server = HTTPService(os.path.join(cls.tc.td['WORKDIR'], 'oe-testimage-repo'),
> @@ -63,6 +24,13 @@ class DnfRepoTest(DnfTest):
>      def tearDownClass(cls):
>          cls.repo_server.stop()
>  
> +    def dnf(self, command, expected = 0):
> +        command = 'dnf %s' % command
> +        status, output = self.target.run(command, 1500)
> +        message = os.linesep.join([command, output])
> +        self.assertEqual(status, expected, message)
> +        return output
> +
>      def dnf_with_repo(self, command):
>          pkgarchs = os.listdir(os.path.join(self.tc.td['WORKDIR'], 'oe-testimage-repo'))
>          deploy_url = 'http://%s:%s/' %(self.target.server_ip, self.repo_server.port)
> @@ -71,123 +39,37 @@ class DnfRepoTest(DnfTest):
>          output = self.dnf(" ".join(cmdlinerepoopts) + " --nogpgcheck " + command)
>          return output
>  
> -    @OETestDepends(['dnf.DnfBasicTest.test_dnf_help'])
> +    @skipIfNotFeature('package-management',
> +                      'Test requires package-management to be in IMAGE_FEATURES')
> +    @skipIfNotDataVar('IMAGE_PKGTYPE', 'rpm',
> +                      'RPM is not the primary package manager')
> +    @OEHasPackage(['dnf'])
> +    @OETestDepends(['ssh.SSHTest.test_ssh'])
> +    def test_dnf_help(self):
> +        self.dnf('--help')
> +
> +    @OETestDepends(['dnf.DnfTest.test_dnf_help'])
>      def test_dnf_makecache(self):
>          self.dnf_with_repo('makecache')
>  
> -
> -# Does not work when repo is specified on the command line
> -#    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
> -#    def test_dnf_repolist(self):
> -#        self.dnf_with_repo('repolist')
> -
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
> +    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
>      def test_dnf_repoinfo(self):
> -        self.dnf_with_repo('repoinfo')
> +        output = self.dnf_with_repo('repoinfo')
> +        self.assertIn("Added oe-testimage-repo-noarch", output)
>  
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
> +    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
>      def test_dnf_install(self):
> -        output = self.dnf_with_repo('list run-postinsts-dev')
> -        if 'Installed Packages' in output:
> -            self.dnf_with_repo('remove -y run-postinsts-dev')
> -        self.dnf_with_repo('install -y run-postinsts-dev')
> +        self.dnf_with_repo('remove -y curl-dev')
> +        self.dnf_with_repo('install -y curl-dev')
>  
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install'])
> -    def test_dnf_install_dependency(self):
> -        self.dnf_with_repo('remove -y run-postinsts')
> -        self.dnf_with_repo('install -y run-postinsts-dev')
> -
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install_dependency'])
> -    def test_dnf_install_from_disk(self):
> -        self.dnf_with_repo('remove -y run-postinsts-dev')
> -        self.dnf_with_repo('install -y --downloadonly run-postinsts-dev')
> -        status, output = self.target.run('find /var/cache/dnf -name run-postinsts-dev*rpm', 1500)
> -        self.assertEqual(status, 0, output)
> -        self.dnf_with_repo('install -y %s' % output)
> -
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install_from_disk'])
> -    def test_dnf_install_from_http(self):
> -        output = subprocess.check_output('%s %s -name run-postinsts-dev*' % (bb.utils.which(os.getenv('PATH'), "find"),
> -                                                                           os.path.join(self.tc.td['WORKDIR'], 'oe-testimage-repo')), shell=True).decode("utf-8")
> -        rpm_path = output.split("/")[-2] + "/" + output.split("/")[-1]
> -        url = 'http://%s:%s/%s' %(self.target.server_ip, self.repo_server.port, rpm_path)
> -        self.dnf_with_repo('remove -y run-postinsts-dev')
> -        self.dnf_with_repo('install -y %s' % url)
> -
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_install'])
> +    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
>      def test_dnf_reinstall(self):
> -        self.dnf_with_repo('reinstall -y run-postinsts-dev')
> -
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
> -    @skipIfInDataVar('DISTRO_FEATURES', 'usrmerge', 'Test run when not enable usrmerge')
> -    @OEHasPackage('busybox')
> -    def test_dnf_installroot(self):
> -        rootpath = '/home/root/chroot/test'
> -        #Copy necessary files to avoid errors with not yet installed tools on
> -        #installroot directory.
> -        self.target.run('mkdir -p %s/etc' % rootpath, 1500)
> -        self.target.run('mkdir -p %s/bin %s/sbin %s/usr/bin %s/usr/sbin' % (rootpath, rootpath, rootpath, rootpath), 1500)
> -        self.target.run('mkdir -p %s/dev' % rootpath, 1500)
> -        #Handle different architectures lib dirs
> -        self.target.run('mkdir -p %s/lib' % rootpath, 1500)
> -        self.target.run('mkdir -p %s/libx32' % rootpath, 1500)
> -        self.target.run('mkdir -p %s/lib64' % rootpath, 1500)
> -        self.target.run('cp /lib/libtinfo.so.5 %s/lib' % rootpath, 1500)
> -        self.target.run('cp /libx32/libtinfo.so.5 %s/libx32' % rootpath, 1500)
> -        self.target.run('cp /lib64/libtinfo.so.5 %s/lib64' % rootpath, 1500)
> -        self.target.run('cp -r /etc/rpm %s/etc' % rootpath, 1500)
> -        self.target.run('cp -r /etc/dnf %s/etc' % rootpath, 1500)
> -        self.target.run('cp /bin/sh %s/bin' % rootpath, 1500)
> -        self.target.run('mount -o bind /dev %s/dev/' % rootpath, 1500)
> -        self.dnf_with_repo('install --installroot=%s -v -y --rpmverbosity=debug busybox run-postinsts' % rootpath)
> -        status, output = self.target.run('test -e %s/var/cache/dnf' % rootpath, 1500)
> -        self.assertEqual(0, status, output)
> -        status, output = self.target.run('test -e %s/bin/busybox' % rootpath, 1500)
> -        self.assertEqual(0, status, output)
> -
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
> -    @skipIfNotInDataVar('DISTRO_FEATURES', 'usrmerge', 'Test run when enable usrmerge')
> -    @OEHasPackage('busybox')
> -    def test_dnf_installroot_usrmerge(self):
> -        rootpath = '/home/root/chroot/test'
> -        #Copy necessary files to avoid errors with not yet installed tools on
> -        #installroot directory.
> -        self.target.run('mkdir -p %s/etc' % rootpath, 1500)
> -        self.target.run('mkdir -p %s/usr/bin %s/usr/sbin' % (rootpath, rootpath), 1500)
> -        self.target.run('ln -sf -r %s/usr/bin %s/bin'  % (rootpath, rootpath), 1500)
> -        self.target.run('ln -sf -r %s/usr/sbin %s/sbin'  % (rootpath, rootpath), 1500)
> -        self.target.run('mkdir -p %s/dev' % rootpath, 1500)
> -        #Handle different architectures lib dirs
> -        self.target.run('mkdir -p %s/usr/lib' % rootpath, 1500)
> -        self.target.run('mkdir -p %s/usr/libx32' % rootpath, 1500)
> -        self.target.run('mkdir -p %s/usr/lib64' % rootpath, 1500)
> -        self.target.run('cp /lib/libtinfo.so.5 %s/usr/lib' % rootpath, 1500)
> -        self.target.run('cp /libx32/libtinfo.so.5 %s/usr/libx32' % rootpath, 1500)
> -        self.target.run('cp /lib64/libtinfo.so.5 %s/usr/lib64' % rootpath, 1500)
> -        self.target.run('ln -sf -r %s/lib %s/usr/lib' % (rootpath,rootpath), 1500)
> -        self.target.run('ln -sf -r %s/libx32 %s/usr/libx32' % (rootpath,rootpath), 1500)
> -        self.target.run('ln -sf -r %s/lib64 %s/usr/lib64' % (rootpath,rootpath), 1500)
> -        self.target.run('cp -r /etc/rpm %s/etc' % rootpath, 1500)
> -        self.target.run('cp -r /etc/dnf %s/etc' % rootpath, 1500)
> -        self.target.run('cp /bin/sh %s/bin' % rootpath, 1500)
> -        self.target.run('mount -o bind /dev %s/dev/' % rootpath, 1500)
> -        self.dnf_with_repo('install --installroot=%s -v -y --rpmverbosity=debug busybox run-postinsts' % rootpath)
> -        status, output = self.target.run('test -e %s/var/cache/dnf' % rootpath, 1500)
> -        self.assertEqual(0, status, output)
> -        status, output = self.target.run('test -e %s/bin/busybox' % rootpath, 1500)
> -        self.assertEqual(0, status, output)
> +        self.dnf_with_repo('reinstall -y curl')
>  
> -    @OETestDepends(['dnf.DnfRepoTest.test_dnf_makecache'])
> +    @OETestDepends(['dnf.DnfTest.test_dnf_makecache'])
>      def test_dnf_exclude(self):
> -        excludepkg = 'curl-dev'
> -        self.dnf_with_repo('install -y curl*')
> -        self.dnf('list %s' % excludepkg, 0)
> -        #Avoid remove dependencies to skip some errors on different archs and images
> -        self.dnf_with_repo('remove --setopt=clean_requirements_on_remove=0 -y curl*')
> -        #check curl-dev is not installed adter removing all curl occurrences
> -        status, output = self.target.run('dnf list --installed | grep %s'% excludepkg, 1500)
> -        self.assertEqual(1, status, "%s was not removed,  is listed as installed"%excludepkg)
> -        self.dnf_with_repo('install -y --exclude=%s --exclude=curl-staticdev curl*' % excludepkg)
> -        #check curl-dev is not installed after being excluded
> -        status, output = self.target.run('dnf list --installed | grep %s'% excludepkg , 1500)
> -        self.assertEqual(1, status, "%s was not excluded, is listed as installed"%excludepkg)
> +        self.dnf_with_repo('remove -y curl-dev')
> +        self.dnf_with_repo('install -y --exclude=curl-dev curl*')
> +        output = self.dnf('list --installed curl*')
> +        self.assertIn("curl.", output)
> +        self.assertNotIn("curl-dev.", output)
> -- 
> 2.34.1
> 

> 
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#171000): https://lists.openembedded.org/g/openembedded-core/message/171000
> Mute This Topic: https://lists.openembedded.org/mt/93872994/3617179
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alexandre.belloni@bootlin.com]
> -=-=-=-=-=-=-=-=-=-=-=-
> 


-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-25 21:33 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-23 15:48 [PATCH] oeqa/runtime/dnf: streamline test case Ross Burton
2022-09-25 21:32 ` [OE-core] " Alexandre Belloni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.