On 10/07/2021 14:47:01+0200, Vyacheslav Yurkov wrote:
> Hi Alexandre,
> Thanks for the build.
> Seems like I forgot a space in _append :/
> 
> I'd like to address Alex request too to include a run-time test. Is there a
> way to update only this patch without resending the whole series?
> 

If you send a v2, of this one, I can queue it with the other ones,
please use --in-reply-to

> Thanks,
> Vyacheslav
> 
> On 10.07.2021 11:41, Alexandre Belloni wrote:
> > Hello,
> > 
> > On 09/07/2021 13:31:45+0200, Vyacheslav Yurkov wrote:
> > > Unit tests for overlayfs.bbclass
> > > 
> > I believe I properly applied the series but it fails with:
> > 
> > Parsing recipes...ERROR: 
> > /home/pokybuild/yocto-worker/oe-selftest-centos/build/build-st-1517413/meta-selftest/recipes-test/overlayfs/overlayfs-user.bb:
> >  A recipe uses overlayfs class but there is no OVERLAYFS_MOUNT_POINT set in 
> > your MACHINE configuration
> > 
> > See 
> > https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/2290/steps/14/logs/stdio
> > 
> > > Signed-off-by: Vyacheslav Yurkov <uvv.m...@gmail.com>
> > > ---
> > >   meta/lib/oeqa/selftest/cases/overlayfs.py | 126 ++++++++++++++++++++++
> > >   1 file changed, 126 insertions(+)
> > >   create mode 100644 meta/lib/oeqa/selftest/cases/overlayfs.py
> > > 
> > > diff --git a/meta/lib/oeqa/selftest/cases/overlayfs.py 
> > > b/meta/lib/oeqa/selftest/cases/overlayfs.py
> > > new file mode 100644
> > > index 0000000000..74bf1c4167
> > > --- /dev/null
> > > +++ b/meta/lib/oeqa/selftest/cases/overlayfs.py
> > > @@ -0,0 +1,126 @@
> > > +#
> > > +# SPDX-License-Identifier: MIT
> > > +#
> > > +
> > > +from oeqa.selftest.case import OESelftestTestCase
> > > +from oeqa.utils.commands import runCmd, bitbake, get_bb_var, runqemu
> > > +
> > > +class OverlayFSTests(OESelftestTestCase):
> > > +    """Overlayfs class usage tests"""
> > > +
> > > +    def getline(self, res, line):
> > > +        for l in res.output.split('\n'):
> > > +            if line in l:
> > > +                return l
> > > +
> > > +    def test_distro_features_missing(self):
> > > +        """
> > > +        Summary:   Check that required DISTRO_FEATURES are set
> > > +        Expected:  Fail when either systemd or overlayfs are not in 
> > > DISTRO_FEATURES
> > > +        Author:    Vyacheslav Yurkov <uvv.m...@gmail.com>
> > > +        """
> > > +
> > > +        config = """
> > > +OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
> > > +IMAGE_INSTALL_append = "overlayfs-user"
> > > +"""
> > > +        self.write_config(config)
> > > +        res = bitbake('core-image-minimal', ignore_status=True)
> > > +        line = self.getline(res, "overlayfs-user was skipped: missing 
> > > required distro features")
> > > +        self.assertTrue("overlayfs" in res.output, msg=res.output)
> > > +        self.assertTrue("systemd" in res.output, msg=res.output)
> > > +        self.assertTrue("ERROR: Required build target 
> > > 'core-image-minimal' has no buildable providers." in res.output, 
> > > msg=res.output)
> > > +
> > > +    def test_not_all_units_installed(self):
> > > +        """
> > > +        Summary:   Test QA check that we have required mount units in 
> > > the image
> > > +        Expected:  Fail because mount unit for overlay partition is not 
> > > installed
> > > +        Author:    Vyacheslav Yurkov <uvv.m...@gmail.com>
> > > +        """
> > > +
> > > +        config = """
> > > +OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
> > > +IMAGE_INSTALL_append = "overlayfs-user"
> > > +DISTRO_FEATURES += "systemd overlayfs"
> > > +"""
> > > +        self.write_config(config)
> > > +        res = bitbake('core-image-minimal', ignore_status=True)
> > > +        line = self.getline(res, "Unit name mnt-overlay.mount not found 
> > > in systemd unit directories")
> > > +        self.assertTrue(line and line.startswith("WARNING:"), 
> > > msg=res.output)
> > > +        line = self.getline(res, "Not all mount units are installed by 
> > > the BSP")
> > > +        self.assertTrue(line and line.startswith("ERROR:"), 
> > > msg=res.output)
> > > +
> > > +    def test_mount_unit_not_set(self):
> > > +        """
> > > +        Summary:   Test whether mount unit was set properly
> > > +        Expected:  Fail because mount unit was not set
> > > +        Author:    Vyacheslav Yurkov <uvv.m...@gmail.com>
> > > +        """
> > > +
> > > +        config = """
> > > +IMAGE_INSTALL_append = "overlayfs-user"
> > > +DISTRO_FEATURES += "systemd overlayfs"
> > > +"""
> > > +        self.write_config(config)
> > > +        res = bitbake('core-image-minimal', ignore_status=True)
> > > +        line = self.getline(res, "A recipe uses overlayfs class but 
> > > there is no OVERLAYFS_MOUNT_POINT set in your MACHINE configuration")
> > > +        self.assertTrue(line and line.startswith("Parsing 
> > > recipes...ERROR:"), msg=res.output)
> > > +
> > > +    def test_wrong_mount_unit_set(self):
> > > +        """
> > > +        Summary:   Test whether mount unit was set properly
> > > +        Expected:  Fail because not the correct flag used for mount unit
> > > +        Author:    Vyacheslav Yurkov <uvv.m...@gmail.com>
> > > +        """
> > > +
> > > +        config = """
> > > +OVERLAYFS_MOUNT_POINT[usr-share-overlay] = "/usr/share/overlay"
> > > +IMAGE_INSTALL_append = "overlayfs-user"
> > > +DISTRO_FEATURES += "systemd overlayfs"
> > > +"""
> > > +        self.write_config(config)
> > > +        res = bitbake('core-image-minimal', ignore_status=True)
> > > +        line = self.getline(res, "Missing required mount point for 
> > > OVERLAYFS_MOUNT_POINT[mnt-overlay] in your MACHINE configuration")
> > > +        self.assertTrue(line and line.startswith("Parsing 
> > > recipes...ERROR:"), msg=res.output)
> > > +
> > > +    def test_correct_image(self):
> > > +        """
> > > +        Summary:   Check that we can create an image when all parameters 
> > > are
> > > +                   set correctly
> > > +        Expected:  Image is created successfully
> > > +        Author:    Vyacheslav Yurkov <uvv.m...@gmail.com>
> > > +        """
> > > +
> > > +        config = """
> > > +OVERLAYFS_MOUNT_POINT[mnt-overlay] = "/mnt/overlay"
> > > +IMAGE_INSTALL_append = "overlayfs-user systemd-machine-units"
> > > +DISTRO_FEATURES += "systemd overlayfs"
> > > +"""
> > > +
> > > +        systemd_machine_unit_append = """
> > > +SYSTEMD_SERVICE_${PN} += " \
> > > +    mnt-overlay.mount \
> > > +"
> > > +
> > > +do_install() {
> > > +    install -d ${D}${systemd_unitdir}/system
> > > +    cat <<EOT > ${D}${systemd_unitdir}/system/mnt-overlay.mount
> > > +[Unit]
> > > +Description=Tmpfs directory
> > > +DefaultDependencies=no
> > > +
> > > +[Mount]
> > > +What=tmpfs
> > > +Where=/mnt/overlay
> > > +Type=tmpfs
> > > +Options=mode=1777,strictatime,nosuid,nodev
> > > +
> > > +[Install]
> > > +WantedBy=multi-user.target
> > > +EOT
> > > +}
> > > +
> > > +"""
> > > +        self.write_config(config)
> > > +        self.write_recipeinc('systemd-machine-units', 
> > > systemd_machine_unit_append)
> > > +        bitbake('core-image-minimal')
> > > -- 
> > > 2.28.0
> > > 

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#153717): 
https://lists.openembedded.org/g/openembedded-core/message/153717
Mute This Topic: https://lists.openembedded.org/mt/84089165/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to