Package: nvme-stas
Followup-For: Bug #1054533
User: [email protected]
Usertags: origin-ubuntu noble ubuntu-patch
Control: tags -1 patch
Dear Maintainer,
Several test cases in nvme-stas 2.3-1 were making the autopkgtest fail.
In Ubuntu, the attached patch was applied to achieve the following:
* Add Test-Depends on nvme-cli to fix the absence of /etc/nvme/host{nqn,id}
when running the test suite. (LP: #2043792)
- This is only a workaround for autopkgtests. stafd can still fail with
the same error at runtime outside of autopkgtests when configured with
an appropriate "controller =" directive.
* Fix failing test from mocked libnvme version. (LP: #2043792)
* Fix legacy Udev test failing when multiples IPv6 addresses are set.
(LP: #2043792)
Thanks for considering the patch.
-- System Information:
Debian Release: trixie/sid
APT prefers mantic-updates
APT policy: (500, 'mantic-updates'), (500, 'mantic-security'), (500, 'mantic')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.1.0-16-generic (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru nvme-stas-2.3/debian/patches/fix-test-libnvme-version.patch
nvme-stas-2.3/debian/patches/fix-test-libnvme-version.patch
--- nvme-stas-2.3/debian/patches/fix-test-libnvme-version.patch 1970-01-01
01:00:00.000000000 +0100
+++ nvme-stas-2.3/debian/patches/fix-test-libnvme-version.patch 2023-11-21
09:29:41.000000000 +0100
@@ -0,0 +1,52 @@
+Description: Fix mock libnvme test so it works in GitHub actions & autopkgtest
+ Different Python test frameworks manage Python processes differently
+ when running tests. When running `python3 -m unittest` for instance, it
+ looks like the same process executes all the tests. Therefore when one
+ test module T1 imports a module, the module is not re-imported if needed
+ by T2.
+ .
+ This causes issues with test-defs.py which tries to mock the libnvme
+ module. Indeed, when it is previously imported by staslib, the mocked
+ libnvme module does not get re-imported.
+ .
+ Fixed by removing staslib and staslib.defs from the imported modules
+ before executing the test.
+Author: Olivier Gayot <[email protected]>
+Origin: upstream,
https://github.com/linux-nvme/nvme-stas/commit/2efebdb4dec6d5a6341a577273a1ce7b57fe488c
+Bug-Ubuntu: https://launchpad.net/bugs/2043792
+Bug-Debian: https://bugs.debian.org/1054533
+Last-Update: 2023-11-27
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+--- a/test/test-defs.py
++++ b/test/test-defs.py
+@@ -1,4 +1,5 @@
+ #!/usr/bin/python3
++import contextlib
+ import os
+ import sys
+ import unittest
+@@ -9,13 +10,17 @@
+ '''Testing defs.py by mocking the libnvme package'''
+
+ def test_libnvme_version(self):
+- # For unknown reasons, this test does
+- # not work when run from GitHub Actions.
+- if not os.getenv('GITHUB_ACTIONS'):
+- from staslib import defs
++ # Ensure that we re-import staslib & staslib.defs if the current
Python
++ # process has them already imported.
++ with contextlib.suppress(KeyError):
++ sys.modules.pop('staslib.defs')
++ with contextlib.suppress(KeyError):
++ sys.modules.pop('staslib')
+
+- libnvme_ver = defs.LIBNVME_VERSION
+- self.assertEqual(libnvme_ver, '?.?')
++ from staslib import defs
++
++ libnvme_ver = defs.LIBNVME_VERSION
++ self.assertEqual(libnvme_ver, '?.?')
+
+ @classmethod
+ def setUpClass(cls): # called once before all the tests
diff -Nru
nvme-stas-2.3/debian/patches/fix-test-udev-failing-multiple-IPv6.patch
nvme-stas-2.3/debian/patches/fix-test-udev-failing-multiple-IPv6.patch
--- nvme-stas-2.3/debian/patches/fix-test-udev-failing-multiple-IPv6.patch
1970-01-01 01:00:00.000000000 +0100
+++ nvme-stas-2.3/debian/patches/fix-test-udev-failing-multiple-IPv6.patch
2023-11-21 09:29:41.000000000 +0100
@@ -0,0 +1,29 @@
+Description: Fix test-udev failing when multiple IPv6 addresses are used
+ test-udev was failing when an interface had more than one IPv6
+ addresses assigned. This was due to the test checking that the
+ number of assigned IPv6 addresses was exactly 1 (== 1) instead of
+ checking greater-equal to 1 (>= 1).
+Author: Martin Belanger <[email protected]>
+Origin: upstream,
https://github.com/linux-nvme/nvme-stas/commit/66b42bdd83bb6a83b30da3aed5fea9ed4da882f6
+Bug: https://github.com/linux-nvme/nvme-stas/issues/403
+Bug-Ubuntu: https://launchpad.net/bugs/2043792
+Bug-Debian: https://bugs.debian.org/1054533
+Last-Update: 2023-11-27
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+diff --git a/test/test-udev.py b/test/test-udev.py
+index be257d9..ba484e0 100755
+--- a/test/test-udev.py
++++ b/test/test-udev.py
+@@ -679,7 +679,7 @@ class Test(unittest.TestCase):
+ 'host-nqn': '',
+ }
+ )
+- match = len(ipv6_addrs) == 1 and iputil.get_ipaddress_obj(
++ match = len(ipv6_addrs) >= 1 and iputil.get_ipaddress_obj(
+ ipv6_addrs[0], ipv4_mapped_convert=True
+ ) == iputil.get_ipaddress_obj(tid.host_traddr,
ipv4_mapped_convert=True)
+ self.assertEqual(
+--
+2.40.1
+
diff -Nru nvme-stas-2.3/debian/patches/series
nvme-stas-2.3/debian/patches/series
--- nvme-stas-2.3/debian/patches/series 1970-01-01 01:00:00.000000000 +0100
+++ nvme-stas-2.3/debian/patches/series 2023-11-21 09:29:41.000000000 +0100
@@ -0,0 +1,2 @@
+fix-test-libnvme-version.patch
+fix-test-udev-failing-multiple-IPv6.patch
diff -Nru nvme-stas-2.3/debian/tests/control nvme-stas-2.3/debian/tests/control
--- nvme-stas-2.3/debian/tests/control 2023-09-25 10:22:09.000000000 +0200
+++ nvme-stas-2.3/debian/tests/control 2023-11-21 09:29:41.000000000 +0100
@@ -1,6 +1,7 @@
Test-Command: cp -r test "$AUTOPKGTEST_TMP" && cd "$AUTOPKGTEST_TMP/test" &&
rm test-avahi.py && python3 -m unittest -v test*.py
Depends:
iproute2,
+ nvme-cli, # Dependency added to get the /etc/nvme/host{nqn,id} files
created. See LP: #2043792
nvme-stas,
python3-pyfakefs,
Restrictions: allow-stderr