oeqa/runtime/systemd: skip unit enable/disable on read-only-rootfs

This doesn't work on read-only-rootfs:
    AssertionError: 1 != 0 : SYSTEMD_BUS_TIMEOUT=240s systemctl disable avahi-daemon.service
    Failed to disable unit: File /etc/systemd/system/multi-user.target.wants/avahi-daemon.service: Read-only file system

This patch does two things:
1) Decorate the existing test to be skipped if the rootfs is
   read-only
2) add a new test to be executed only if the rootfs is
   read-only. This new test remounts the rootfs read-write
   before continuing to execute the existing test, making
   sure to clean up correctly after itself (remount r/o
   again).

(From OE-Core rev: ec856301887b1139f93aa54d04bed9b842357b4f)

Signed-off-by: André Draszik <git@andred.net>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
André Draszik
2019-10-17 10:28:02 +01:00
committed by Richard Purdie
parent 568fd6ea47
commit ee9d2f4fcf

View File

@@ -9,7 +9,7 @@ from oeqa.runtime.case import OERuntimeTestCase
from oeqa.core.decorator.depends import OETestDepends from oeqa.core.decorator.depends import OETestDepends
from oeqa.core.decorator.data import skipIfDataVar, skipIfNotDataVar from oeqa.core.decorator.data import skipIfDataVar, skipIfNotDataVar
from oeqa.runtime.decorator.package import OEHasPackage from oeqa.runtime.decorator.package import OEHasPackage
from oeqa.core.decorator.data import skipIfNotFeature from oeqa.core.decorator.data import skipIfNotFeature, skipIfFeature
class SystemdTest(OERuntimeTestCase): class SystemdTest(OERuntimeTestCase):
@@ -114,12 +114,26 @@ class SystemdServiceTests(SystemdTest):
self.systemctl('is-active', 'avahi-daemon.service', verbose=True) self.systemctl('is-active', 'avahi-daemon.service', verbose=True)
@OETestDepends(['systemd.SystemdServiceTests.test_systemd_status']) @OETestDepends(['systemd.SystemdServiceTests.test_systemd_status'])
@skipIfFeature('read-only-rootfs',
'Test is only meant to run without read-only-rootfs in IMAGE_FEATURES')
def test_systemd_disable_enable(self): def test_systemd_disable_enable(self):
self.systemctl('disable', 'avahi-daemon.service') self.systemctl('disable', 'avahi-daemon.service')
self.systemctl('is-enabled', 'avahi-daemon.service', expected=1) self.systemctl('is-enabled', 'avahi-daemon.service', expected=1)
self.systemctl('enable', 'avahi-daemon.service') self.systemctl('enable', 'avahi-daemon.service')
self.systemctl('is-enabled', 'avahi-daemon.service') self.systemctl('is-enabled', 'avahi-daemon.service')
@OETestDepends(['systemd.SystemdServiceTests.test_systemd_status'])
@skipIfNotFeature('read-only-rootfs',
'Test is only meant to run with read-only-rootfs in IMAGE_FEATURES')
def test_systemd_disable_enable_ro(self):
status = self.target.run('mount -orw,remount /')[0]
self.assertTrue(status == 0, msg='Remounting / as r/w failed')
try:
self.test_systemd_disable_enable()
finally:
status = self.target.run('mount -oro,remount /')[0]
self.assertTrue(status == 0, msg='Remounting / as r/o failed')
class SystemdJournalTests(SystemdTest): class SystemdJournalTests(SystemdTest):
@OETestDepends(['systemd.SystemdBasicTests.test_systemd_basic']) @OETestDepends(['systemd.SystemdBasicTests.test_systemd_basic'])