diff mbox series

[2/3] oeqa: runtime: logrotate: Remove setup and tear down methods

Message ID 20251013-mathieu-test-clean-setup-v1-2-6cea9936d79b@bootlin.com
State New
Headers show
Series oeqa: runtime: Clean setup/tear down function on weston and logrotate | expand

Commit Message

Mathieu Dubois-Briand Oct. 13, 2025, 11:06 a.m. UTC
Setup and tear down methods are executed even when the tests are disabled.
This lead to SSH being used to run commands on the target, and as it
might fail when no SSH server is present, we had to use
ignore_ssh_fails=True here.

Instead, run cleanup tasks in tests themselves and remove the tear down
method.

Also, the wtmp configuration file is not modified since the test was
modified a few years ago: there is no need to backup and restore it.

Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
---
 meta/lib/oeqa/runtime/cases/logrotate.py | 100 ++++++++++++++++---------------
 1 file changed, 52 insertions(+), 48 deletions(-)
diff mbox series

Patch

diff --git a/meta/lib/oeqa/runtime/cases/logrotate.py b/meta/lib/oeqa/runtime/cases/logrotate.py
index 0d4b9ac60baa..4b9915b99ba5 100644
--- a/meta/lib/oeqa/runtime/cases/logrotate.py
+++ b/meta/lib/oeqa/runtime/cases/logrotate.py
@@ -12,64 +12,68 @@  from oeqa.core.decorator.depends import OETestDepends
 from oeqa.runtime.decorator.package import OEHasPackage
 
 class LogrotateTest(OERuntimeTestCase):
-
-    @classmethod
-    def setUpClass(cls):
-        cls.tc.target.run('cp /etc/logrotate.d/wtmp $HOME/wtmp.oeqabak',
-                          ignore_ssh_fails=True)
-
-    @classmethod
-    def tearDownClass(cls):
-        cls.tc.target.run('mv -f $HOME/wtmp.oeqabak /etc/logrotate.d/wtmp && rm -rf /var/log/logrotate_dir', ignore_ssh_fails=True)
-        cls.tc.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile', ignore_ssh_fails=True)
-
     @OETestDepends(['ssh.SSHTest.test_ssh'])
     @OEHasPackage(['logrotate'])
     def test_logrotate_wtmp(self):
-        # /var/log/wtmp may not always exist initially, so use touch to ensure it is present
-        status, output = self.target.run('touch /var/log/wtmp')
-        msg = ('Could not create/update /var/log/wtmp with touch')
-        self.assertEqual(status, 0, msg = msg)
+        try:
+            # /var/log/wtmp may not always exist initially, so use touch to ensure it is present
+            status, output = self.target.run('touch /var/log/wtmp')
+            msg = ('Could not create/update /var/log/wtmp with touch')
+            self.assertEqual(status, 0, msg = msg)
 
-        # Create a folder to store rotated file and add the corresponding
-        # configuration option
-        status, output = self.target.run('mkdir /var/log/logrotate_dir')
-        msg = ('Could not create logrotate_dir. Output: %s' % output)
-        self.assertEqual(status, 0, msg = msg)
+            # Create a folder to store rotated file and add the corresponding
+            # configuration option
+            status, output = self.target.run('mkdir /var/log/logrotate_dir')
+            msg = ('Could not create logrotate_dir. Output: %s' % output)
+            self.assertEqual(status, 0, msg = msg)
 
-        status, output = self.target.run('echo "create \n olddir /var/log/logrotate_dir \n include /etc/logrotate.d/wtmp" > /tmp/logrotate-test.conf')
-        msg = ('Could not write to /tmp/logrotate-test.conf')
-        self.assertEqual(status, 0, msg = msg)
+            status, output = self.target.run('echo "create \n olddir /var/log/logrotate_dir \n include /etc/logrotate.d/wtmp" > /tmp/logrotate-test.conf')
+            msg = ('Could not write to /tmp/logrotate-test.conf')
+            self.assertEqual(status, 0, msg = msg)
 
