Message ID | 20251007-mathieu-ssh-fails-v1-2-a6affee3571b@bootlin.com |
---|---|
State | Accepted, archived |
Commit | 5bcc914cf5a193137cddc004f3b38b7b04af9ecb |
Headers | show |
Series | oeqa: target: ssh: log SSH errors during tests | expand |
On 7 Oct 2025, at 18:38, Mathieu Dubois-Briand via lists.openembedded.org <mathieu.dubois-briand=bootlin.com@lists.openembedded.org> wrote: > > Tests using SSH will fail when no SSH server is present on the target. > These tests are disabled in these cases, by being marked with a > dependency on ssh.SSHTest.test_ssh, which in turns has a dependency on > having either dropbear or openssh-sshd in the image. > > But setUpClass() and tearDownClass() functions are always executed, even > on tests failing the dependency checks, leading to unexpected failed > tests. Well that’s just silly. I wonder if OEHasPackage() works on the class scope too and does actually avoid doing the setup/teardown? However, this does demonstrate that doing non-trivial setup/teardown is a bad idea in test cases, and copying files to the target is definitely non-trivial. I suggest merging all of the logrotate tests and setup/teardown into a single test that uses finally: to cleanup, and just removing the teardown from the weston test. Cheers, Ross
diff --git a/meta/lib/oeqa/runtime/cases/logrotate.py b/meta/lib/oeqa/runtime/cases/logrotate.py index 6ad980cb6adc0cc1660989228442633db3a9827d..7cb43d98c56d73865838ed8418a6a88732840a28 100644 --- a/meta/lib/oeqa/runtime/cases/logrotate.py +++ b/meta/lib/oeqa/runtime/cases/logrotate.py @@ -15,12 +15,13 @@ class LogrotateTest(OERuntimeTestCase): @classmethod def setUpClass(cls): - cls.tc.target.run('cp /etc/logrotate.d/wtmp $HOME/wtmp.oeqabak') + 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') - cls.tc.target.run('rm -rf /var/log/logrotate_testfile && rm -rf /etc/logrotate.d/logrotate_testfile') + 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']) diff --git a/meta/lib/oeqa/runtime/cases/weston.py b/meta/lib/oeqa/runtime/cases/weston.py index ee4d336482e5e7b4e61625599d38ab2fbf09ace0..e2cecffe83536c9bfeaae62892bad832f75cb541 100644 --- a/meta/lib/oeqa/runtime/cases/weston.py +++ b/meta/lib/oeqa/runtime/cases/weston.py @@ -16,7 +16,7 @@ class WestonTest(OERuntimeTestCase): @classmethod def tearDownClass(cls): - cls.tc.target.run('rm %s' % cls.weston_log_file) + cls.tc.target.run('rm %s' % cls.weston_log_file, ignore_ssh_fails=True) @OETestDepends(['ssh.SSHTest.test_ssh']) @OEHasPackage(['weston'])
Tests using SSH will fail when no SSH server is present on the target. These tests are disabled in these cases, by being marked with a dependency on ssh.SSHTest.test_ssh, which in turns has a dependency on having either dropbear or openssh-sshd in the image. But setUpClass() and tearDownClass() functions are always executed, even on tests failing the dependency checks, leading to unexpected failed tests. Ignoring SSH errors in setup and tear down allows to avoid these test errors. Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> --- meta/lib/oeqa/runtime/cases/logrotate.py | 7 ++++--- meta/lib/oeqa/runtime/cases/weston.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-)