-        # Call logrotate -f to force the rotation immediately
-        # If logrotate fails to rotate the log, view the verbose output of logrotate to see what prevented it
-        _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test.conf')
-        status, _ = self.target.run('find /var/log/logrotate_dir -type f | grep wtmp.1')
-        msg = ("logrotate did not successfully rotate the wtmp log. Output from logrotate -vf: \n%s" % (logrotate_output))
-        self.assertEqual(status, 0, msg = msg)
+            # Call logrotate -f to force the rotation immediately
+            # If logrotate fails to rotate the log, view the verbose output of logrotate to see what prevented it
+            _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test.conf')
+            status, _ = self.target.run('find /var/log/logrotate_dir -type f | grep wtmp.1')
+            msg = ("logrotate did not successfully rotate the wtmp log. Output from logrotate -vf: \n%s" % (logrotate_output))
+            self.assertEqual(status, 0, msg = msg)
+
+        finally:
+            # Clean files created in the test
+            self.target.run('rm -rf /var/log/logrotate_dir')
 
     @OETestDepends(['logrotate.LogrotateTest.test_logrotate_wtmp'])
     def test_logrotate_newlog(self):
-        status, output = self.target.run('echo "oeqa logrotate test file" > /var/log/logrotate_testfile')
-        msg = ('Could not create logrotate test file in /var/log')
-        self.assertEqual(status, 0, msg = msg)
+        try:
+            status, output = self.target.run('echo "oeqa logrotate test file" > /var/log/logrotate_testfile')
+            msg = ('Could not create logrotate test file in /var/log')
+            self.assertEqual(status, 0, msg = msg)
+
+            # Create a new configuration file dedicated to a /var/log/logrotate_testfile
+            status, output = self.target.run('echo "/var/log/logrotate_testfile {\n missingok \n monthly \n rotate 1}" > /etc/logrotate.d/logrotate_testfile')
+            msg = ('Could not write to /etc/logrotate.d/logrotate_testfile')
+            self.assertEqual(status, 0, msg = msg)
+
+            status, output = self.target.run('mkdir /var/log/logrotate_dir')
+            msg = ('Could not create logrotate_dir. Output: %s' % output)
+            self.assertEqual(status, 0, msg = msg)
 
-        # Create a new configuration file dedicated to a /var/log/logrotate_testfile
-        status, output = self.target.run('echo "/var/log/logrotate_testfile {\n missingok \n monthly \n rotate 1}" > /etc/logrotate.d/logrotate_testfile')
-        msg = ('Could not write to /etc/logrotate.d/logrotate_testfile')
-        self.assertEqual(status, 0, msg = msg)
+            status, output = self.target.run('echo "create \n olddir /var/log/logrotate_dir \n include /etc/logrotate.d/logrotate_testfile" > /tmp/logrotate-test2.conf')
+            msg = ('Could not write to /tmp/logrotate_test2.conf')
+            self.assertEqual(status, 0, msg = msg)
 
-        status, output = self.target.run('echo "create \n olddir /var/log/logrotate_dir \n include /etc/logrotate.d/logrotate_testfile" > /tmp/logrotate-test2.conf')
-        msg = ('Could not write to /tmp/logrotate_test2.conf')
-        self.assertEqual(status, 0, msg = msg)
+            status, output = self.target.run('find /var/log/logrotate_dir -type f | grep logrotate_testfile.1')
+            msg = ('A rotated log for logrotate_testfile is already present in logrotate_dir')
+            self.assertEqual(status, 1, msg = msg)
 
-        status, output = self.target.run('find /var/log/logrotate_dir -type f | grep logrotate_testfile.1')
-        msg = ('A rotated log for logrotate_testfile is already present in logrotate_dir')
-        self.assertEqual(status, 1, msg = msg)
+            # Call logrotate -f to force the rotation immediately
+            # If logrotate fails to rotate the log, view the verbose output of logrotate instead of just listing the files in olddir
+            _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test2.conf')
+            status, _ = self.target.run('find /var/log/logrotate_dir -type f | grep logrotate_testfile.1')
+            msg = ('logrotate did not successfully rotate the logrotate_test log. Output from logrotate -vf: \n%s' % (logrotate_output))
+            self.assertEqual(status, 0, msg = msg)
 
-        # Call logrotate -f to force the rotation immediately
-        # If logrotate fails to rotate the log, view the verbose output of logrotate instead of just listing the files in olddir
-        _, logrotate_output = self.target.run('logrotate -vf /tmp/logrotate-test2.conf')
-        status, _ = self.target.run('find /var/log/logrotate_dir -type f | grep logrotate_testfile.1')
-        msg = ('logrotate did not successfully rotate the logrotate_test log. Output from logrotate -vf: \n%s' % (logrotate_output))
-        self.assertEqual(status, 0, msg = msg)
+        finally:
+            # Clean files created in the test
+            self.target.run('rm -rf /var/log/logrotate_dir')
+            self.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile')